阿里雲centos 部署python flask應用 使用uwsgi+nginx+supervisor 真入門級別配置

傻逼CSDN在markdown的預覽模式把我英文引號給轉成中文引號了。

問題帖子 還沒解決,持續坐等。





不從完全小白開始寫了,跳過了pyhton3的安裝,Flask的使用這些。



uWSGI 安裝與配置

虛擬環境

如果需要配置虛擬環境,在項目根目錄使用以下命令:

進入虛擬環境
# source venv/bin/activate
退出虛擬環境
# deactivate

安裝

# pip3 uwsgi
# uwsgi -version 驗證版本

配置uwsgi

進入項目根目錄,創建配置文件,編輯
# cd /root/project/FlaskTester
# touch uwsgi.init
# vim uwsgi.init

[uwsgi]
 socket = 127.0.0.1:8080
 plugins = python
 chidir = /root/project/FlaskTester
 wsgi-file = main.py
 callable = app

socket = 127.0.0.1:8080 # uwsgi的監聽端口【要跟上面nginx配置裏的端口一樣】
plugins = python 不加請求時會出現-- unavailable modifier requested: 0 --錯誤提示#
chidir = /root/project/FlaskTester 項目根目錄 #【路徑按照自己具體的路徑填寫】
wsgi-file = main.py # flask程序的啓動文件,比如這裏是main.py文件
callable = app # 程序變量名 【app是flask實例變量】



Nginx安裝與配置

安裝

# yum -y install nginx

阿里雲服務器中確定相應端口已經開啓

端口授權策略

配置相應的 nginx.conf 文件

在 http 的大括號內添加

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        #location / {
        #}
        location / {
         include      uwsgi_params;
         uwsgi_pass   127.0.0.1:8080;
         uwsgi_param UWSGI_PYHOME /root/project/FlaskTester/venv;
         uwsgi_param UWSGI_CHDIR  /root/project/FlaskTester;
         uwsgi_param UWSGI_SCRIPT main:app;
        }
        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

配置介紹:
listen 80; # 服務器監聽端口
server_name 47.96.xx.xx; # 寫域名或者公網IP,使用下劃線表示匹配所有的的Host
charset utf-8; # 編碼
client_max_body_size 75M; # 客戶端請求的最大body大小
include uwsgi_params; # 導入uwsgi配置
uwsgi_pass 127.0.0.1:8000; # 轉發到uwsgi哪個端口
uwsgi_param UWSGI_PYTHON /root/project/FlaskTester/venv; # 配置 Python 路徑,這裏使用 virtualenv 虛擬環境。
uwsgi_param UWSGI_CHDIR /root/project/FlaskTester; # flask web項目的根目錄
uwsgi_param UWSGI_SCRIPT main:app; # main代碼 Flask 項目的入口主代碼文件main.py,app 是文件裏 Flask 實例名字

校驗配置是否正確

nginx -t

啓動&停止&重啓

service nginx start 
service nginx stop 
service nginx restart

查看安裝路徑&卸載

rpm -ql nginx
rpm -e nginx



Supervisor安裝與配置

安裝

# yum install supervisor

配置相關文件

mkdir /etc/supervisor
cd /etc/supervisor/
echo_supervisord_conf > /etc/supervisor/supervisord.conf
vim supervisord.conf
# 在末尾添加上這麼一行, 同時確保[include]去除了註釋
files = conf.d/*.conf

意思是在這路徑生成一個配置文件 supervisord.conf,這是主配置文件。並且會去讀當前目錄下的所有 conf.d 的以 .conf 後綴結尾的文件當做配置文件。這樣可以針對每個項目,單獨寫一個 supervisor 的配置文件。
使配置文件生效:
# supervisord -c /etc/supervisor/supervisord.conf

創建一個項目配置文件

# cd /etc/supervisor/conf.d/
# vim FlastTester.conf

[program:FlaskTester]
directory = /root/project/FlaskTester
command= uwsgi --ini /root/project/FlaskTester/uwsgi.ini
autostart = true
startsecs = 5
autorestart = true
startretries = 3
user = root
redirect_stderr = true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /root/project/FlaskTester/log/FlaskTester.log
stopasgroup=false
killasgroup=false

配置介紹:
directory = /root/project/FlaskTester # 項目路徑
command= uwsgi --ini /root/project/FlaskTester/uwsgi.ini # 項目uwsgi啓動命令
redirect_stderr = true # 把出錯的日誌 stderr 重定向到正常output 日誌裏 stdout
stdout_logfile = /root/project/FlaskTester/log/FlaskTester.log # 輸出日誌路徑,注意它不會創建相應的目錄,需要手工提前創建好文件Dir。

使配置文件生效

# supervisorctl reload

進入supervisorctl shell, 啓動

# supervisorctl -c /etc/supervisor/supervisord.conf 
或者
# cd /etc/supervisor
# supervisorctl

會顯示出當前的 supervisor pragram
[root@iZbp1at7o13nmv0uakkppkZ ~]# supervisorctl -c /etc/supervisor/supervisord.conf
FlaskTester                      STOPPED   Oct 24 05:42 PM

啓動之
supervisor> start FlaskTester
FlaskTester: started

參考來源:
Debian部署python3+flask+uwsgi+Nginx+Supervisor

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