cnetos7下nginx+uwsgi+flask项目部署

cnetos7下nginx+uwsgi+flask项目部署

环境安装

//安装 uwsgi
pip3 install uwsgi
//创建软连接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

//查看 uwsgi版本
uwsgi --version

//安装虚拟环境管理类库
pip3 install pipenv

//进入项目文件目录,建立虚拟环境,安装项目需要的类库
pipenv install

//上传项目到服务器指定目录,验证通过 开发环境是否可以跑起来
python flaskbasedemo.py 

uwsgi启动项目
文档地址:http://uwsgi-docs.readthedocs.io/en/latest/WSGIquickstart.html#deploying-flask

//用uwsgi命令行的方式启动uwsgi,
uwsgi --http :5000 --wsgi-file flaskbasedemo.py --callable app --home /root/.local/share/virtualenvs/FlaskBaseDemo-QItxpnHv

tips:
--http 以http的启动,如果有前置服务器(如nginx)需要配置为 scoket
--wsgi-file 项目的启动文件,运行app.run()的文件
--callable app.run() 方式的实例对象
--home 虚拟环境的绝对路径

//杀死进程
kill -9 进程id

uwsgi配置文件启动 验证

//创建配置文件 uwsgi.ini
[uwsgi]
#地址为内网地址 ifconfig地址
http=10.141.8.240:5050
# 项目目录
chdir=/opt/flasktest/FlaskBaseDemo
# 启动uwsgi的用户名和用户组
uid=root
gid=root
#flask项目必须的配置
callable= app
#指定虚拟环境路径
home=/root/.local/share/virtualenvs/FlaskBaseDemo-QItxpnHv

# 指定项目启动文件,该路径是相对于 chdir目录来的
wsgi-file = flaskbasedemo.py

# 启用主进程
master=true
# 进程个数
workers=5
pidfile=/opt/flasktest/scripts/uwsgi.pid
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置后台启动
daemonize=/opt/flasktest/scripts/uwsgi.logi


#通过该配置文件启动
uwsgi --ini uwsgi.ini
#查看进程相关的信息
ps aux |grep uwsgi
#停掉uwsig
uwsgi --stop uwsgi.pid

测试验证访问即可 外网地址:5050访问即可

nginx代理设置

uwsig配置文件修改,http改为 socket ,其它不变
[uwsgi]
#这个地址可以是127.0.0.1地址也可以是 ifconf 内网的地址,注意要与 nginx配置的地址一致
socket=10.141.8.240:5050
...


nginx配置文件 flskbase.conf

server {
    listen       8090;
    # ifconf 内网地址
    server_name  10.141.8.240  www.applelife.com;
        
    #开启静态文件处理强能力
    sendfile on;
    #charset koi8-r;
    #配置请求日志
    #access_log  /var/log/nginx/host.access.log  main;
        
    # uwsgi相关参数配置
    location / {
        include uwsgi_params;
        # 这个需要与 uwsgi配置文件出的 socket一致
        uwsgi_pass 10.141.8.240:5050;
    }
    
    # 静态文件定义
    location /static {
        #开启gzip
        #gzip on;
        #指定gzip http的版本
        #gzip_http_version 1.1;
        #指定gzip压缩比
        #gzip_comp_level 2;
        #指定需要压缩的格式
        #gzip_types text/pain application/javascript application/x-javascript text/css/application/xml text/javascript application/x-http-php ima  # e/jpeg image/gif image/png;
        root /opt/test ;
    }

}

socket另外一种配置方式:
官方文档: https://uwsgi-docs.readthedocs.io/en/latest/Nginx.html?highlight=nginx

# usgi配置修改为,其余不变
socket = /opt/flasktest/scripts/uwsgi.sock;


# nginx 配置修改为,其余不变
 location / {
    include uwsgi_params;
    uwsgi_pass unix:///opt/flasktest/scripts/uwsgi.sock;
}

注意:

root的处理结果是:root路径+location路径 
访问地址:http://118.89.238.148:8000/static/timg.jpg
    location /static {
            root /opt/test;
    }

真实的地址为:http://118.89.238.148:8000/opt/test/static/timg.jpg
    

alias的处理结果是:使用alias路径替换location路径 
访问地址:http://118.89.238.148:8000/static/timg.jpg
    location /static/ {
            alias /opt/test/static/;
    }
实际为 http://118.89.238.148:8000/opt/test/static/timg.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。