书接上文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
网友评论