博客写得差不多了,打算部署到云上
因为速度的关系,不打算部署在AWS上,于是申请了阿里云,环境是上篇文章提到的CentOS 7 64位
安装和配置好Python3和MySQL,又稍微了解点web服务器的知识后,打算按这里的方法进行部署,思路是用gunicorn当应用容器,NGINX当反向代理
安装gunicorn
安装非常简单,一条pip命令就解决了
测试也很简单,写个简单的Flask英语存成.py文件,放到某个目录,然后用gunicorn去运行就好
这两点可以参考gunicorn官网的quick start或这里
确定跑起来后,可以kill掉,需要时再启动
在gunicorn跑起来后会提示其pid,如果刷掉了,可以用netstat -plant或什么别的方式来确认
话说,用netstat -plant可以看到其进程对应的程序是python2,看起来gunicorn是python2写的
安装NGINX
我很幸运地没有去官网看文档,而是直接尝试了yum install nginx,就安装成功了(装python时就装了不少依赖包)
后来再看官方文档时,发现他们没说这种简单安装方式,而是麻烦地再去配置Repository page什么的
我看看自己的版本,是最新的Stable版,摊手
配置NGINX
按照这里的办法没搞定,无奈网上到处搜
从这里知道可以通过修改nginx.conf文件来完成反向代理的配置,不过文件的位置有点不同,我这里文件在/etc/nginx/目录,可能是版本不同导致的
打开发现里面有行include /etc/nginx/conf.d/*.conf;看上去是会导入其他配置文件的样子
那么我们去那个文件夹新建一个.conf文件,于是新建了/etc/nginx/conf.d/test.conf文件,其内容如下:
server {
listen 8000;
server_name flasktest;
location / {
proxy_pass http://127.0.0.1:8000;
}
}
改完后运行service nginx start发现报错
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
于是又到处翻文章,偶然间用netstat -plant查看状态时发现gunicorn正在监听8000端口,心中隐隐觉得可能是这个导致的,关掉gunicorn试了下发现报错消失
和朋友沟通发现因为自己底子不扎实,不知道这个知识点:
TCP协议中,不算某进程fork出的子进程,或使用共享socket技术时,同一端口只能有一个进程监听
OK,那么把test.conf中端口改成7999,运行gunicorn,启动nginx服务,在浏览器里输入阿里云这台云服务器对应的公网IP加:7999
终于看到了熟悉的hello world
至此,部署gunicorn和NGINX基本完成,接下来就是部署博客