开发模式javascript
浏览器(chrome) <=> 开发服务器(Flask / WSGI Server) <=> Python(Flask) <=> 数据库(MySQL)css
生产模式html
浏览器(chrome) <=> 反向代理服务器(Nginx) <=> WSGI 服务器(uWSGI) <=> Python(Flask) <=> 数据库(MySQL)java
运行环境迁移nginx
安装 sudo apt-get nginx
web
配置chrome
/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
访问