67 lines
2.3 KiB
Markdown
67 lines
2.3 KiB
Markdown
# Deployment Commands
|
|
|
|
Immutable release deployment for [REDACTED-NAME] API gateway on VPS ([REDACTED-IP]).
|
|
|
|
## Release ID convention
|
|
|
|
```bash
|
|
RELEASE_ID=$(date +%Y%m%d_%H%M%S)
|
|
# Example: 20260804_142027
|
|
```
|
|
|
|
## Deploy workflow
|
|
|
|
```bash
|
|
set -eu
|
|
RELEASE_ID=20260804_142027
|
|
SHA=$(sha256sum gateway.py | cut -d' ' -f1)
|
|
|
|
ssh root@host "mkdir -p /opt/apioid-echo/releases/${RELEASE_ID}"
|
|
scp gateway.py root@host:/opt/apioid-echo/releases/${RELEASE_ID}/gateway.py
|
|
scp [REDACTED-NAME].nginx.conf root@host:/opt/apioid-echo/releases/${RELEASE_ID}/
|
|
|
|
ssh root@host "
|
|
R='${RELEASE_ID}'
|
|
# backup
|
|
cp /opt/apioid-echo/releases/current/gateway.py /var/backups/apioid-echo/gateway.before-\${R}.py
|
|
cp /etc/nginx/sites-available/[REDACTED-NAME] /var/backups/apioid-echo/nginx.before-\${R}.conf
|
|
# deploy
|
|
ln -sfn /opt/apioid-echo/releases/\${R} /opt/apioid-echo/releases/current
|
|
chown root:root /opt/apioid-echo/releases/\${R}/*
|
|
chmod 0644 /opt/apioid-echo/releases/\${R}/gateway.py
|
|
cp /opt/apioid-echo/releases/\${R}/[REDACTED-NAME].nginx.conf /etc/nginx/sites-available/[REDACTED-NAME]
|
|
nginx -t && systemctl reload nginx
|
|
systemctl restart apioid-echo-gateway.service
|
|
sleep 1.5
|
|
systemctl is-active apioid-echo-gateway.service
|
|
systemctl show -p NRestarts apioid-echo-gateway.service
|
|
"
|
|
```
|
|
|
|
## Live smoke
|
|
|
|
```bash
|
|
ssh root@host "
|
|
KEY='rfb_KEY_HERE'
|
|
# health
|
|
curl -sk --noproxy '*' --resolve api.[REDACTED-NAME].loc.cc:443:127.0.0.1 https://api.[REDACTED-NAME].loc.cc/health
|
|
# HTTP/2 + chat
|
|
curl -skI --resolve api.[REDACTED-NAME].loc.cc:443:127.0.0.1 https://api.[REDACTED-NAME].loc.cc/health 2>&1 | head -1
|
|
time curl -sk -H \"Authorization: Bearer \${KEY}\" \
|
|
-H 'Content-Type: application/json' \
|
|
-d '{\"model\":\"rb-902d95ce37cee7204c89\",\"messages\":[{\"role\":\"user\",\"content\":\"hi\"}],\"max_tokens\":3}' \
|
|
https://api.[REDACTED-NAME].loc.cc/v1/chat/completions
|
|
"
|
|
```
|
|
|
|
## VPS paths
|
|
|
|
| Path | Purpose |
|
|
|------|---------|
|
|
| `/opt/apioid-echo/releases/current/` | Active release (symlink) |
|
|
| `/opt/apioid-echo/releases/<TS>/` | Immutable release directory |
|
|
| `/etc/apioid-echo/gateway.env` | Env (keys, MODEL_ALIAS_SECRET), chmod 600 |
|
|
| `/etc/nginx/sites-available/[REDACTED-NAME]` | Nginx config |
|
|
| `/var/backups/apioid-echo/` | Pre-deploy backups |
|
|
| `/etc/systemd/system/apioid-echo-gateway.service` | systemd unit |
|