python flask虚拟环境 + uwsgi nginx Supervisor 宝塔面板部署

发布时间 2023-11-11 04:57:26作者: jaaks

安装部署对应的python版本,这里全用绝对路径简单暴力

  1. 安装虚拟环境插件virtualenvpip install virtualenv

  2. 创建虚拟环境:virtualenv /www/wwwroot/项目/env virtualenv + 路径

  3. 激活虚拟环境:source /www/wwwroot/项目/env/bin/activate

  • 退出虚拟环境的指令为:deactivate 这里不用管,需要退出的时候再使用

  1. 本地到flask项目路径下使用终端:pip freeze requirements.txt导出所需模块

  2. 把requirements.txt文件上传项目根目录

  3. 安装所需模块:pip install -r /www/wwwroot/项目/requirements.txt

  4. 把项目文件上传到项目目录下,然后使用 python app.py 运行然后访问服务器ip加端口测试模块导入正常

  5. 安装uwsgi:pip install uwsgi 卸载指令为:pip uninstall uwsgi

  6. 安装后输入uwsgi测试是否弹出信息

  7. 项目路径下创建uwsgi.ini配置文件写入以下内容并保存:
    [uwsgi]

uwsgi启动时,所使用的地址和端口(这个是http协议的,也可以使用socket协议,将http改成socket)

http=0.0.0.0:5000

指向网站目录

chdir=/www/wwwroot/项目

python 启动程序文件

wsgi-file=app.py

回调的app对象

callable=app

处理器数

processes=4

线程数

threads=2

CD到项目路径:/www/wwwroot/项目 启动uwsgi:uwsgi --ini uwsgi.ini &

  1. 访问服务器ip加端口测试是否正常使用uwsgi,退出uwsgi使用:sudo lsof -i:5000 查看5000端口所在进程id

  2. 然后使用:kill -9 进程id 多个空格隔开然后回车杀死


  • 宝塔面板部署就不说了,安装好nginx和Supervisor进程守护

  • nginx配置:宝塔面板-软件商店-已安装-nginx设置-配置修改-最后面加上:

添加 uWSGI 配置这里默认80端口没带证书

server
{
    listen 80;
    server_name baidu.com; #把这个域名换成你自己的

    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:5000;
    }

    # 可选项:设置静态文件目录
    location /static {
        alias /www/wwwroot/项目/static;
    }
	}
}

如果需要带证书可以https访问的用以下配置:

下面为可以访问80端口和https443端口的配置

server {
listen 80;
server_name baidu.com;#换成自己的
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name baidu.com;#换成自己的
ssl_certificate /path/to/your/certificate.crt;#这里可以是证书crt和pem后缀名
ssl_certificate_key /path/to/your/private_key.key;#这里是证书key后缀名
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:5000;
}
# 可选项:设置静态文件目录
location /static {
alias /www/wwwroot/项目/static; #写自己的static静态文件路径也可以不要
}
}

  • 然后保存重启nginx,启动uwsgi:uwsgi --ini uwsgi.ini & 测试域名是否正常访问,这里已经反代不需要加端口

最后一步配置Supervisor:

在项目根目录下创建一个start.sh文件写入以下保存:

激活虚拟环境

source /www/wwwroot/项目/env/bin/activate

启动uWSGI应用程序

uwsgi --ini /www/wwwroot/项目/uwsgi.ini

  • 宝塔面板-软件商店-已安装-最后一步配置Supervisor设置-添加守护进程:

  • 启动用户自己选,我使用默认的root,运行目录:/www/wwwroot/项目

  • 启动命令:/www/wwwroot/wiki/start.sh 然后保存运行

  • 如果运行报错:请检查以下sudo lsof -i:5000 端口是否被占用,还是一样杀死进程在启动即可

  • 整个项目的操作都是在虚拟环境下执行,甚至用不到退出虚拟环境指令