在 Ubuntu 16.04 上连接 uWSGI 与 Django 和 nginx 一起工作

在 Ubuntu 16.04 上连接 uWSGI 与 Django 和 nginx 一起工作

我正在尝试关注本教程建立uWSGIDjangonginxUbuntu16.04

一切都运行正常,直到最后一步(哦讽刺......)我尝试执行以下命令:

sudo service uwsgi start

如果失败并出现以下错误:

无法启动 uwsgi.service:未找到单元 uwsgi.service。

其他人似乎也遇到了类似的错误:

无法启动 uwsgi.service:单元 uwsgi.service 无法加载:没有此文件或目录。

这个问题似乎与 Ubuntu 的版本有关。虽然该教程针对的是 Ubuntu 14.04,但它似乎不适用于较新的版本,因为在 15 版中,Ubuntu 从upstartinit 守护进程切换到了systemdinit 守护进程

我如何systemd启动 uWSGI 以便它与 nginx 和 Django 一起工作?

答案1

第一的需要修改的是/etc/uwsgi/sites/firstsite.ini文件。唯一需要做的更改是将权限从 替换664666。脚本看起来如下:

[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

相关内容