centos7
中使用flask
+uwsgi
+nginx
部署项目完整配置
作者:lizhonglin
github: https://github.com/Leezhonglin/
blog: https://leezhonglin.github.io
1、需要准备的东西
1). 项目依赖requirements.txt
.我这里简单列举几个.实际情况要根据自己的项目来定。
Flask==1.0.2
Flask-APScheduler==1.11.0
Flask-Cors==3.0.7
Flask-JWT==0.3.2
Flask-RESTful==0.3.7
...
2). 安装nginx
自行百度,查找相关教程,这里忽略
3).安装python3
自行百度,查找相关教程,这里忽略
4).安装virtualenv
pip install virtualenv
5).使用virtualenv
创建一个属于自己项目的虚拟环境
virtualenv --no-site-packages testenv
注意:这个地方如果系统有
python2
和python3
两个版本。需要做一个默认版本切换.一般系统默认的python2.如果没有做版本切换,使用上述命令创建出来的虚拟环境是python
环境是python2
. 我个人的经验是删除系统中python的软连接,建立一个python3到python的软连接。创建好虚拟环境后在吧默认的软连接恢复。这样创建出来的虚拟环境就是自己需要的了。
具体操作方法如下:
进入/usr/bin
目录,使用命令ll python*
.就能看见下面的软连接信息。
[root@ks-1 bin]# ll python*
lrwxrwxrwx. 2 root root 9 Sep 23 20:08 python -> python2.7
lrwxrwxrwx. 2 root root 9 Sep 23 20:08 python2 -> python2.7
-rwxr-xr-x. 1 root root 7216 Oct 31 2018 python2.7
-rwxr-xr-x. 1 root root 1835 Oct 31 2018 python2.7-config
lrwxrwxrwx. 1 root root 16 Sep 23 20:08 python2-config -> python2.7-config
lrwxrwxrwx. 1 root root 31 Sep 26 14:47 python3 -> /usr/local/python36/bin/python3
lrwxrwxrwx. 1 root root 14 Sep 23 20:08 python-config -> python2-config
使用rm -rf python
命令就能删除当前python的软连接。
创建python3
到python
的软连接
ln -s python3 python
删除python3
的软连接rm -rf python
还原以前的python
的软链接到python2
ln -s python2 python
2、安装项目的依赖
安装项目依赖到虚拟环境中.首先的激活虚拟环境:
source /home/testenv/bin/activate
安装项目的依赖
pip install -r requirements.txt
3、撰写uwsgi
配置
把配置文件命名为testuwsgi.ini
[uwsgi]
# chdir — 项目所在的目录
chdir=/home/test
# virtualenv — 项目虚拟环境的目录
virtualenv=/home/testenv
# 启动的model
# start:app
module=start:app
# 启动文件
wsgi-file=start.py
callable=app
#启动一个master进程来管理其他进程,以上述配置为例,其中的4个uwsgi进程都是这个master进程的子进程,如果kill这个master进程,相当于重启所有的uwsgi进程
master=true
#进程数量
processes=4
#线程数量
threads=2
###使进程在后台运行,并将日志打到指定的日志文件或者udp服务器,日志文件会自动创建
daemonize=/var/log/uwsgi/test.log
#其中socket是用来uwsgi与nginx之间通信的
socket=127.0.0.1:18888
使用uwsgi
命令启动项目
uwsgi --ini testuwsgi.ini
4、nginx
的配置
找到nginx
的配置文件,添加如下配置
server {
listen 5052;
server_name localhost;
#将所有请求转发给demo_pool池的应用处理
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:18888;
}
}
listen
— 表示监听的端口
server_name
— 表示服务名称(有域名可以换成域名)
location
:接收请求
include uwsgi_params
:固定写法
uwsgi_pass
: 服务的主机和端口
重启nginx
systemctl reload nginx
到此项目就部署成功了,就可以通过server_name
配置的地址和端口进行访问了。