阿里云centos7从零开始搭建python环境,到使用flask+nginx+gunicorn部署。(六)flask+nginx+gunicorn部署

flask+nginx+gunicorn部署

终于到了部署环节…本来以为会一帆风顺了,但是还是一步步会遇到问题,现在我就把我部署的过程和遇到的问题写一写吧~

在本地:(以下操作均在本地执行)

准备虚拟环境(虚拟环境必须有我们在本地虚拟环境中安装过的一些包)
先导出本地虚拟环境中已经安装过的包

 # 此处py_flask是我本地的虚拟环境
 (py3_flask) chan@ubuntu:/$ pip freeze > ~/Desktop/requirements.txt

在本地桌面可以看到requirements.txt 可以看到里面就是我们本地虚拟环境中安装好的一些包
将文件拷贝到远程服务器:

# 1.从本地传到远程服务器的~目录
chan@ubuntu:~$ scp ~/Desktop/requirements.txt [email protected]:~/
# 2.输入远程服务器的密码
[email protected]'s password: 服务器密码

远程服务器:(以下操作均在远程服务器执行)

然后在远程服务器的~目录通过ls确认是否传输成功即可。

cd ~
ls

创建py3-flask的虚拟环境

mkvirtualenv -p python3 Flask_py3

将所有的包安装到远程服务器的虚拟环境Flask_py3中

(Flask_py3) [email protected]:~# pip3 install -r requirements.txt

环境安装问题

安装过程中如果哪个包报错了,就把那个包删了后面单独安装
比如包里可能有pkg-resources==0.0.0,这个是一起下不了的,只需把这行从requirements.txt去掉就行了。

在安装 Flask-MySQLdb 的时候可能会报错,列出了2种情况:
如果遇到找不到mysql_config文件时,要先安装 MySQL-community-devel

yum install mysql-community-devel

如果以上安装了还遇到failed with error with code 1 in /tmp/pip_build_root/mysql-python

yum install python-devel

以上步骤都做完了,再运行

pip3 install -r requirements.txt

nginx的配置

这里我就做个简单的配置,情况是是分流到2个端口,简单示范,之后你也可以照葫芦画样对吧兄弟们~
由于我在上一章下的nginx是1.14.2版的,配置文件就在其文件夹下
先进入其配置文件夹

cd /usr/local/nginx/conf

编辑配置

vim nginx.conf

配置内容其他部分不变,就改以下的server部分:(upstream flask是需要添加的)

	 	upstream flask {
	 			# 转发到了2个端口
                server 127.0.0.1:5000;
                server 127.0.0.1:5001;
        }
        server {
            # 监听80端口
            listen 80;
            listen [::]:80;
            root /var/www/html;
            index index.html index.htm index.nginx-debian.html;
            server_name _;

            location / {
                    # 请求转发到gunicorn服务器
                    # proxy_pass http://127.0.0.1:5000;
                    # 请求转发到多个gunicorn服务器
                    proxy_pass http://flask;
                    # 设置请求头,并将头信息传递给服务器端 
                    proxy_set_header Host $host;
                    # 设置请求头,传递原始请求ip给 gunicorn 服务器
                    proxy_set_header X-Real-IP $remote_addr;
            }
        }

配置完重启nginx

systemctl restart nginx.service

Gunicorn安装

pip3 install gunicorn

项目部署

远程服务器把项目克隆下来,或者你们想scp传项目也ok:

git clone www.xxx.com

在远程服务器创建数据库,要跟你项目文件里mysql数据库的名字一致(这里用xixiguai代替)

create database xixiguai charset=utf8

在项目目录下,做数据库迁移:

 python manage.py db init 数据库管理的初始化,会生成一个迁移文件夹
 python manage.py db migrate -m '对这个文件的说明信息' 生成数据库迁移文件
 python manage.py db upgrade   根据迁移文件中的upgrade生成数据库中表

进入到项目目录,假设我的运行文件是manage.py,使用gunicorn来运行项目

# -w 2 代表2个worker
gunicorn -w 2 -b 127.0.0.1:5000 manage:app    

然后可以去网站输入远程服务器的ip号查看项目是否能运行
如果可以,ctrl+c停止gunicorn,并以后台的形式来重新运行

# -D为守护进程的意思,开了2个端口来运行项目
gunicorn -w 2 -b 127.0.0.1:5000 manage:app -D
gunicorn -w 2 -b 127.0.0.1:5001 manage:app -D

你可能感兴趣的:(阿里云Centos7环境搭建,部署)