Flask項目部署

Flask項目部署到雲服務器

web 項目工做流程

  • 開發模式javascript

    瀏覽器(chrome) <=> 開發服務器(Flask / WSGI Server) <=> Python(Flask) <=> 數據庫(MySQL)css

  • 生產模式html

    瀏覽器(chrome) <=> 反向代理服務器(Nginx) <=> WSGI 服務器(uWSGI) <=> Python(Flask) <=> 數據庫(MySQL)java

運行環境遷移nginx

  • pip freeze > requirements.txt 將當前項目所使用的依賴包列表(包名及版本號)保存到 requirements.txt 中
  • pip install -r requirements.txt 安裝 requirements.txt 中所列舉的依賴包

Nginx

  • 安裝 sudo apt-get nginxweb

  • 配置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

uWSGI

實現了 WSGI 協議的 Web 服務器,使用 uWSGI 啓動 Flask 應用

  • 建立 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 命令能夠查看 有那些端口被使用
  • nginx 轉發(TCP)
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訪問