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

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

專案部署

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