ubuntu中supervisor的安装和学习
引言:
在 web 應用部署到線上后,需要保證應用一直處于運行狀態,在遇到程序異常、報錯等情況,導致 web 應用終止時,需要保證程序可以立刻重啟,繼續提供服務。所以,就需要一個工具,時刻監控 web 應用的運行情況,管理該進程。Supervisor 就是解決這種需求的工具,可以保證程序崩潰后,重新把程序啟動起來等功能。
Supervisor 是一個用 Python 寫的進程管理工具,可以很方便的用來在 UNIX-like 系統(不支持 Windows)下啟動、重啟(自動重啟程序)、關閉進程(不僅僅是 Python 進程)。同樣,它也不僅僅是監控web,還能對python的一切腳本起著重啟的作用。
安裝Supervisor
sudo apt install supervisor配置文件
另外可以查看是否安裝成功,查看進程號:
pgrep supervisord若出現隨機進程號則表示已經啟動并安裝成功。我們先補充生成的默認文件:
echo_supervisord_conf > /etc/supervisor/supervisord.conf安裝好之后,不出問題的話supervisor服務已經啟動完成。
配置文件在/etc/supervisor/conf.d/路徑下,
舉例再conf.d下創建對應的項目的配置文件
我這里配置了app.conf和djangotest.conf
app.conf文件,其中app.py文件就放在目錄/home/szr/temp/下面
[program:pmapp] command=python3 /home/szr/temp/app.py autorestart=true ;默認自動啟動 stdout_logfile=/home/szr/temp/supervisord_stdout.log ;指定日志文件路徑 stderr_logfile=/home/szr/temp/supervisord_stderr.log ;指定日志文件路徑 [supervisord]djangotest.conf文件,其中manage.py文件就放在目錄/home/szr/lzztes/下面
[program:djangotest] command=/usr/bin/python3.8 /home/szr/lzztes/manage.py runserver 0.0.0.0:8000 autostart=true stderr_logfile=/home/szr/lzztes/logs/err.log stdout_logfile=/home/szr/lzztes/logs/out.log startretries=2 stopasgroup=true killasgroup=true environment=PYTHONPATH="/home/szr/.local/lib/python3.8/site-packages:/usr/lib/python3/dist-packages";配置同一個環境變量下有多個值 #項目路徑 directory to cwd to before exec supervisor在執行前會切換到當前目錄下 根據自己的情況配置 # directory=/[supervisord]其中可能需要先在指定目錄下/home/szr/lzztes/logs/創建一個out.log 否則可能會報錯找不到。
使用
第一次啟用
sudo supervisord -c /etc/supervisor/conf.d/app.conf或者使用
sudo supervisord -n -c /etc/supervisor/conf.d/app.conf可以看見在前臺看見運行信息,seccess
或者必須進入到目錄:/etc/supervisor/下
sudo supervisorctl status 查看狀態 update 只更新變化添加的配置 reload 更新所有項目的配置 并重啟所有項目 start+項目名稱 啟動項目 restart+項目名稱 重新啟動項目 stop+項目名稱 停止項目 stop all 停止所有項目名稱以下是例子
當kill進程的時候 supervisor會守護這些進程,并且重啟
以app.py為例子,sudo kill -15 16221
之后supervisor進程守護,又重啟了app.py在端口號 16237
總結
以上是生活随笔為你收集整理的ubuntu中supervisor的安装和学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zsh配置其显示当前文件路径
- 下一篇: ubuntu知道文件名查找文件路径