nginx、uwsgi开机自启问题:自定义conf文件未执行原因咨询
首先得指出你配置里最显眼的问题:respawn和exec指令写在了同一行,这不符合Upstart的语法规则——每个指令必须单独占一行,这大概率是配置失效的核心原因之一。
下面我们一步步拆解排查方向:
1. 先修复Upstart配置的语法错误
你的/etc/init/uwsgi.conf应该调整成这样:
# simple uWSGI script description "uwsgi tiny instance" start on runlevel [2345] stop on runlevel [06] respawn exec uwsgi --ini /home/iiits/Mahimusic/mahimusic.ini
注意respawn单独一行,exec单独一行,Upstart对指令格式和换行的要求很严格。
2. 给uWSGI使用绝对路径
系统开机时的PATH环境变量和你登录后的环境不一样,直接写uwsgi可能找不到可执行文件。先手动执行which uwsgi拿到绝对路径(比如/usr/local/bin/uwsgi),然后把exec行改成:
exec /usr/local/bin/uwsgi --ini /home/iiits/Mahimusic/mahimusic.ini
3. 添加日志输出,方便定位问题
Upstart默认不会把启动日志放到易查看的位置,建议在配置里加日志相关指令:
# 添加这两行,日志会存在/var/log/uwsgi/目录下 console log logdir /var/log/uwsgi
记得先创建日志目录并设置对应权限:
sudo mkdir /var/log/uwsgi sudo chown iiits:iiits /var/log/uwsgi # 换成你运行uWSGI的用户
4. 手动测试服务启动,验证配置
先跳过开机启动,手动启动服务看看有没有报错:
sudo start uwsgi
如果启动失败,执行status uwsgi查看状态信息,或者去刚才配置的日志目录看具体错误。
5. 确认uWSGI配置文件本身没问题
先抛开Upstart,直接手动运行uWSGI指令,验证你的ini文件是否正常:
uwsgi --ini /home/iiits/Mahimusic/mahimusic.ini
如果这一步运行失败,说明是ini文件的问题(比如端口被占用、路径不存在、权限不足等),先修复ini文件的问题,再回到Upstart配置。
6. 检查文件与权限
确保运行uWSGI的用户(如果ini里指定了uid/gid)对/home/iiits/Mahimusic/目录和ini文件有读写权限;如果uWSGI要绑定80/443这类特权端口,要么用root启动,要么给uWSGI设置对应的capabilities权限。
按照这些步骤排查,应该能快速找到问题所在。
内容的提问来源于stack exchange,提问作者user4016337

