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步驟。