背景:
小魚最近搞了個工程,python用的2.7(用3也可以),后端使用的是flask,服務器用的linux,使用 flask+uwsgi+supervisor部署 ,查閱相關博客、調試、實操,已經搞起來了
supervisor介紹如下:
supervisor:進程管理工具,可以很方便的管理你的工程 啟動、重啟、停止等操作,不用再去自己寫腳本控制;想更深入了解可以搜下相關supervisor資料介紹
安裝部署流程如下
1.將工程打包到服務器上
上傳的方法很多,如xftp、filezilla 工具、或ftp命令等;
2.新建虛擬環境
此步可以忽略,根據自己實際情況來
使用virtualenv 的好處就是可以讓你的項目單獨使用一個環境,不受系統環境和其他項目的影響
命令(如果沒有,安裝一下pip install virtualenv ):
virtualenv venv
或:
python-m venv venvDir
執行后會生成venv目錄,使用 source venv/bin/activate 進去虛擬環境,如圖:
退出直接使用 deactivate 即可
你的工程需要安裝包的話自行 pip安裝
3.安裝 uwsgi
pip install uwsgi
安裝完成后,會成生 uwsgi 文件,如圖:
4.配置 uconfig.ini文件
新建 uconfig.inx文件,命令行 vi uconfig.ini
增加配置如下:
1 [uwsgi] 2 3 # uwsgi 啟動時所使用的地址與端口 4 http-socket = 0.0.0.0:5000 5 6 # 指向網站目錄 7 chdir = /home/xxxxx #路徑為步驟1中實際工程的目錄 8 9 # python 啟動程序文件 10 wsgi-file = manage.py 11 12 # python 程序內用以啟動的 application 變量名 13 callable = app 14 plugins = python 15 # 處理器數 16 processes = 4 17 18 # 線程數 19 threads = 2 20 21 #狀態檢測地址 22 stats = 127.0.0.1:9191
5.安裝 supervisor
pip install supervisor
安裝完成后會生成 echo_supervisord_conf、supervisorctl、supervisord 文件,如圖
6. 生成配置文件 supervisord.conf
1)supervisord.conf 文件名自己取,生成到哪個目錄下面自己選擇,命令:
echo_supervisord_config > supervisord.conf
2)修改supervisord.conf配置
vi supervisord.conf
輸入二個大寫的G,到文件最后面,配置如下:
[include] # ‘;’注釋去掉
;files = relative/directory/*.ini
files = /xxx/supervisor/conf.d/*.conf # 路徑自己配置
如圖:
其他文件修改:參考
https://www.cnblogs.com/whycai/p/11611007.html
3)修改后保存,命令 wq
7.新增配置文件 supervisor/conf.d/uwsgi.conf
命名:
mkdir -p supervisor/conf.d
vi supervisor/conf.d/uwsgi.conf
新增配置如下:
1 ; ================================ 2 ; uwsgi supervisor 3 ; ================================ 4 5 [program:uwsgi] 6 command=/xxxx/uwsgi --ini /xxx/uconfig.ini # 前面路徑為步驟3中uwsgi的路徑,后面路徑為步驟4中uconfig.ini的路徑 7 directory=/xxxxx/ # 路徑為步驟1中自己工程的目錄 8 user=root 9 stdout_logfile=/xxxxx/uwsgi_out.log # 自己選擇路徑配置 10 stderr_logfile=/xxxx/uwsgi_err.log # 自己選擇路徑配置 11 autostart=true 12 autorestart=true 13 startsecs=10 14 priority=997
8.以上都完成后,就可以運行你的工程了
1)命令:
killall supervisord
supervisord -c supervisord.conf
2)查看是否啟動,
ps -ef|grep supervisord
ps -ef|grep uwsgi
如果沒啟動,查看配置是否配置有誤,具體問題具體分析
3)使用supervisorctl管理你的工程
命令:
supervisorctl
help
使用 stop、start等,可以很方便的管理你的工程
好了,以上就是小魚的部署步驟,可以愉快的玩耍了
一些報錯結果:
1. Unlinking stale socket xxxxxx/supervisor.sock
解決:unlink supervisor.sock