阿里云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

发布了32 篇原创文章 · 获赞 36 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/alcoholdi/article/details/83347897