开发模式
浏览器(chrome) <=> 开发服务器(Flask / WSGI Server) <=> Python(Flask) <=> 数据库(MySQL)
生产模式
浏览器(chrome) <=> 反向代理服务器(Nginx) <=> WSGI 服务器(uWSGI) <=> Python(Flask) <=> 数据库(MySQL)
运行环境迁移
安装 sudo apt-get nginx
配置
/etc/nginx
/etc/nginx/conf.d
Nginx 默认站点配置体验
添加虚拟主机
在 /etc/nginx/conf.d
下增加 blog.com.conf
server {
listen 80;
server_name blog.com www.blog.com;
location / {
root /var/www/blog;
index index.html;
}
}
检查 Nginx 配置 sudo nginx -t
重启 Nginx sudo service nginx restart
增加本地主机映射,修改 /etc/hosts
10.10.10.10 blog.com
10.10.10.10 www.blog.com
创建项目目录 sudo mkdir /var/www/blog
/var/www/blog/index.html
实现了 WSGI 协议的 Web 服务器,使用 uWSGI 启动 Flask 应用
/var/www/blog/blog.py
pip install uwsgi
--http # 以 HTTP 方式启动,监听ip及端口:10.10.10.10:5000
--socket # 以 socket 方式启动,监听ip及端口:10.10.10.10:5000
--chdir # 项目目录
--module # 指定 WSGI 模块
--callable # 指定应用程序
--daemonize # 指定后台启动的日志文件
--processes # 指定启动进程数
--threads # 指定启动线程数
HTTP 方式启动
uwsgi --http 127.0.0.1:5000 --module manage --callable app
uwsgi --http 0.0.0.0:5000 --module manage:app
socket 方式启动
uwsgi --socket 127.0.0.1:5000 --module manage --callable app
uwsgi --socket 127.0.0.1:5000 --module manage:app
netstat -tlnp 命令可以查看 有那些端口被使用
server {
listen 80;
server_name blog.com www.blog.com
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:5000;
}
}
从配置文件启动 uwsgi (socket) uwsgi.ini
uwsgi --ini uwsgi.ini
[uwsgi]
socket = 127.0.0.1:5000
module = manage
callable = app
daemonize = /var/log/uwsgi.log
nginx 转发(HTTP)
server {
listen 80;
server_name blog.com www.blog.com;
location / {
proxy_pass http://127.0.0.1:5000;
}
}
从配置文件启动 (http)
[uwsgi]
http = 127.0.0.1:5000
module = manage
callable = app
daemonize = /var/log/uwsgi.log
Nginx 有很好的静态资源处理能力,images,css,javascript 通常由 nginx 直接输出,无需通过 WSGI 服务器
静态资源匹配规则
location /static {
root /var/www/blog;
#alias /var/www/blog/static;
}
创建静态资源文件夹 mkdir static
,并拷贝一张图片
通过 www.blog.com/static/image.jpep
访问