我正在尝试关注本教程建立uWSGI
和Django
和nginx
在Ubuntu
16.04
。
一切都运行正常,直到最后一步(哦讽刺......)我尝试执行以下命令:
sudo service uwsgi start
如果失败并出现以下错误:
无法启动 uwsgi.service:未找到单元 uwsgi.service。
其他人似乎也遇到了类似的错误:
无法启动 uwsgi.service:单元 uwsgi.service 无法加载:没有此文件或目录。
这个问题似乎与 Ubuntu 的版本有关。虽然该教程针对的是 Ubuntu 14.04,但它似乎不适用于较新的版本,因为在 15 版中,Ubuntu 从upstart
init 守护进程切换到了systemd
init 守护进程。
我如何systemd
启动 uWSGI 以便它与 nginx 和 Django 一起工作?
答案1
这第一的需要修改的是/etc/uwsgi/sites/firstsite.ini
文件。唯一需要做的更改是将权限从 替换664
为666
。脚本看起来如下:
[uwsgi]
project = firstsite
base = /home/user
chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application
master = true
processes = 5
socket = %(base)/%(project)/%(project).sock
chmod-socket = 666
vacuum = true
第二,因为我们使用的是systemd
而不是upstart
,所以以下文件是不需要并且可以删除:/etc/init/uwsgi.conf
第三systemd
,我们在/etc/systemd/system/uwsgi.service
:
[Unit]
Description=uWSGI Emperor service
After=syslog.target
[Service]
ExecStart=/usr/local/bin/uwsgi --emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
使用这个新的 uWSGI 服务刷新 systemd init 系统的状态
sudo systemctl daemon-reload
为了启动脚本,您需要运行以下命令:
sudo systemctl start uwsgi
为了uWSGI
在重启时启动,您还需要:
sudo systemctl enable uwsgi
您可以使用以下命令检查其状态:
systemctl status uwsgi
更多详细信息请参见这里。
答案2
为了解决这个错误:sudo systemctl daemon-reload
对于新创建的uwsgi.service要加载的文件。
要使服务在每次重启时启动:sudo systemctl enable uwsgi
。