5.前後端不分離項目的部署

 

 

 

本次將一個前後端不分離的項目部署到web上,採用如上的架構,並使用supervisor進行進程的管理

項目訪問路徑://www.kunmzhao.cn/login/ 

項目源碼下載網盤地址:

https://pan.baidu.com/s/1sGSnrHendFImTC-extkLww

提示:小編不易,提取碼只需要1元,添加以下小編微信索要提貨碼

 

1.將項目複製到伺服器上

這有很多方式,可以通過FTP或者scp等,我這邊採用SFTP的方式
 注意點:
   1. 如果我們之前項目中有虛擬環境,則將虛擬環境的目錄刪除
   2. 將之前需要用的環境記得導出一併上傳到伺服器
        pip list --format=freeze > requirements.txt

 

 

2.為此項目創建虛擬環境

虛擬環境做好和之前的環境保持一致,如python版本等

1. 創建虛擬環境
    virtualenv --python=python3 env
2. 激活虛擬環境
source env/bin/activate
3. 安裝依賴包
# 有時候可能會失敗,我們可以將失敗的依賴手動添加
pip install -r requirement.txt

 

 

 

3.創建資料庫

  1. 我們需要確認對應的資料庫已經在後台運行 

     

  2. 將項目的資料庫數據導出

    mysqldump -u 用戶名 -p 資料庫 > 導出的文件

     

  3. 將生成的數據上傳的伺服器 

  4. 在伺服器上創建資料庫 

     

  5. 導入數據

     1. 首先創建一個資料庫
     create database orderSystem charset utf8;
     2. 使用資料庫
     use orderSystem;
     3. 導入數據
     source sb.sql

     

  6. 配置Django中關於mysql的配置

     配置成服務端的資料庫

4.配置redis

  1. 確認redis已運行 

  2. 配置django中的redis設置 

     

  3. 測試django能否運行

      python3 manage.py runserver
     ​
     # 自己在在方面花了很長時間操作資料庫,或者模組的引入,需要有耐心

5.配置uwsgi

  1. 創建uwsgi.ini的配置文件

     touch uwsgi.ini

  2. 寫入配置如下

    [uwsgi]
     #  填寫項目的第一層絕對路徑
     chdir     = /home/ubuntu/kunmzhao/orderPlatform/orderPlatform
     # 填寫項目第二層的相對路徑,找到第二層目錄下的wsgi.py
     # 這裡填寫的不是路徑,是以上一個參數為相對,找到第二層項目目錄下的wsgi.py文件
     module    = orderPlatform.wsgi
     # 填寫虛擬環境解釋器的第一層工作目錄 
     home      = /home/ubuntu/kunmzhao/orderPlatform/env
     master    = true
     # 代表定義uwsgi運行的多進程數量,官網給出的優化建議是 2*cpu核數+1 ,單核的cpu填寫幾?
     processes  = 3
     # 這裡的socket參數,是用於和nginx結合部署的unix-socket參數
     socket          = 0.0.0.0:8000
     vacuum    = true
  3. 使用uwsgi啟動項目

    uwsgi --ini ./uwsgi.ini  --plugin python3

     

6.配置supervisor

  1. 生成supervison配置文件

     echo_supervisord_conf > supervisord.conf

  2. 寫入配置如下

     在配置文件末尾添加
     [program:my_uwsgi]        
     command= /usr/bin/uwsgi --ini /home/ubuntu/kunmzhao/orderPlatform/uwsgi.ini --plugin python3
     autostart=true    
     startsecs=10         
     autorestart=true     
     stopasgroup=true     
     killasgroup=true    
  3. 啟動supervisor

     sudo supervisord -c supervisord.conf 

     

  4. 使用supervisorctl查看任務

     sudo supervisorctl -c supervisord.conf 

     

7.配置nginx

  1. 寫入配置如下

     server {
             listen       80;
             server_name  localhost;
             charset utf-8;
             error_page  404  /40x.html;
     ​
             location / {
                     uwsgi_pass   0.0.0.0:8000;
                     include  uwsgi_params;
             }

     

  2. 啟動nginx

     sudo nginx 

     

8.靜態文件處理

此時是可以訪問項目的,但會發現靜態資源缺失

 

  1. 設置django的配置文件

    收集所有的靜態文件,放入一個統一管理的目錄
     打開項目配置文件,加入
     STATIC_ROOT='/home/ubuntu/kunmzhao/orderPlatform/orderPlatform/my_static/'

     

  2. 用命令收集靜態文件

    python3 manage.py collectstatic

     

  3. 配置nginx

     在上面的基礎上添加:
     # 將客戶端關於/static的請求全部轉移到指定的目錄
     location /static {
                    alias /home/ubuntu/kunmzhao/orderPlatform/orderPlatform/my_static/;
            }

     

  4. 再次訪問 

9.域名和https證書

  • 域名可以到各大平台購買,但需要備案,備案時間一般在10-15個工作日

  • 證書有免費的,我們使用免費的即可,需要將證書下載到項目部署伺服器上

 

在nginx的配置文件中,添加配置如下

  server {
         listen       443 ssl;
         server_name  www.kunmzhao.cn;
         ssl_certificate /home/ubuntu/kunmzhao/orderPlatform/ssl/public.pem;
         ssl_certificate_key /home/ubuntu/kunmzhao/orderPlatform/ssl/private.key;
         ssl_session_timeout  5m;
         ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照這個協議配
         ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照這個套件配
         ssl_prefer_server_ciphers   on;
         }

 

如果希望全站https,可以將http請求重定向為https,添加配置如下

 server {
 ​
     listen 80;
     server_name www.kunmzhao.cn;
     rewrite ^(.*) https:$host$1 permanent;
     }