Gunicorn是一个unix上被广泛使用的高性能的Python WSGI UNIX HTTP Server。
和大多数的web框架兼容,并具有实现简单,轻量级,高性能等特点

废话不多说,直接上干货!!!!

1.创建虚拟机--->自行百度,一大推

2.我这里用的centos7迷你版镜像,这个无所谓

3.干净的虚拟机无法使用wget,需要我们配置yum源!!!这个重点!!!!!

gunicorn flask 架构 gunicorn启动flask_virtualenv

gunicorn flask 架构 gunicorn启动flask_gunicorn flask 架构_02

yum国内仓库环境的搭建
    yum源的仓库路径在/etc/yum.repos.d/然后这个目录底下,只有 以 .repo结尾的文件,才会被识别为yum仓库
    1.在/etc/yum.repos.d/目录底下,定制我们自己的repo仓库文件 
    2.我们自己没有yum仓库,我们就去拿阿里巴巴的yum仓库
    3.https://opsx.alibaba.com/mirror  这就是阿里巴巴的镜像站
    4.下载阿里巴巴的yum仓库文件
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    wget下载文件后,-O参数,指定放到某个目录,且改名
    5.清除yum缓存 
    yum clean all 
    6.生成新的阿里云的yum软件缓存
    yum makecache

View Code

4.yum源现在已经配置完成,开始下载python!

gunicorn flask 架构 gunicorn启动flask_virtualenv

gunicorn flask 架构 gunicorn启动flask_gunicorn flask 架构_02

python环境的搭建
    1.切换到我们的opt目录下,opt我们存放我们的第三方的软件
        cd /opt
        
    2.直接输入命令进行下载python源码
        wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
    3.这里需要说一下记住!python3的依赖包,我们必须先下载好依赖包,否则后期会出现一些问题
        yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y
    4.解压源码
        tar -xvf Pthon3.6.2.tgz
    5.切换源码包目录
        cd Python-3.6.2.tgz
    6.进行编译安装
        释放编译的文件makefile:./configure --prefix=/opt/python36/
                                #--prefix  指定软件的安装路径
    7。开始编译python3
        make
    8.编译和安装(这一步完成之后才会出现/opt/python36)
        make install
    9.配置环境的变量
        echo $PATH(查看环境变量)  #/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    10.变量的赋值
        PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/python36/bin
    11.linux有一个全局个人配置文件(/etc/profile)
        vim /etc/profile
        写入:PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/python36/bin
    12.读取文件让她生效
        source /etc/profile
        
    13.测试能否进行运行
        13.1安装django
            pip3 install django
        13.2建django项目
            django-admin startproject mysite
        13.3建django应用
            django-admin startapp app01
        13.4编写视图函数
        13.5注意修改setting.py的allow_hosts文件[]里加上"*"
    14.启动django项目
        python3 manage.py runserver 0.0.0.0:8000
    15.需要说明一下的是当我们在网上访问的时候注意不要是0.0.0.0这个ip,应该是我们虚拟机的ip+8000端口号
        ,还有就是如果访问不了记得看一下防火墙是不是关闭
        查看防火墙:iptables -L
        关闭防火墙:systemctl stop firewalld

View Code

5.这里我使用的虚拟环境--->virtualenvwrapper,我就直接上我这个得环境安装了

gunicorn flask 架构 gunicorn启动flask_virtualenv

gunicorn flask 架构 gunicorn启动flask_gunicorn flask 架构_02

virtualenvwrapper虚拟环境管理工具(就是管理虚拟环境的工具)
    1.前提:必须是在物理解释器下(不是其中的一个虚拟环境)
        pip3 install virtualenvwrapper
    2.注意:path的配置,需要将物理解释器的python,放在path最前面(查找有顺序)
        [root@localhost ~]# echo $PATH
        vim /etc/profile/(总得环境配置文件)
            #/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
    3.编辑用户家目录的.bashrc文件(用户登陆的时候就会读取这个文件)
        3.1进入用户的家目录:vim ~/.bashrc
        3.2添加字符串:
                export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'   
                    #添加virtualenvwrapper的参数,生成干净隔绝的环境
                export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3     
                    #指定python解释器
                source /opt/python34/bin/virtualenvwrapper.sh 
                    #执行virtualenvwrapper安装脚本,这个是virtualenvwrapper.sh的安装路径(查看安装路径:which virtualenvwrapper.sh)
        3.3 :x   (相当于:wx!)
        3.4 退出:logout
        3.5重新登录:ssh ...
        
    4.如果正确则会使用virtualenvwrapper工具
        5.mkvirtualenv li (创建li的虚拟环境且激活虚拟环境)
        6.workon li (切换li的虚拟环境)
        7.deactivate (退出虚拟环境)
        
        9.cdvirttualenv(进入当前激活的虚拟环境所在的目录(这里建我们的项目app))
        10.cdsitepackages (进入当前激活的虚拟环境的,python包的目录(下载第三方软件包))
        8.rmvirtualenv li(删除li的虚拟环境)

View Code

PS:这里说一下使用ssl连接虚拟机的时候可能查不到虚拟机的ip,这个看我之前的随笔里边有记载

6.现在为止我们这个大的环境也就是算是安装完成了,现在开始启动Flask项目

  6.1,创建虚拟环境

mkvirtualenv li

  6.2 进入虚拟环境

  

workon li

6.3安装Gunicorn

 

pip3 install gunicorn

6.4查看centos防火墙的状态以及关闭防火墙

systemctl status firewalld #查看防火墙状态
systemctl stop firewalld    #关闭防火墙
systemctl disable firewalld#关闭防火墙开机启动
systemctl is-enabled firewalld.service#检查防火墙是否启动

 6.5 这里我直接用命令启动项目

gunicorn -w 3 -b 192.168.38.128:5000 app:app  # w:工作进程的数量,为正整数   b:ADDRESS,ip加端口,绑定运行的主机  app:app.py文件  app:程序

  6.6 这里说一下哈,centos只开放22端口,开放其他端口需要我们自己去设置,一下是命令

firewall-cmd --zone=public --add-port=80/tcp --permanent  # --zone:作用域  –add-port=80/tcp #添加端口,格式为:端口/通讯协议  –permanent #永久生效,没有此参数重启后失效

  6.7为了确保端口已开启,建议查看一下

firewall-cmd --list-ports

 现在大功告成,有一些坑,这里归拢一下

1.yum源配置之后下载服务会报错,不管是update还是啥的都不管用,都是报这个错:No such file or directory: '/var/cache/yum/x86_64/7/_loca,经过我日思夜想深思熟虑抽完烟之后,我觉得这个错我看不懂,然后只要我看不懂的都rm -rf 就完事了,然后别忘记yum makecache 一下

2.Gunicorn启动项目的时候,可能在windows测试每一问题的代码在centos上会有问题,运行的时候回报错,但是Gunicorn这玩意报错太笼统,根本不知道错误地方在哪里,这个时候就需要在启动命令里加一个参数,打印具体错误:gunicorn -w 3 -b 192.168.38.128:5000 app:app -preload

3应该还会有一些人还是分不开启动项目命令中的app:app,不要着急,我这里直接给你图你就明白了

gunicorn flask 架构 gunicorn启动flask_gunicorn flask 架构_07