我有以下/etc/init/uwsgi.conf
:
description "uWSGI"
start on runlevel [2345]
stop on runlevel [06]
respawn
env UWSGI=/var/www/my_project/venv/bin/uwsgi
env LOGTO=/var/log/uwsgi/emperor.log
exec $UWSGI --master --emperor /etc/uwsgi/vassals --die-on-term --uid www-data --gid www-data --logto $LOGTO
据我所知,这是最佳做法here
我也有/etc/uwsgi/vassals/my_project_uwsgi.ini
:
[uwsgi]
#application's base folder
base = /var/www/my_project
#python module to import
app = server
module = %(app)
home = %(base)/venv
pythonpath = %(base)
#socket file's location
socket = /var/www/my_project/%n.sock
#permissions for the socket file
chmod-socket = 666
callable = app
#location of log files
logto = /var/log/uwsgi/%n.log
processes = 10
现在,是不是uWSGI在启动时没有被调用,或者整体配置是否有问题? (uWSGI配置,nginx配置,我的app逻辑,文件权限等?)
我认为init脚本根本就没有运行。我认为这是因为当我手动运行init脚本时,即# /var/www/my_project/venv/bin/uwsgi --master --emperor /etc/uwsgi/vassals --die-on-term --uid www-data --gid www-data --logto /var/log/uwsgi/emperor.log
然后一切正常。另一方面,当我重启机器# reboot
时,似乎什么都没发生。 uWSGI在重启后没有运行,更重要的是,NOTHING写在/var/log/uwsgi/emperor.log
上。根据我对uWSGI的经验,如果您遇到配置错误,仍然会向emperor.log
写入一些内容。因此,我得出结论,/etc/init/uwsgi.conf
并非在启动时运行。
我如何检查并修复它?
编辑:更新。试过sudo apt install upstart
。另外this说新贵需要inotify来检测/etc/init
中文件的变化,所以我也做了sudo apt install inotify-tools
。但是我的脚本仍然没有在启动时运行。