使用nginx+uwsgi部署Django專案

huaweichenai發表於2023-01-17

一:安裝nginx

1:安裝編譯工具及庫檔案

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

2:安裝PCRE

wget https://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
tar zxvf pcre-8.35.tar.gz
cd pcre-8.35
./configure --prefix=/usr/local/pcre
make && make install

3:安裝nginx

cd ~
wget https://nginx.org/download/nginx-1.5.6.tar.gz
tar -zxf nginx-1.5.6.tar.gz
cd nginx-1.5.6
./configure --prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_gzip_static_module
make && make install

4判斷nginx是否安裝成功

/usr/local/nginx/sbin/nginx -v

二:安裝uwsgi

1:安裝uwsgi

pip install uwsgi(pip3的話使用:pip3 install uwsgi)

2:判斷uwsgi是否安裝成功

uwsgi --version

三:Nginx+uwsgi部署Django專案

1:uwsgi配置

vim test.ini

test.ini檔案中內容如下:

# uwsig使用配置檔案啟動
[uwsgi]
socket = 127.0.0.1:9090
master = true # 啟用主程式
vhost = true #多站模式
#啟動uwsgi的使用者名稱和使用者組
uid=root
gid=root
# 指定靜態檔案
static-map=/static=/data/www/test/static
no-site = true #多站模式時不設定入口模組和檔案
workers = 2 #子程式數
reload-mercy = 10
vacuum = true #退出、重啟時清理檔案
max-requests = 1000
limit-as = 512
buffer-size = 30000
pidfile = /data/www/script/test.pid #pid檔案,用於下面的指令碼啟動、停止該程式
daemonize = /data/www/script/test.log  #日誌檔案
pythonpath = /usr/local/lib/python3.6/site-packages #Python環境地址

2:nginx配置

server {
    listen       80;
    server_name  local.test.com;
    
    location / {            
        include  uwsgi_params;
        uwsgi_pass  127.0.0.1:9090;  #必須和uwsgi中的設定一致           
        uwsgi_param UWSGI_SCRIPT test.wsgi; #入口檔案,即wsgi.py相對於專案根目錄的位置,“.”相當於一層目錄
        uwsgi_param UWSGI_CHDIR /data/www/test;#專案根目錄
        index  index.html index.htm;
        client_max_body_size 35m;
    }
}

3:啟動服務

killall -9 nginx   #停止nginx
killall -9 uwsgi   #停止uwsgi
uwsgi --ini /data/www/script/test.ini  #啟動uwsgi指令碼
/usr/local/nginx/sbin/nginx #啟動nginx

4:判斷是否配置成功

在瀏覽器訪問local.test.com 如果訪問異常可能是防火牆問題

解決:

#開放指定埠
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/etc/rc.d/init.d/iptables save #儲存配置 
/etc/rc.d/init.d/iptables restart #重啟服務

#關閉防火牆
systemctl stop firewalld.service  #關閉防火牆
systemctl disable firewalld.service #開機時關閉防火牆

相關文章