Ubuntu

在 Ubuntu 16.04 上連接 uWSGI 以使用 Django 和 nginx

  • August 30, 2016

我正在嘗試按照本教程uWSGI使用Django和設置進行nginx設置Ubuntu16.04

一切正常,直到我嘗試執行此命令的最後一步(哦,諷刺的是……):

sudo service uwsgi start

如果失敗並出現以下錯誤:

啟動 uwsgi.service 失敗:未找到單元 uwsgi.service。

其他人似乎得到了類似的錯誤:

uwsgi.service 啟動失敗:單元 uwsgi.service 載入失敗:沒有這樣的文件或目錄。

該問題似乎與 Ubuntu 的版本有關。雖然該教程針對的是 Ubuntu 14.04,但它似乎不適用於較新的版本,因為在版本 15 中,Ubuntu 從upstartinit daemon 切換到systemdinit daemon

如何使用systemd啟動 uWSGI 使其與 nginx 和 Django 一起使用?

需要的第一個修改是**/etc/uwsgi/sites/firstsite.ini文件。唯一需要的更改是將權限從664to替換為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 初始化系統的狀態

sudo systemctl daemon-reload

為了啟動腳本,您需要執行以下命令:

sudo systemctl start uwsgi

為了uWSGI在重新啟動時開始,您還需要:

sudo systemctl enable uwsgi

您可以使用以下方法檢查其狀態:

systemctl status uwsgi

一些進一步的細節可以在這裡找到。

引用自:https://serverfault.com/questions/775965