Django部署-uwsgi配置

環境說明

  • 系統版本:centos7.1
  • python版本:3.6
  • sqlite版本:3.7
  • django版本:2.1
  • uwsgi版本:2.0.17

本文前提說明:html

  • 一、安裝uwsgi以前 python3 和 Django2.1 環境已經部署完成
  • 二、已經安裝過sqlite或其它數據庫,進入python3可用正常引用模塊 import sll
  • 三、uwsgi配置文件格式 ini、xml、json 均可,本文以經常使用的ini配置格式爲例

安裝配置uwsgi

詳細配置參數和變量可參考博文《uwsgi配置詳解》或官方配置文檔python

安裝

安裝uwsgi[python2或未定義的請用pip命令安裝]nginx

pip3 install uwsgi

查看uwsgi版本sql

uwsgi --version
2.0.17.1

爲方便使用,建立uwsgi軟鏈接數據庫

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

uwsgi服務測試

建立 test.py 測試文件,該uwsgi測試文件在python3中執行不顯示django

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    # return "Hello World"      # 注:python2使用
    return [b"Hello World"]     # 注:python3使用

運行 uwgi 服務測試json

uwsgi --http :8001 --wsgi-file test.py

【結果】centos

輸入 http://IP:8001 頁面顯示 Hello World 爲服務正常運行

==備註說明:因部署環境版本不一樣可能輸出不了 Hello World 但服務能夠正常運行,訪問無報錯信息便可。此服務測試僅作參考==app


配置 uwsgi

具體配置參數可參考官方文檔或博文《UWSGI配置詳解》socket

uwsgi.ini配置

==ini方法是較經常使用的配置方式==

建立 uwsgi.ini 配置文件,通常存放在在django項目下

[uwsgi]
#自定義變量
projectname = MyDjango
base = /www/DjangoProject/MyDjango/
# 啓動uwsgi的用戶名和用戶組
uid = www
gid = www
# 個人項目目錄
chdir = %(base)
# 指定項目的application
module = %(projectname).wsgi:application
# 進程個數
workers = 5
# 啓用主進程
master = true
# 自動移除unix Socket和pid文件當服務中止的時候
vacuum = true
# 序列化接受的內容,若是可能的話
thunder-lock = true
# 啓用線程
enable-threads = true
# 設置自中斷時間
harakiri = 30 
# 設置緩衝  
post-buffering = 4096
#pid文件保存路徑
pidfile = /tmp/uwsgi.pid
# 設置日誌目錄
daemonize = /tmp/uwsgi.log
# 指定sock的文件路徑,能夠用端口或sock文件
#socket = 192.168.88.20:8099
socket = /tmp/uwsgi.sock

變動項目setting配置

setting

DEBUG = False

ALLOWED_HOSTS = ['www.test.com','127.0.0.1','192.168.88.88','localhost']
或
ALLOWED_HOSTS = ['*']

配置nginx

添加nginx虛擬主機配置

==注意:alias路徑要和項目setting的STATICFILES_DIRS路徑設置保持一致==

server {
    listen 80;    
    server_name www.test.com;
        charset utf-8;
    location / { 
        include uwsgi_params;
        include mime.types; 
        uwsgi_pass unix:/tmp/uwsgi.sock;
    }   
    location /static/ {
        alias /www/DjangoProject/MyDjango/APP/templates/;
    }   
    error_log /www/wwwlogs/www.test.com.error.log;
    access_log  /www/wwwlogs/www.test.com.access.log;
}

運行uwsgi服務

配置完成後啓動服務加載配置

uwsgi --ini uwsgi.ini

重載uwsgi配置文件

uwsgi --reload /tmp/uwsgi.pid

中止uwsgi服務

uwsgi --stop /tmp/uwsgi.pid

若使用stop不能徹底中止進程能夠用kill循環強行結束

for i in `ps axu |grep -vi 'grep'| grep "uwsgi" | awk '{print $2}'`;do kill -9 $i;done
相關文章
相關標籤/搜索