Ubuntu
在 Ubuntu 16.04 上連接 uWSGI 以使用 Django 和 nginx
我正在嘗試按照本教程
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 daemon 切換到systemd
init daemon。如何使用
systemd
啟動 uWSGI 使其與 nginx 和 Django 一起使用?
需要的第一個修改是**
/etc/uwsgi/sites/firstsite.ini
文件。唯一需要的更改是將權限從664
to替換為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
一些進一步的細節可以在這裡找到。