參考自強學堂:https://code.ziqiangxuetang.com/django/django-nginx-deploy.html
1
|
例子中zqxt項目
|
安裝 supervisor 軟件包
|
生成 supervisor 默認配置文件,比如我們放在 /etc/supervisord.conf 路徑中:
|
打開 supervisor.conf 在最底部添加(每一行前面不要有空格,防止報錯):
|
command 中寫上對應的命令,這樣,就可以用 supervisor 來管理了。
啟動 supervisor
(
sudo
) supervisord -c
/etc/supervisord
.conf
|
重啟 zqxt 程序(項目):
(
sudo
) supervisorctl -c
/etc/supervisord
.conf restart zqxt
|
啟動,停止,或重啟 supervisor 管理的某個程序 或 所有程序:
(
sudo
) supervisorctl -c
/etc/supervisord
.conf [start|stop|restart] [program-name|all]
|
以 uwsgi 為例,上面這樣使用一行命令太長了,我們使用 ini 配置文件來搞定,比如項目在 /home/tu/zqxt 這個位置,
在其中新建一個 uwsgi.ini 全路徑為 /home/tu/zqxt/uwsgi.ini
[uwsgi]
socket =
/home/tu/zqxt/zqxt
.sock
chdir =
/home/tu/zqxt
wsgi-
file
= zqxt
/wsgi
.py
touch
-reload =
/home/tu/zqxt/reload
processes = 2
threads = 4
chmod
-socket = 664
chown
-socket = tu:www-data
vacuum =
true
|
注意上面的 /home/tu/zqxt/zqxt.sock ,一會兒我們把它和 nginx 關聯起來。
在項目上新建一個空白的 reload 文件,只要 touch 一下這個文件(touch reload) 項目就會重啟。
注意:不建議把 sock 文件放在 /tmp 下,比如 /tmp/xxx.sock (不建議)!有些系統的臨時文件是 namespaced 的,進程只能看到自己的臨時文件,導致 nginx 找不到 uwsgi 的 socket 文件,訪問時顯示502,nginx 的 access log 中顯示 unix: /tmp/xxx.sock failed
sudo
mkdir
-p
/tmp2/
&&
sudo
chmod
777
/tmp2/
然后可以用
/tmp2/zqxt
.sock 這樣的路徑了
|
修改 supervisor 配置文件中的 command 一行:
[program:zqxt]
command=/path/to/uwsgi --ini /home/tu/zqxt/uwsgi.ini
directory=/path/to/zqxt
startsecs=0
|
然后重啟一下 supervisor:
(
sudo
) supervisorctl -c
/etc/supervisord
.conf restart zqxt
或者
(
sudo
) supervisorctl -c
/etc/supervisord
.conf restart all
|