美文网首页码农的世界
阿里云(腾讯云)+Centos7.3部署多个Flask项目(ng

阿里云(腾讯云)+Centos7.3部署多个Flask项目(ng

作者: 丁俊杰_ | 来源:发表于2017-12-22 16:57 被阅读121次

    近期做了一个代购管理平台,类似于微商后台管理系统,部署在了腾讯云上,后因为域名原因迁移到了阿里云。迁移过程部署的具体细节忘记了,导致又花了一点时间解决,于是乎特意在此总结下部署经验。

    部署环境:Centos7.3、Python2.7、Nginx、Uwsgi、Mysql

    1、基本环境配置

    使用yum源安装如下资源(注意以下开头yum和pip区别):

    yum install python  //安装python2.7

    yum install python-pip  //安装pip

    yum install nginx  //安装nginx代理服务器

    centos7自带mariadb,仅需保证启动了即可:

    systemctl enable mariadb //开机自动启动mariadb

    //注:如果无效可以尝试以下安装

    yum install mariadb-server

    安装uwsgi服务器,同时需要安装如下三个库来支持:

    pip install uwsgi  //安装uwsgi服务器

    yum install libxml2

    yum install gcc

    yum install python-devel


    2、安装Flask应用依赖包

    pip install flask

    pip install flask-restful

    ......等等

    由于我的应用中使用到了MySQLdb,于是乎我还需要以下安装:

    yum install mysql-devel

    pip install mysql-python


    3、配置代理服务器

    3.1在你的根目录下创建一个uwsgiconfig.ini文件

    我的项目采用的是nginx反向代理多个二级域名,并将对应的网络请求转发给相应uwsgi,来达到一个云服务器通过多个二级域名来访问多个flask项目的效果。

    nginx可以实现安全过滤,防DDOS等保护安全的操作,并且如果配置了多台服务器,nginx可以保证服务器的负载相对均衡。uwsgi是一个web服务器,实现了WSGI协议(Web Server Gateway Interface),http协议等,它可以接收和处理请求,发出响应等。

    上传你的flask项目到云服务器上,并在项目根目录下创建一个uwsgiconfig.ini文件。

    图例:

    注:flask项目里启动host要使用0.0.0.0

    重点来了,uwsgiconfig.ini中的内容应该如下,根据自己项目对照修改(删掉其中的注释):

    [uwsgi]

    socket = 127.0.0.1:8001  //uwsgi启动时的地址和端口

    chdir = /root/YouZhiGou  //项目根目录

    module = run

    wsgi-file = run.py  //项目启动程序文件名

    callable = app  //python内用以启动的application名

    processes = 4  //处理器个数

    threads = 2  //线程个数

    stats = 127.0.0.1:9193  //状态检测地址

    3.2修改nginx的配置文件nginx.conf

    到目录/etc/nginx下可以找到nginx.conf文件,里面内容比较乱,找到相应位置修改成如下内容:

    server {

        listen      80 default_server;  //默认web访问端口

        listen      [::]:80 default_server;

        server_name  xxx.xxx.xxx.xxx;  //公网地址

        #root        /usr/share/nginx/html;

        # Load configuration files for the default server block.

        #include /etc/nginx/default.d/*.conf;

        access_log  /root/YouZhiGou/logs/access.log;  //服务器接收请求日志

        error_log  /root/YouZhiGou/logs/error.log;  //错误日志,需在根目录下创建logs文件夹

        location / {

            include        uwsgi_params;  //导入uwsgi配置

            uwsgi_pass    127.0.0.1:8001;  //需要和uwsgi里的地址一致,才能转发到uwsgi上

            uwsgi_param UWSGI_PYHOME /root/YouZhiGou/env;  //指向虚拟环境目录

            uwsgi_param UWSGI_CHDIR  /root/YouZhiGou;  //项目根目录

            uwsgi_param UWSGI_SCRIPT run:app;  //启动的主程序

            proxy_set_header remote-user-ip $remote_addr;  //无关,微信支付用的

        }

        error_page 404 /404.html;

        location = /40x.html {

        }

        error_page 500 502 503 504 /50x.html;

        location = /50x.html {

        }

    }

    当你的云服务器上需要再运行一个flask项目时,仅需根据以上步骤,在项目根目录下创建uwsgi配置文件,同时在nginx.conf中加入如下代码:

    server {

        listen      80;  //第二个flask项目

        server_name  xxx.xxx.com;  //反向代理二级域名

        #root        /usr/share/nginx/html;

        # Load configuration files for the default server block.

        #include /etc/nginx/default.d/*.conf;

        access_log  /root/xxx/logs/access.log;  //同上

        error_log  /root/xxx/logs/error.log;

        location / {

            include        uwsgi_params;

            uwsgi_pass    127.0.0.1:8002;  //配置不同端口

            uwsgi_param UWSGI_PYHOME /root/xxx/env;

            uwsgi_param UWSGI_CHDIR  /root/xxx;

            uwsgi_param UWSGI_SCRIPT run:app;

        }

        error_page 404 /404.html;

        location = /40x.html {

        }

        error_page 500 502 503 504 /50x.html;

        location = /50x.html {

        }

    }

    至此,环境部署完毕

    4、启动项目

    nginx  //开启nginx

    uwsgi uwsgiconfig.ini  //到项目根目录下执行

    可以通过如下语句查看进程情况:

    netstat -ntlp

    杀死进程:

    kill -QUIT (processid)

    现在访问公网ip应该可以访问到你的flask应用了。

    注:如果配置完后,出现如下问题

    unavailable modifier requested:0

    可以采用:

    yum install uwsgi-plugin-python

    同时在uwsgiconfig.ini文件中加入:

    plugins=python

    重启uwsgi即可

    如果本有对你有帮助,记得点赞哦。

    相关文章

      网友评论

        本文标题:阿里云(腾讯云)+Centos7.3部署多个Flask项目(ng

        本文链接:https://www.haomeiwen.com/subject/eqjtgxtx.html