flask+Gunicorn+Nginx安装与配置
环境配置步骤
1.安装python3环境
2.更新pip
3.安装虚拟机
4.创建虚拟目录
5.虚拟环境中安装flask及gunicorn环境
6.安装Nginx并配置
7.运行gunicorn进程
具体操作
安装python3环境
1.安装必要开发环境
yum groupinstall “Development tools”
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
2.下载python3源码并解压安装(根据不同版本自行变更,事例为3.4.4版本)
wget https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz
tar xz Python-3.4.4.tgz
cd Python-3.4.4
./configure
make
make install
更新pip
安装python3环境时已经自带了pip3,更新pip命令:==pip3 install –upgrade pip==
安装虚拟机virtualenv
virtualenv虚拟机可以将python项目进行单独隔离,类似于沙箱,在单个python项目的虚拟环境中安装python包仅供本项目使用,不会影响全局python环境。
安装方法:> pip3 install virtualenv
创建虚拟目录
指在项目文件夹中创建虚拟目录用来对本项目python包进行安装和管理,从而达到不影响全局python依赖的目的
创建方式:在项目文件夹中使用命令 > virtualenv venv
此时项目目录中产生venv文件夹表示成功
虚拟环境中安装flask及gunicorn环境
激活虚拟环境命令 > source venv/bin/activate(此时命令提示符出现前缀venv)
激活虚拟环境后安装flask和gunicorn环境不会影响全局python插件
pip install flask gunicorn
安装Nginx
此时Nginx作为反向代理,整个流程为:1.flask项目能够通过python3命令运行。2.gunicorn能够启动flask项目并放置到后台。3.Nginx通过配置,将外网某一端口映射到本地flask监听端口,即达到访问外网某一端口就像是访问服务器本地flask端口一样的效果。(访问www.wppele.com就等于访问服务器127.0.0.1:5000)
Nginx安装步骤
添加nginx的yum源
vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
更新yum源头 >yum update >yum list nginx >yum install nginx
安装完毕后 >systemctl start nginx #启动nginx
Nginx配置
命令 >nginx -t 查询nginx配置文件路径
配置文件中有一项类似include /etc/nginx/conf.d/*.conf; 此路径为自定义配置路径,我们可以在此路径添加xx.conf文件或直接修改default.conf文件。
#/etc/nginx/conf.d/default.conf
server {
listen 80;
server_name 123.207.59.115; # 这是HOST机器的外部域名,用地址也行
location / {
proxy_pass http://127.0.0.1:5000; # 这里是指向 gunicorn host 的服务地址
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
运行gunicorn进程
前面配置完毕后,用户在浏览器中访问http://123.207.59.115:80 就等于访问服务器的127.0.0.1:5000,此时需要开启gunicorn服务器启动flask应用,将端口对应到127.0.0.1:5000。此时用户就可以看到flask的内容了。
运行命令:gunicorn sancaiteldata:app -p sancaiteldata.pid -b 127.0.0.1:5000 -D
sancaiteldata为应用入口文件的文件名
sancaiteldata.pid为进程名