当前位置: 首页>>技术教程>>正文


连线uWSGI以在Ubuntu 16.04上使用Django和Nginx

, , , ,

问题描述

我正在尝试遵循this tutorial在Ubuntu16.04上使用Django和nginx设置uWSGI。

一切正常,直到我尝试执行此命令的最后一步(哦,具有讽刺意味的…):

sudo service uwsgi start

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

Failed to start uwsgi.service: Unit uwsgi.service not found.

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

Failed to start uwsgi.service: Unit uwsgi.service failed to load: No such file or directory.

该问题似乎与Ubuntu版本有关。虽然该教程针对的是Ubuntu 14.04,但它似乎不适用于较新的版本,因为在版本15中,Ubuntu从upstart初始化守护程序切换到了systemd初始化守护程序。

如何使用systemd启动uWSGI,使其与nginx和Django兼容?

最佳方法

所需的第一个修改是对/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

第三,我们在/etc/systemd/system/uwsgi.service处创建以下systemd脚本:

[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初始化系统的状态

sudo systemctl daemon-reload

为了启动脚本,您需要运行以下命令:

sudo systemctl start uwsgi

为了在重新启动时启动uWSGI,您还需要:

sudo systemctl enable uwsgi

您可以使用以下方法检查其状态:

systemctl status uwsgi

可以找到更多详细信息here

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10054.html,未经允许,请勿转载。