我和Supervisord一起经营着Nginx,Gunicorn。在Supervisord启动后,它创建了gunicorn.sock
文件,其中包含用户和组my_user:my_user
。我需要Nginx能够连接到套接字文件gunicorn.sock
有没有任何正确的方法来设置套接字文件用户和组到my_user:nginx
?
我试图将此设置设置为[myprogram:program]
,但它不起作用:
socket_owner=my_user:nginx
chown=my_user:nginx
我的supervisord.conf程序:
[myprogram:program]
command = /var/www/project/virtual_env/bin/gunicorn -k gevent --worker-connections 1001 --bind=unix:gunicorn.sock -m 007 wsgi:application
directory = /var/www/project/
autostart=true
autorestart=unexpected
也许你可以将Gunicorn作为Nginx运行的同一用户运行?然后创建的套接字将具有必要的所有权。当然,这可能需要您调整应用程序目录的权限。
主管有一个user
指令,可用于此目的。例如,如果Nginx作为www-data
用户运行,则可以使用此Supervisor配置。
[myprogram:program]
command = /var/www/project/virtual_env/bin/gunicorn -k gevent --worker-connections 1001 --bind=unix:gunicorn.sock -m 007 wsgi:application
directory = /var/www/project/
user = www-data
autostart=true
autorestart=unexpected
这会产生以下所有权和权限(生成的组取决于用户帐户的配置)。
# ls -lh gunicorn.sock
srwxrwx--- 1 www-data www-data 0 Dec 24 22:43 gunicorn.sock
与Debian Stretch上的Nginx,Gunicorn和Django相似的东西对我有用。