supervisor 介紹,啓動uwsgi失敗,端口被佔用


# 1. supervisor 介紹
supervisor是用Python開發的一個client/server服務,是Linux/Unix系統下的一個進程管理工具,不支持Windows系統。它可以很方便的監聽、啓動、停止、重啓一個或多個進程。用Supervisor管理的進程,當一個進程意外被殺死,supervisort監聽到進程死後,會自動將它重新拉起,很方便的做到進程自動恢復的功能,不再需要自己寫shell腳本來控制。


# 2. 安裝
系統環境爲: ubuntu 16.04
直接通過apt 安裝即可
```shell
root@U-996-web:~# apt install supervisor
```

[↑返回頂部↑](#supervisor)

# 3. 配置文件說明
配置文件,都在 /etc/supervisor/conf.d/下,如果想增加一個新的任務,在此目錄下,新建xx.conf 文件,並填寫內容即可

```shell
[program:agency_pay_main_api]
directory = /opt/agency/enabled/app/
command = /home/ubuntu/.pyenv/versions/agency/bin/uwsgi -i main_uwsgi.ini
user =root
autorestart = true
redirect_stderr = true
stdout_logfile = /var/log/agency_pay/main_uwsgi.log
stopsignal = QUIT
```

配置項說明:
> program: 任務的名字
> directory:任務執行時,所在目錄
> command:任務的啓動命令,supervisor 將執行這條命令,來啓動任務
> user:以哪個用戶來啓動任務
> autorestart: 自動重啓,當進程掛了之後
> stdout_logfile: 日誌文件
> stopsignal: 關閉服務時,向進程發送的信號

[↑返回頂部↑](#supervisor)


# 4. supervisor 進程說明
supervisor  是c/s方式的進程管理工具,
> 後臺進程爲 supervisord
> 默認啓動方式爲 /usr/bin/python /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
> 直接執行  supervisord 也可以啓動

> 前臺程序爲 supervisorctl
> 通過訪問var/run/supervisor.sock,來跟 supervisord 交互(在supervisord.conf 配置文件中有寫)

[↑返回頂部↑](#supervisor)

# 5. supervisorctl 指令說明
控制重啓停止加載等,都是通過supervisorctl 來輸入的
先執行supervisorctl 會進入控制檯,之後輸入命令即可

```shell
root@U-996-web:~# supervisorctl
常用指令
> status 查看狀態
> reload 重新加載配置
> start xxx 啓動某個任務
> stop xxx 停止某個任務
> restart xxx 重啓某個任務
> start all 啓動所有任務
> stop all 停止所有任務
> restart all 重啓所有任務
```

[↑返回頂部↑](#supervisor)

# 6. 實戰問題:
## 6.1 supervisor 啓動 uwsgi 進程失敗
現象:實戰中使用supervisor 啓動uwsgi 網站進程的時候,uwsgi啓動多次,導致異常,端口重複綁定的問題(直接uwsgi uwsgi.ini 啓動沒問題)

問題根源:
uwsgi.ini 中制定了日誌輸出
> daemonize = /var/log/uwsgi/uwsgi_wechat.log

supervisor 的 .conf 配置文件中,也指定了輸出log文件
> stdout_logfile = /var/log/wechat/uwsgi.log

這兩個是衝突的
解決辦法:
1. 把uwsgi.ini 中的daemonize 日誌文件註釋掉,如果uwsgi.ini 中有 pidfile = run_uwsgi.pid,也要一併註釋掉
2. 有衝突的log文件也要先刪除掉
3. 重新加載superver
```shell
root@U-996-web:~# supervisorctl  reload
```

[↑返回頂部↑](#supervisor)

發佈了42 篇原創文章 · 獲贊 19 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章