安装配置gunicorn和NGINX的

发布时间:2019-10-09 10:38:59编辑:auto阅读(1837)

    博客写得差不多了,打算部署到云上
    因为速度的关系,不打算部署在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基本完成,接下来就是部署博客

关键字