Gunicorn启动flask项目
Gunicorn是一个unix上被广泛使用的高性能的Python WSGI UNIX HTTP Server。
和大多数的web框架兼容,并具有实现简单,轻量级,高性能等特点
废话不多说,直接上干货!!!!
1.创建虚拟机--->自行百度,一大推
2.我这里用的centos7迷你版镜像,这个无所谓
3.干净的虚拟机无法使用wget,需要我们配置yum源!!!这个重点!!!!!
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
4.yum源现在已经配置完成,开始下载python!
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
5.这里我使用的虚拟环境--->virtualenvwrapper,我就直接上我这个得环境安装了
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的虚拟环境)
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,不要着急,我这里直接给你图你就明白了