親身驗證切實可行的python專案部署方案

王超發表於2019-01-19

目標 : 在瀏覽器輸入 www.python1.com 回車

   進入到Django專案主頁
  1. 概念

    1. Django專案(Web應用)
      該文章中的django專案為fruitday
    2. Web服務

      1. nginx : 高併發處理的好
      2. Apache : 穩定
        LNMP : Linux Nginx MySQL Python/PHP/Perl
        LAMP : Linux Apache MySQL Python/PHP/Perl
    3. uwsgi
      是Web伺服器與Web框架之間一種簡單而通用的介面
  2. 專案部署

    1. 部署環境準備

      1. 確保Django專案能夠執行
      2. 安裝Web服務nginx(用apt-get去安裝)

        1. 安裝
          sudo apt-get install nginx
        2. 啟動
          sudo /etc/init.d/nginx restart
        3. 驗證
          開啟瀏覽器輸入: 127.0.0.1:80 -> Welcome to Nginx
      3. 安裝uwsgi(務必用pip3去安裝)

        1. 安裝
          sudo pip3 install uwsgi
        2. 驗證
          uwsgi –http :9000 –chdir /home/tarena/myproject/fruitday/ –module fruitday.wsgi
    2. 線上商城部署

      1. 配置uwsgi(配置檔案)
        和nginx通訊埠 自身啟動佔用的埠

        1. 在專案目錄(manager.py所在路徑)中新建uwsgi啟動檔案:fruitdayUwsgi.ini
        2. 在配置檔案中寫入如下內容:
          [uwsgi]

          指定和nginx通訊的埠

          socket=127.0.0.1:8001

          專案路徑

          chdir=/home/tarena/myproject/fruitday

          wsgi.py路徑

          wsgi-file=fruitday/wsgi.py

          程式數

          processes=4

          執行緒數

          thread=2

          uwsgi自身佔用埠

          stats=127.0.0.1:8080

      2. 配置nginx(配置檔案)

        1. sudo -i
        2. cd /etc/nginx/sites-enabled/
        3. vi projectNginx.conf
          server{

          # 指定本專案監聽埠,瀏覽器輸入埠
          listen 80;
          # 域名
          server_name www.python1.com;
          # 指定字符集
          charset utf-8;
          
          # 指定收集靜態檔案路徑
          location /static{
              alias /home/tarena/myproject/fruitday/static;

          }

          # 和uwsgi通訊埠和通訊檔案
          location /{
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:8001;

          }

          }

        4. 拷貝uwsgi_params到專案根目錄

          1. sudo -i
          2. cd /etc/nginx
          3. cp uwsgi_params /home/tarena/myproject/fruitday
        5. 改掉nginx預設的server(80)

          1. sudo -i
          2. cd /etc/nginx/sites-enabled
          3. vi deault #把listen的埠由80改為800
            server {
            listen 800 default_server;
            listen [::]:80 default_server;
        6. 重啟nginx服務
          sudo /etc/init.d/nginx restart
      3. 收集靜態檔案

        1. 在settings.py檔案中新增路徑(STATIC_ROOT)
          STATIC_ROOT = `/home/tarena/myproject/fruitday/static`
        2. 收集靜態檔案

          1. cd /home/tarena/myproject/fruitday
          2. python3 manage.py collectstatic
      4. 新增本地DNS解析

        1. sudo -i
        2. vi /etc/hosts
          127.0.0.1 www.python1.com
        3. 重啟網路服務
          sudo /etc/init.d/networking restart
      5. uwsgi啟動專案

        1. 切換到專案目錄
          cd /home/tarena/myproject/fruitday
        2. 利用uwsgi啟動專案
          uwsgi –ini fruitdayUwsgi.ini
      6. 開啟瀏覽器,輸入 www.python1.com
        直接進入專案主頁

相關文章