[supervisord] logfile=/data/log/supervisord.log logfile_maxbytes=10MB logfile_backups=10 loglevel=info pidfile=/tmp/supervisord.pid nodaemon=true childlogdir=/data/log/ [inet_http_server] port=127.0.0.1:9005 [rpcinterface:supervisor] supervisor.rpcinterface_factory=supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=http://127.0.0.1:9005 [program:caddy] command=caddy run --config /app/deploy/caddy/Caddyfile directory=/app/ user=server ; server 是 --no-create-home 的系统账号,HOME 不存在时 Caddy 找不到数据目录会启动失败。 environment=HOME="/tmp",XDG_DATA_HOME="/tmp",XDG_CONFIG_HOME="/tmp" stdout_logfile=/data/log/caddy.log stderr_logfile=/data/log/caddy.log autostart=true autorestart=true startsecs=5 stopwaitsecs = 5 killasgroup=true [program:gunicorn] command=gunicorn oj.asgi:application -k uvicorn.workers.UvicornWorker --user server --group spj --bind 127.0.0.1:8080 --workers %(ENV_MAX_WORKER_NUM)s --max-requests-jitter 10000 --max-requests 1000000 --keep-alive 32 directory=/app/ stdout_logfile=/data/log/gunicorn.log stderr_logfile=/data/log/gunicorn.log autostart=true autorestart=true startsecs=5 stopwaitsecs = 5 killasgroup=true [program:dramatiq] command=python3 manage.py rundramatiq --processes %(ENV_MAX_WORKER_NUM)s --threads 4 directory=/app/ user=server stdout_logfile=/data/log/dramatiq.log stderr_logfile=/data/log/dramatiq.log autostart=true autorestart=true startsecs=5 stopwaitsecs = 5 killasgroup=true