问题帖子 还没解决,持续坐等。
不从完全小白开始写了,跳过了pyhton3的安装,Flask的使用这些。
如果需要配置虚拟环境,在项目根目录使用以下命令:
进入虚拟环境
# source venv/bin/activate
退出虚拟环境
# deactivate
# pip3 uwsgi
# uwsgi -version 验证版本
进入项目根目录,创建配置文件,编辑
# 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实例变量】
# yum -y install nginx
在 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
# 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 -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