Flask+uWSGI+Nginx项目部署
Posted ishtarin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask+uWSGI+Nginx项目部署相关的知识,希望对你有一定的参考价值。
?写完项目总不能一直在本地跑,我也是第一次部署项目,这里把部署过程记录一下,暂且把坑略去,遇到的错误之后在整理发出来。
准备工作
- 云服务器一台(这里以阿里云服务器为例,系统装的Centos7)
- 代码仓库(我用的gitee)
开始部署
初始化系统环境
uWSGI不能使用root用户,所以添加个新的用户:
- adduser xxx
- passwd username
- gpasswd -a username wheel (添加到sudo用户组)
切换到自己创的用户下:
- sudo -iu username
初始化环境:(ubuntu系统的用对应的apt命令就行)
- sudo yum install epel-release
- sudo yum install gcc nginx
安装python
这里使用的是anaconda,因为比装python要方便。
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2019.07-Linux-x86_64.sh
安装你下载下来的文件,路径就照它默认的来
- sh Anaconda3-2019.07-Linux-x86_64.sh
给要部署的项目创建python虚拟环境
- source anaconda3/bin/activate (激活anaconda)
- pip install virtualenv (下载慢的话自行添加别的源)
- mkdir flask_project
- cd flask_project
- 这里用git把你的项目拉下来,git使用不在这片笔记记录的范围之内
- virtualenv venv (创建虚拟环境目录)
- source venv/bin/activate (激活虚拟环境)
- pip install ... (安装你的项目用到的库,用requirements.txt较为方便)
配置uWSGI服务器
-
pip install uwsgi
-
vim mywsgi.ini (自定义服务器的配置文件)
‘‘‘ #一个简单的ini文件,更多的参数名可以自己查询
[uwsgi]
module = ... # 启动程序所在的文件
master = true processes = ... # 分配的进程数
threads = ... # 线程数
http = 0.0.0.0:5000 # 改成自己的ip和想要运行的端口
virtualenv = ... # 刚才创建的venv的路径
die-on-term = true
‘‘‘
-
uwsgi mywsgi.ini(如果想要在后台运行可以用命令 uwsgi -d --ini mywsgi.ini来代替) 至此,uwsgi服务器已经启动了,在浏览器输入对应ip和端口就能访问了。
使用nginx反向代理
来到安装nginx的文件夹下,查看nginx.conf内容(如果没有这个配置文件,那可能是在sites-enabled文件夹中的default文件,不同版本文件放的位置还是略有不同) 在http{}部分中你会看见这么一句:include ...,意思是在这个路径下的文件都会被当作配置文件加载。so,我们来到这个include对应的文件夹下
- vim myconf.conf (创建自己的配置)
‘‘‘ #还是给个简单的配置
server {
listen ...; # 你要监听的端口
server_name ...; # 你的域名或者ip
location / {
include /etc/nginx/uwsgi_params; # 这个路径改成你自己nginx下uwsgi_params文件的路径
uwsgi_pass 0.0.0.0:....; # 与刚才配置 mywsgi.ini 时指定端口一致
}
} ‘‘‘
- nginx -s reload (重新加载nginx配置)
到这里,就可以用nginx配置中指定的地址+监听的端口来访问你的uwsgi服务器了。
顺带一提,如果使用了nginx,那么在uwsgi的配置文件中,http这个名字要改成socket。另外,如果uwsgi不是后台在运行,那你断开与服务器的连接时uwsgi就会自动关闭,如果是以后台方式运行,那要关掉只能杀掉对应进程。
以上是关于Flask+uWSGI+Nginx项目部署的主要内容,如果未能解决你的问题,请参考以下文章
部署flask应用到nginx+uwsgi+linux服务器