cd /home/chartmastersapi/public_html/api-spotify-graphql-pypy
pip3 install --user -r requirements.txt
Verification checklist (fast, deterministic)
Run these exact checks:
python3 -c "import aiohttp, aiocache, pyotp, ujson, yaml; print('deps OK')"
Then:
/home/chartmastersapi/.local/bin/gunicorn --version
Then:
/home/chartmastersapi/.local/bin/gunicorn index:create_app \
--bind 0.0.0.0:8443 \
--workers 3 \
--worker-class aiohttp.GunicornWebWorker
If it boots and prints:
Booting worker
New acces token expires at ...
The environment is correct.
4) Final systemd service (reference version)
Once and for all, this is the correct unit file for your API.
/etc/systemd/system/chartmasters-api.service
[Unit]
Description=ChartMasters Spotify GraphQL API
After=network.target
[Service]
User=chartmastersapi
Group=chartmastersapi
WorkingDirectory=/home/chartmastersapi/public_html/api-spotify-graphql-pypy
ExecStart=/home/chartmastersapi/.local/bin/gunicorn \
index:create_app \
--bind 0.0.0.0:8443 \
--workers 5 \
--worker-class aiohttp.GunicornWebWorker
Restart=always
RestartSec=5
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
Then:
sudo systemctl daemon-reload
sudo systemctl enable chartmasters-api
sudo systemctl start chartmasters-api