flask+uwsgi+Nginx项目部署小结

开启flask服务

source .env/bin/activate
python3 app.py

uwsgi部分:

基于在配置好了flask的情况下

1.退出虚拟环境
deactivate
2.下载这个以防止安装失败
yum -y install python36-devel
3.下载uwsgi
pip3 install uwsgi
4.创建uwsgi的软链接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
5.配置文件
vi uwsgi.ini
  • 创建uwsgi.ini的配置文件

    [uwsgi]
    chdir=/www/wwwroot/`工程目录`
    home=/www/wwwroot/`工程目录`/`虚拟环境目录`
    moudle=`工程目录`
    callable=`app`   应用名通常app.py
    master=true
    processes=`2`   # worker的进程个数
    chmod-socket=666
    logfile-chomod=644
    procname-prefix-spaced=`name`  #uwsgi的进程名称前缀,启动后可通过 ps -ef | grep `name`查找到这个进程
    py-autoreload=1				# py文件修改,自动加载,也就是设置热启动了
    #http=0.0.0.0:8080  # 监听端口,测试时使用
    
    vacuum=true  # 退出uwsgi是否清理中间件,包含pid,sock和status文件
    socket=%(chdir)/uwsgi/uwsgi.sock		#socket文件,配置nginx时候使用
    stats=%(chdir)/uwsgi/uwsgi.status	#status文件,可以查看uwsgi的运行状态
    pidfile=%(chdir)/uwsgi/uwsgi.pid	#pid文件,通过该文件可以控制uwsgi的重启和停止
    daemonize=%(chdir)/uwsgi/uwsgi.log	#设置后台模式,然后将日志输出到uwsgi.log当调试时,可先注释调此内容
    
7.创建uwsgi中间件文件夹
mkdir uwsgi
cd uwsgi
touch uwsgi.pid
touch uwsgi.sock
touch uwsgi.log

8.在项目目录中执行初始化
uwsgi --ini uwsgi.ini

可忽略

启动flask只需到app.py路径下:

nohup python3 app.py runserver 0.0.0.0:【端口】 > /dev/null 2> /dev/null & 即可
成功配置

1、uwsgi

[uwsgi]
master = true
sock=0.0.0.0:【端口】
chdir=/.../【项目文件夹】
home=/.../.env                 #虚拟环境绝对路径
wsgi-file = 【启动项目文件名如】app.py
callable=app
processes=2
threads = 10
vacuum=true
buffer-size = 65536
logfile-chmod=644
socket=%(chdir)/uwsgi/uwsgi.sock
daemonize=%(chdir)/uwsgi/uwsgi.log
pidfile=%(chdir)/uwsgi/uwsgi.pid
# 启动uwsgi的用户名和用户组
uid=root
gid=root
procname-prefix-spaced=【uwsgi进程名】

2、nginx

如果是在宝塔面板上安装的nginx,Nginx的配置文件路径为
/www/server/panel/vhost/nginx/www.vpsss.net.conf

server
{   
    # listen 80 default_server;
	listen 443 ssl http2 default_server;
    listen 80;
    charset utf-8;
    server_name 【IP or 域名】;
    location /  {
    
      charset utf-8;     
      uwsgi_pass unix:/.../uwsgi.sock;   #这里填sock绝对路径
      include uwsgi_params;
    }

    location /static/ {
      charset utf-8;
      alias /.../static/;            # 加载网站静态文件
    }
    access_log  【记录访问网站访问日志】.log;
    error_log  【网站访问错误日志,这个看的居多】.error.log;
}

状态码小常识:

502报错:

网关错误:是指服务器作为网关或代理以满足客户的需求,来访,所请求的url,服务器收到无效相应,从上游服务器访问履行它的要求。

502通常并不意味着上游服务器已关闭,而是上游服务器和网关代理在使用不统一的协议交换数据,在分析浏览器错误时,应完全清除浏览器缓存。

你可能感兴趣的:(Web开发,个人开发)