阿里云CentOS 7.4 使用Flask建站的方法
pythonweb部署方式为:nginx+gunicorn+supervisor+flask
一、准备工作,先来安装pip
详细教程如:
1、首先检查linux有没有安装python-pip包,直接执行yuminstallpython-pip
※显示Nopackagepython-pipavailable.则没有,继续如下操作
2、没有python-pip包就执行命令yum-yinstallepel-release
3、执行成功之后,再次执行yuminstallpython-pip
4,、对安装好的pip进行升级pipinstall--upgradepip
至此,pip工具就安装好了。
二、创建一个项目和python虚拟环境
使用python的virtualenv创建虚拟环境。用来在一个系统中创建不同的python隔离环境。相互之间还不会影响,而且使用相当简单。
mkdirmyflask cdmyflask virtualenvvenv
创建了venv环境之后,激活就可以了
sourcevenv/bin/activate
三、安装pythonweb框架—flask
flask是一个pythonweb轻型框架,简洁高效。flask依赖两个库werkzeug和jinjia2。可采用pip方式安装:
pipinstallflask
测试我们的flask安装是否成功,并使用flask写一个简单的web服务。
vimrun.py
fromflaskimportFlask app=Flask(__name__) @app.route('/') defindex(): return'helloworld!' if__name__=='__main__': app.run()
启动flask
pythonrun.py
此时,用浏览器访问http://127.0.0.1:5000就能看到网页显示helloworld!
三、使用gunicorn部署pythonweb
现在我们使用flask自带的服务器,完成了web服务的启动。生产环境下,flask自带的服务器,无法满足性能要求。我们这里采用gunicorn做wsgi容器,用来部署python,用pip直接安装。
pipinstallgunicorn
pip是python用来管理包的一个重要工具。每次安装新库后写入一个requirement文件里面,既能知道自己安装了什么库,也方便别人部署时,安装相应的库。
pipfreeze>requirements.txt
以后每次pip安装了新的库的时候,都需freeze一次。完整保存好requirement文本,重新安装库则只需要执行如下操作:
pipinstall-rrequirements.txt
当我们安装好gunicorn之后,需要用gunicorn启动flask,注意flask里面的name里面的代码启动了app.run(),这个含义是用flask自带的服务器启动app。这里我们使用了gunicorn,run.py就等同于一个库文件,被gunicorn调用。
gunicorn-w4-b0.0.0.0:5000run:app#-wworker数量-b访问地址
此时,我们可以用5000的端口进行访问。
想要结束gunicorn只需执行pkillgunicorn,有时候还需要用ps找到pid进程号才能kill。
四、使用nginx
nginx,一个高性能的web服务器。通常用来在前端做反向代理服务器。代理服务,简而言之,一个请求经过代理服务器从局域网发出,然后到达互联网上服务器,这个过程的代理为正向代理。如果一个请求,从互联网过来,先进入代理服务器,再由代理服务器转发给局域网的目标服务器,这个时候,代理服务器为反向代理(相对正向而言)。
1.gcc安装
安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,则需要安装:
yuminstallgcc-c++
2.PCREpcre-devel安装
PCRE(PerlCompatibleRegularExpressions)是一个Perl库,包括perl兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库,pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。命令:
yuminstall-ypcrepcre-devel
3.zlib安装
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在Centos上安装zlib库。
yuminstall-yzlibzlib-devel
4.OpenSSL安装
OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在Centos安装OpenSSL库。
yuminstall-yopensslopenssl-devel
5.使用wget下载nginx:
wgethttps://nginx.org/download/nginx-1.13.12.tar.gz tar-zxvfnginx-1.13.12.tar.gz cdnginx-1.13.12 make makeinstall#编译安装
然后配置Nginx,刚才安装了Nginx之后,我们打开/etc/nginx/conf.d/default.conf,然后修改默认的default.conf为:
server{ listen80; server_namelocalhost; location/{ proxy_passhttp://127.0.0.1:5000; proxy_redirectoff; proxy_set_headerHost$host:80; proxy_set_headerX-Real-IP$remote_addr; proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for; } }
其中server_name就是你的域名,这里用localhost代表通过ip访问,配置好default.conf之后试着启动Nginx!
[root@server~]#servicenginxstart Startingnginx:[OK] [root@server~]#nginx-sreload
ok!到这一步,整个部署过程就完成了!
六、为了方便管理使用supervisor
1.安装supervisor
pipinstallsupervisor echo_supervisord_conf>supervisor.conf#生成supervisor默认配置文件 vimsupervisor.conf#修改supervisor配置文件,添加gunicorn和nginx
2.添加gunicorn到supervisor中,添加到配置最下面。此处因为使用了python虚拟环境,可先在虚拟环境找到gunicorn地址,使用whereis如:/usr/local/bin/gunicorn,记住此位置加入到supervisor的command中,如下:
【program:myflask】 command=/usr/local/bin/gunicorn-w4-b0.0.0.0:5000run:app directory=/home/myflask#位置 autostart=true#自动启动 startsecs=5 autorestart=true#自动重启 startretries=3#启动失败时的最多重试次数 redirect_stderr=true#重定向stderr到stdout stdout_logfile=/var/log/flask_supervisor.log
3、添加nginx进程到supervisor
先新建一个log文件夹
mkdir/home/myflask/log
[program:up_nginx] command=/usr/sbin/nginx autostart=true#随着supervisord的启动而启动 autorestart=true#自动重启 startretries=10#启动失败时的最多重试次数 exitcodes=0#正常退出代码 stopsignal=KILL#用来杀死进程的信号 stopwaitsecs=10#发送SIGKILL前的等待时间 redirect_stderr=true#重定向stderr到stdout stdout_logfile=/home/myflask/log/nginx.log stdout_logfile=/home/myflask/log/nginx.err
4.启用supervisor管理工具
supervisord-csupervisord.conf #sudounlink/tmp/supervisor.sock#如上面启动失败先使用此命令之后在使用上面命令 supervisorctlstartall
至此所有配置结束,试试网站是否如正常运行吧,还可增加supervisor开机自启动(这个未试验,大家试试看吧):
#开机任务自动启动 vi/etc/rc.d/rc.local#并在最后添加 supervisord-c/home/myflask/supervisord.conf #尾声:通过以上步骤,那么基本上就可以开启启动网站了!reboot试一试~~
※supervisor的基本使用命令
supervisord-csupervisor.conf#通过配置文件启动supervisor supervisorctlstatus#察看supervisor的状态 supervisorctlreload#重新载入配置文件 supervisorctlstart[all]|[appname]#启动指定/所有supervisor管理的程序进程 supervisorctlstop[all]|[appname]#关闭指定/所有supervisor管理的程序进程
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。