1. 程式人生 > >python3 nginx+uwsgi+Django 部署

python3 nginx+uwsgi+Django 部署

安裝Nginx(centos7)

1.新增源
2.安裝

sudo yum install -y nginx

3.啟動nginx

systemctl start nginx.service systemctl restart nginx.service systemctl stop nginx.service

4.瀏覽器檢視效果

在瀏覽器輸入localhost顯示Welcon to nginx則安裝成功

安裝uwsgi

1.安裝

pip3 install uwsgi

2.檢查

檢視/usr/local/bin 或者/usr/bin 中是否有uwsgi命令,因為我的系統中既安裝了python2 頁安裝了python3 ,而我是用pi3安裝的uwsgi 所以是安裝在了python3的資料夾下的bin中,所以直接輸入uwsgi系統找不到該命令,Linux的命令是放在/usr/bin 或/usr/local/bin中,只有在這兩個檔案中存在才能使用,需要把uwsgi軟連線到/usr/bin下才能直接執行命令。

ln -s /usr/local/python3/bin/uwsgi /usr/bin

安裝Django

pip3 install Django

部署Django

1.setting中配置專案靜態檔案路徑
STATIC_URL='/static/'

STATICFILES_DIRS=(
os.path.join(BASE_DIR,"static"),
)

STATIC_ROOT='/usr/local/static'
#注意靜態檔案不要放在root資料夾下,讀取的時候會出現許可權問題導致網頁沒有樣式,可以自己在根目錄下建立一個資料夾存放。
2.收集靜態檔案

命令: python3 manage.py collectstatic

3.修改nginx配置

用命令whereis nginx 找到nginx 在/etc/nginx目錄下,修改nginx.conf,修改之前最好備份一份。在nginx.conf 的http 中新增server模組。每一個server對應一個服務(app)。

server {
        listen   8500;      #埠
        server_name 0.0.0.0:8500;  #linux中設定為0.0.0.0
        root /root/workspace/projects/python_project/VoiceBotService;#專案路徑
        client_max_body_size 100M;
  
        #指定生成的日誌路徑
        access_log    /root/workspace/projects/python_project/VoiceBotService/nginx_access.log  main;
        error_log     /root/workspace/projects/python_project/VoiceBotService/nginx_error.log  error;

       #專案靜態檔案路徑即setting中的靜態路徑
        location /static {
            alias /usr/local/VoiceBotService/static/;
        }

       #與uwsgi通訊的引數,uwsgi_pass必須和uwsgi.ini檔案中法sock一致,必須指定include為uwsgi_params
        location / {
            uwsgi_pass  unix:///usr/local/VoiceBotService/voicebotservice.scok;
            include     /etc/nginx/uwsgi_params;
            proxy_http_version 1.1;
            proxy_redirect off;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
    }
4.建立uwsgi配置檔案uwsgi.ini

在專案manage.py 所在目錄建立uwsgi.ini檔案,新增內容如下 :

#uwsgi.ini file
[uwsgi]

# Django-related settings
#http = 0.0.0.0:8500
#socket必須與nginx中一致
socket =  /usr/local/VoiceBotService/voicebotservice.scok
uid = root
pid = root

buffer-size = 65535
#專案路徑
chdir = /root/workspace/projects/python_project/VoiceBotService

# Django s wsgi file
#專案wsgi.py路徑appname.uwsgi
module = VoiceBotService.wsgi
pipfile=/root/workspace/projects/python_project/VoiceBotService/uwsgi.pid
# process-related settings
# master
master = true
vacuum=true
thunder-lock=true
harakiri=3000
post-buffering=4096

# maximum number of worker processes
processes = 4
# ... with appropriate permissions - may be needed
chmod-socket = 666
# clear environment on exit
vacuum = true
#日誌路徑
daemonize=/root/workspace/projects/python_project/VoiceBotService/uwsgi.log
5.啟動uwsgi

在uwsgi.ini目錄下執行命令: uwsgi --ini uwsgi.ini 執行完命令後會在socket引數指定的目錄下生成sockt檔案

6.重啟Nginx

systemctl restart nginx.restart

每次更新完程式碼後都要執行5.6步驟。