使用nginx+uwsgi简易部署flask项目

1.复制flask项目文件到腾讯云服务器上

例如路径: /root/CHENTAO/code/Flask/GodAlbumy

2.使用pipenv虚拟环境

创建好pipenv虚拟环境后,使用pipenv install -r requirements.txt将相关库安装好
如果在此过程中,报Python 3 was configured to use ASCII as encoding for the environment 乱码错误,使用命令即可解决。

export LC_ALL=en_US.utf-8 && export LANG=en_US.utf-8

3.nginx.conf配置文件

修改 /usr/local/nginx/conf 路径下的nginx.conf文件,记得修改前先备份一次,修改如下:

server {
        listen       80;
        server_name  www.qxinhai.cn;

        #index index.jsp index.html;
        # root /yjdata/www/www/;
        location / {
                proxy_pass http://127.0.0.1:5000;
        }
}

listen是绑定的端口,可以通过该端口直接访问到的,默认是80;server_name就是绑定的网址,如果只是测试,也可以写成localhost,但这样的话,上面的listen就不能使用80端口,因为直接使用localhost:80访问的话,访问的是nginx的主页,无法映射到location中;location中的proxy_pass就是启动flask项目绑定的host和port了。

4.启动flask项目

项目需要使用flask run启动,如果显示没有flask指令的话,按照以下步骤解决:

4.1 使用find / -name flask查找系统中有哪些flask文件

[root@VM_50_252_centos conf]# find / -name flask
/root/.local/share/virtualenvs/GodAlbumy-N4zK0YW0/lib/python3.6/site-packages/flask
/root/.local/share/virtualenvs/GodAlbumy-N4zK0YW0/lib/python3.6/site-packages/flask_migrate/templates/flask
/root/.local/share/virtualenvs/GodAlbumy-N4zK0YW0/bin/flask
/usr/local/lib/python3.6/site-packages/flask
/usr/local/lib/python3.6/site-packages/flask_migrate/templates/flask
/usr/local/bin/flask

因为我使用的是pipenv虚拟环境,所以需要使用这个路径下的flask文件

/root/.local/share/virtualenvs/GodAlbumy-N4zK0YW0/bin/flask

4.2 启动虚拟环境

在对应的目录下,使用pipenv shell启动

[root@VM_50_252_centos GodAlbumy]# pwd
/root/CHENTAO/env/GodAlbumy

4.3 启动flask项目

进入项目所在目录,前面的(GodAlbumy)指的就是启动了GodAlbumy这个pipenv虚拟环境

(GodAlbumy) [root@VM_50_252_centos GodAlbumy]# pwd
/root/CHENTAO/code/Flask/GodAlbumy

使用命令启动

/root/.local/share/virtualenvs/GodAlbumy-N4zK0YW0/bin/flask run

当然,因为使用了虚拟环境,所以需要使用flask的完整路径,如果是真实环境的话,可以创建软链接指向flask,例如

ln -s /root/.local/share/virtualenvs/GodAlbumy-N4zK0YW0/bin/flask(真实环境中的flask路径) /usr/bin/flask

4.4 访问

使用www.qxinhai.cn即可访问flask项目了。

5.使用uwsgi

5.1 安装

pip install uwsgi,如果使用的是虚拟环境,那么pipenv install uwsgi。如果安装在虚拟环境中,那么使用uwsgi时,需要先启动虚拟环境

5.2 配置文件

[uwsgi]
# url + port,即启动flask项目默认使用的
http=127.0.0.1:5000
# 启动文件
wsgi-file=/root/CHENTAO/code/Flask/GodAlbumy2/GodAlbumy/manage.py
callable=app
# 项目目录
touch-reload=/root/CHENTAO/code/Flask/GodAlbumy2/GodAlbumy

manage.py的代码:

from albumy import create_app

app = create_app('production')

if __name__ == '__main__':
    app.run(debug=False)

5.3 启动uwsgi

albumy_uwsgi.init是配置文件的完整路径,因为是在同目录下启动的,所以就没有加上具体路径了。

uwsgi --ini albumy_uwsgi.ini

6. 参考

https://www.cnblogs.com/zhangjpn/p/6876412.html?utm_source=itdadao&utm_medium=referral
https://www.cnblogs.com/franknihao/p/7202253.html
https://www.cnblogs.com/knarfeh/p/5616515.html

推荐阅读更多精彩内容

  • 为什么要使用nginx+uwsgi+flask 因为标准python只能是单线程,无法并发,而uwsgi/guni...
    佑___阅读 2,621评论 0 5
  • 学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器。根据搜索的教程照做,对于原理一...
    Cocoa_Coder阅读 13,889评论 3 55
  • 被誉为南国神草的三七,始于2500万年前,和人参、西洋参是同胞兄弟,应用历史超过3000年。三七内略带苦味的皂...
    1868703阅读 1,377评论 0 1
  • 上一章|目录 PS:上一篇父子已经相聚了,后面不小心被我写多了,不喜欢番外故事节奏和情节的朋友,这两篇慎入!本章着...
    娥媚阅读 10,360评论 103 43
  • 夏晴是一个苦命的孩子,从小父母离婚了。是父亲和她的奶奶把她拉扯大,但她生活的并不不好。一次,奶奶刚做完饭,夏晴特别...
    夏诗萌阅读 163评论 0 1