flask配置生产环境

书接上文flask与SQLAlchemy,我们了解到

  • 如何规范flask工程的项目结构
  • 什么是ORM
  • 如何使用SQLAlchemy
  • 一些更多的有关SQLAlchemy的知识
    这一章,我们来配置flask的生产环境

这一步的的测试可以看一个小型的资源管理站
这里与直接上结果。

更换HTTP解释器

原flask使用的WSGI是python,但是很明显python作为HTTP解释器是效率低下的。而且,直接运行flask也是非常糟心的。比如集中配置,比如多进程多线程,比如socket通信,比如log管理,比如进程管理

1.安装uWSGI

pip3 install uwsgi
#为常用指令建立连接
ln -s  /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

2.配置uWSGI

#创建WSGI配置文件
> vi wsig_conf.ini
[uwsgi]
chdir=/usr/local/Labtest/flask # 工程目录
home=/usr/local/Labtest/flask/.env # 虚拟环境目录
module=for_flask  # 启动flask应用的文件名,不用加.py
callable=app # 应用名,与我们hell
master=true
#processes=2 # worker的进程个数
chmod-socket=666
logfile-chmod=644
procname-prefix-spaced=for_flask # uwsgi的进程名称前缀,启动后可通过ps -ef | grep HelloWorld查找到这个进程
py-autoreload=1 #py文件修改,自动加载,也就是设置热启动了
#http=0.0.0.0:8080 #监听端口,测试时使用,即此处使用应该取消注释

vacuum=true # 退出uwsgi是否清理中间文件,包含pid、sock和status文件
socket=%(chdir)/uwsgi/uwsgi.sock # socket文件,配置nginx时候使用
stats=%(chdir)/uwsgi/uwsgi.status # status文件,可以查看uwsgi的运行状态
pidfile=%(chdir)/uwsgi/uwsgi.pid # pid文件,通过该文件可以控制uwsgi的重启和停止
#daemonize=%(chdir)/uwsgi/uwsgi.log # 设置后台模式,然后将日志输出到uwsgi.log。当调试时,可先注释掉此内容

将此文件放置在项目的根目录,并创建文件夹uwsgi

#uwsgi 指令集
uwsgi --ini uwsgi.ini             # 启动
uwsgi --reload uwsgi.pid          # 重启
uwsgi --stop uwsgi.pid            # 关闭

更换代理服务器

1.安装nginx

详见https://www.jianshu.com/p/4c0fb2ed6083

wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar zxvf nginx-1.14.2.tar.gz
cd nginx-1.14.2/
./configure --prefix=/usr/local/nginx-1.14.2 --with-pcre \
--with-http_ssl_module --with-http_gzip_static_module \
--with-http_stub_status_module
#前置安装已经安装好了所有的关联项,若有报错直接复制对应的程式搜索即可
make & make install
#建立连接
ln -s /usr/local/nginx-1.14.2/sbin /usr/bin/nginx

flask+uWSGI已经能实现webserver的功能了,但是更加优秀的weberver还需要nginx的辅助。
Nginx(发音同engine x)是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。

2.配置nginx

#修改nginx的配置文件
        location / {
                include uwsgi_params;
                uwsgi_pass unix:/???/uwsgi/uwsgi.sock;
        }
> nginx -s reload
#重启nginx服务

还有写拓展处理主要看服务配置
这里nginx -s reload已经完成了服务配置。如果不想配置服务,直接到nginx根目录运行./sbin/nginx

HTTPS

这里给大家推荐一个不错的平台:Cloudflare
Cloudflare
在使用之前我们需要更换自己的顶级域名代理商,这一步此处以腾讯云截图:

腾讯云

跳过注册等过程,我们直接进入域名管理界面,看到


Crypto

然后创建密钥


创建密钥

然后复制两个密钥
分别命名为

xxx.pem
xxx.key
再扔到服务器上去。
最后再配置nginx

    # HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  localhost;

        ssl_certificate      xxx/ocango.cn.pem;
        ssl_certificate_key  xxx/ocango.cn.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
                include uwsgi_params;
                uwsgi_pass unix:/???/uwsgi/uwsgi.sock;
        }
    }

总结配置flask一般形态的生产环境nginx+uwsgi+flask

回到目录

你可能感兴趣的:(flask配置生产环境)