開發模式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
訪問