小程序应用的Python服务器部署高配,

发布时间:2019-05-27 22:34:28编辑:auto阅读(2130)

    上一篇文章,“小程序创业最低配置部署,腾讯云折扣秒杀阿里云!”介绍了小程序项目启动时的最低配置服务器选择,但当项目良好发展时,还是要把服务器配置调整到标准水平,承受住日益增长的流量访问。

    随着Python的流行,直接用Python来部署Web服务器变成一个需求。但Python自带的Flask或传统的DJango都是基于阻塞io模型实现,性能上往往达不到生产环境大规模跑用户的需求。Tornado在底层io处理机制上和django以及flask有着根本的区别,采用了非阻塞io模型,也特别适合小程序用python实现服务端时的部署。

    1. 确定Tornado的部署架构

    下图是一般Tornado用作生产环境的标准部署架构。核心思想是在一台服务器上要运行多个tornado实例,然后使用nginx作反向代理服务器,nginx会把客户端请求中转到适当的tornado服务器进程。

    运行多个Tornado进程实例的原因是同步请求时,在应用处理过程中(如数据库查询,磁盘访问),服务器进程不能接受新请求,所以需要运行多个服务器进程实例。而在异步请求时,在应用处理时,服务器进程是非阻塞的,可以接受新请求,因此tornado的非阻塞架构本身就很好地解决这个问题。


     

     

    2. 云服务器比较

    一般建议每个Tornado进程实例对应1个CPU,所以建议购买4核8G或者是8核16G的服务器。我们比较了腾讯云和阿里云的服务器价格,都是按照优惠价格比较,依然是腾讯云秒杀阿里云。

    腾讯云的“云服务器三折起”优惠活动对4核8G和8核16G的服务器有超划算的优惠。见下图,左边选择“8核16G”,右边选择“重庆”,1年付可以拿到3.8折,才3149.59元。

    左边如果选择“4核8G”的话,1年付将是2000元左右更优惠。一般情况下4核8G配置也已足够,但考虑“8核16G”只贵了1000元1年,在有预算的时候,不妨选择“8核16G”,当有突发负载时更有缓冲的余量。


     

    与之相对应的阿里云,“性能级主机2-5折”是目前在搞的ECS优惠活动。类似的“8核16G”将需要4466元/年。如果只有3000元预算的话,只有购买4核8G云服务器,或者是“8核16G”的突发型实例(即负载不能一直跑满100%)。


     

    3. NGinx配置

    NGinx的反向代理安装和配置是运维标配了。我们这里着重两个环节,a) 反向代理到4个Tornado实例;b) 配置SSL。

    下面所列的NGinx配置示例主要就考虑了这两点,重点关注upstream和ssl的配置。

    user nginx;

    worker_processes 5;

    error_log /var/log/nginx/error.log;

    pid /var/run/nginx.pid;

    events {

        worker_connections 1024;

        use epoll;

    }

    proxy_next_upstream error;

    upstream tornadoes {

        server 127.0.0.1:8000;

        server 127.0.0.1:8001;

        server 127.0.0.1:8002;

        server 127.0.0.1:8003;

    }

    server {

        listen 443;

        ssl on;

        ssl_certificate /path/to/cert.pem;

        ssl_certificate_key /path/to/cert.key;

        server_name www.example.org *.example.org;

        location /static/ {

            root /var/www/static;

            if ($query_string) {

                expires max;

            }

        }

        location / {

            proxy_pass_header Server;

            proxy_set_header Host $http_host;

            proxy_redirect off;

            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header X-Scheme $scheme;

            proxy_pass http://tornadoes;

        }

    }

    4. 利用Supervisor管理部署tornado进程。

    详细操作可以参见这篇文章,使用python3+supervisor+nginx部署tornado

     

    更多省钱秘笈,请看:

    阿里云如何跨账号打通,多账号同时享受优惠

    零门槛申请阿里云1万元代金券

    阿里云超长6个月免费套餐汇总

    阿里云包年包月服务器如何退款

     

关键字