Ubuntu部署python3-flask-nginx-uwsgi-supervisor完美

https://blog.51cto.com/jokerbug by:joker_bug

安裝虛擬環境

$ pip install virtualenv
$ pip install virtualenvwrapper

把虛擬機環境添加環境變量中

這個最好find / -name virtualenvwrapper.sh 看下位置
$ vi .bashrc
if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh
fi

爲flask項目創建一個虛擬環境

$ mkvirtualenv --python=python3 flask  #flask這個名字可以按自己需求修改,我項目是需要python3。所以選擇 --python=python3,如果需要python2可以不加這個。
$ deactivate  #安裝完虛擬環境後,先退出這個虛擬環境。

安裝mysql數據庫,安裝數據這個沒什麼好提的網上有很多詳細教程

$ apt install mysql-server mysql-client
$ apt install libmysqld-dev

安裝nginx

$ apt install nginx   #這個安裝也比較簡單

安裝supervisor

需要是python2 暫時不支持python3,這裏有時候會遇到坑。pip install --upgrade pip 看看現在pip是什麼版本。

$ vi /usr/local/bin/pip #如果發現pip是python3,不要慌用這個命令把第一行的python3修改python2 即可,如果是python2就無視這步
$ pip install supervisor #安裝supervisor

安裝uwsgi

需要注意flask項目需要的環境 選擇python3 還是python2.

這個我的項目是python3,如果是python2創建虛擬環境就用python2。具體可以看上面的爲項目創建虛擬環境

$ workon flask  #進入虛擬環境
$ pip install uwsgi  #這個之前裝到虛擬環境裏面

如果出現Failed building wheel for uwsgi執行下面語句

apt-get install python3-dev

項目文件創建

這個按自己需要創建,也可以按我這個創建

$ mkdir /www  #根目錄下創建一個www
$ mkdir /www/wwwroot  #這個項目文件全部放這個理
$ mkdir /www/log #日誌文件

uwsgi配置

uwsgi配置好後,可以測試下

uwsgi配置路徑:/www/wwwroot/uwsgi.ini
$ cd /www/wwwroot #可以放到項目,按自己需求都可以
$ vi uwsgi.ini   #創建一個uwsgi配置文件

[uwsgi]
# 當前這個項目的路徑
chdir           = /www/wwwroot
# 模塊
module          = manage   #啓動文件名 個人理解
# python的虛擬環境
home            = /root/.virtualenvs/python3
# 是否啓用mater模式
master          = true
# 進程數
processes       = 2
# socket文件地址
socket          = /www/wwwroot/uwsgi.sock
# wsgi文件
wsgi-file       = /www/wwwroot/manage.py  #啓動文件
# wsgi文件中的app變量
callable        = app
# socket文件的權限
chmod-socket    = 666
配置好後可以運行起來測試是否成功
$ workon python3 #進入虛擬環境
$ uwsgi --uid www --gid www --ini /www/wwwroot/uwsgi.ini #這個可以指定用戶和用戶組權限,也可以不指定。測試沒能正常打開項目就往下面步驟繼續配置

nginx配置

$ cd /etc/nginx/sites-enabled/   #切換到nginx默認配置目錄
$ mv default default.bak #修改配置前先備份下配置
$ vi default
server {
        listen 80;
        server_name www.xxoo.com;
        charset utf-8;
        client_max_body_size 75M;
        access_log /www/log/xxoo.access.log;
        error_log /www/log/xxoo.error.log;

        location / {
                include uwsgi_params;
                uwsgi_pass unix:/www/wwwroot/uwsgi.sock; #這個.sock文件一定要和uwsgi配置中一樣
        }
}
修改nginx配置/etc/nginx/nginx.conf ,第一行user www www ; Nginx用戶及組:用戶 組 按自己需求配置。詳細配置參數網上自己找

supervisor配置

supervisor配置路徑:/www/wwwroot/supervisor.conf
$ vi supervisor.conf
[program:python]  #這個python可以按自己需求寫
# supervisor執行的命令
command=/root/.virtualenvs/py3-zqcms/bin/uwsgi --uid www --gid www --ini /www/wwwroot/uwsgi.ini
# 項目的目錄
directory = /www/wwwroot
# 開始的時候等待多少秒
startsecs= 5   #按自己需求寫
# 停止的時候等待多少秒
stopwaitsecs= 5 #按自己需求寫
# 自動開始
autostart=true
# 程序掛了後自動重啓
autorestart=true
# 輸出的log文件
stdout_logfile=/www/log/supervisord.log
# 輸出的錯誤文件
stderr_logfile=/www/log/supervisorderr.log

[supervisord]
# log的級別
loglevel=info
配置好後就運行
$ supervisord -c /www/wwwroot/supervisor.conf  #執行的時候注意是在python2環境

如何終止多餘 Supervisor 進程?

$ ps -ef | grep supervisor  #查看
$ kill 4012 #結束進程

歡迎交流

注意:uwsgi nginx supervisor我只是簡單配置了下,各位可以按需求配置。詳細配置參數網上有很多資料。哪裏寫錯,可以留言告訴我。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章