1. 程式人生 > >Flask:10-項目部署(02):讓更多的朋友訪問你的裝逼利器

Flask:10-項目部署(02):讓更多的朋友訪問你的裝逼利器

margin server tmm sax -s static solid -m 請求

項目部署

WEB工作原理

  • 客戶端(chrom) <=> WEB服務器(nginx) <=> WSGI(uWSGI) <=> Python(Flask) <=> 數據庫(MySQL)
  • Flask框架自帶一個測試服務器,開發時直接運行即可;但是在生成環境中,必須進行完整部署。

nginx服務器

  • 安裝:sudo apt-get install nginx

  • 添加虛擬主機:

    • /etc/nginx/sites-available目錄下創建虛擬主機配置文件www.blog.com
    server {
          listen 80;
          server_name
    www.blog.com blog.com; location / { root /var/www/blog; index idnex.html; } }
    • 創建軟鏈接
    sudo ln -s /etc/nginx/sites-available/www.blog.com /etc/nginx/sites-enabled
    
    • 重啟nginx服務(若重啟失敗,可以關閉然後再打開)
    • 創建目錄:/var/www/blog,然後在目錄下創建index.html文件
    • 添加本地域名解析,修改配置文件/etc/hosts,在末尾添加如下內容:
    127.0.0.1    www.blog.com
    127.0.0.1    blog.com
    

移植博客項目

  • 將書寫好的項目拷貝到/var/www/blog

uWSGI

  • 說明:是一個實現了WSGI協議的應用程序。

  • 安裝:pip3 install uwsgi

  • 配置:

    http:            # 以HTTP協議啟動
    socket:            # 以socket方式啟動
    chdir:            # uwsgi啟動項目的根目錄
    wsgi-file:        # 數據交給哪個模塊處理
    callable:        # 具體可調用的對象
    daemonize:        # 後臺運行(指定一個日誌文件即可)
    processes:        # 指定進程數
    threads:        # 指定線程數
    
  • 啟動演示(以HTTP協議啟動)

    uwsgi --http 127.0.0.1:5000 --wsgi-file blog.py --callable app
    
  • 以socket形式啟動

    • nginx轉發請求
    server {
          listen 80;
          server_name www.blog.com blog.com;
    
          location / {
              #root /var/www/blog;
              #index idnex.html;
              # 包含請求參數
              include uwsgi_params;
              # 以socket形式轉發請求數據
              uwsgi_pass 127.0.0.1:5000;
          }
    }
    

    提醒:一定不要忘記重啟nginx。

    • 啟動uwsgi
    uwsgi --socket 127.0.0.1:5000 --wsgi-file blog.py --callable app
    
    • 將啟動參數寫入配置文件uwsgi.ini
    [uwsgi]
    socket = 127.0.0.1:5000
    wsgi-file = blog.py
    callable = appp
    # 後臺運行
    daemonize = /var/log/uwsgi.log
    

    啟動:uwsgi uwsgi.ini

靜態資源處理

  • 說明:靜態資源nginx可以自行處理,沒有必要轉發到python中。因此需要添加路由轉發規則。

  • 靜態資源路由規則:

    location /static {
          root /var/www/blog;
          # 等價於
          alias /var/www/blog/static;
    }
    
  • 測試準備:在blog目錄下創建static目錄,並拷貝一張圖片

  • 在瀏覽器地址欄輸入:www.blog.com/static/gyy.jpg

?

Flask:10-項目部署(02):讓更多的朋友訪問你的裝逼利器