5.前後端不分離項目的部署
- 2022 年 11 月 12 日
- 筆記
- python全棧開發-項目部署
本次將一個前後端不分離的項目部署到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.創建資料庫
-
我們需要確認對應的資料庫已經在後台運行

-
將項目的資料庫數據導出
mysqldump -u 用戶名 -p 資料庫 > 導出的文件

-
將生成的數據上傳的伺服器

-
在伺服器上創建資料庫

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

-
配置Django中關於mysql的配置
配置成服務端的資料庫
4.配置redis
-
確認redis已運行

-
配置django中的redis設置

-
測試django能否運行
python3 manage.py runserver # 自己在在方面花了很長時間操作資料庫,或者模組的引入,需要有耐心
5.配置uwsgi
-
創建uwsgi.ini的配置文件
touch uwsgi.ini

-
寫入配置如下
[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
-
使用uwsgi啟動項目
uwsgi --ini ./uwsgi.ini --plugin python3

6.配置supervisor
-
生成supervison配置文件
echo_supervisord_conf > supervisord.conf

-
寫入配置如下
在配置文件末尾添加 [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
-
啟動supervisor
sudo supervisord -c supervisord.conf

-
使用supervisorctl查看任務
sudo supervisorctl -c supervisord.conf

7.配置nginx
-
寫入配置如下
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; }
-
啟動nginx
sudo nginx
8.靜態文件處理
此時是可以訪問項目的,但會發現靜態資源缺失

-
設置django的配置文件
收集所有的靜態文件,放入一個統一管理的目錄 打開項目配置文件,加入 STATIC_ROOT='/home/ubuntu/kunmzhao/orderPlatform/orderPlatform/my_static/'
-
用命令收集靜態文件
python3 manage.py collectstatic

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

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; }


















