1. 程式人生 > 其它 >Centos7部署django+uwsgi+nginx

Centos7部署django+uwsgi+nginx

Django + uwsgi + nginx on Centos7

安裝 python3.9

檢視:教程

看完上面的教程後,建立一個虛擬環境,在虛擬環境中安裝 django, uwsgi

django 設定

首先,將 django 專案放到 linux 伺服器上。設定 django 專案的配置檔案:/root/blog_site/blog/settings.py (這是本文專案配置檔案的地址, blog_site 是專案資料夾)

修改 settings.py 中的如下三個引數:

DEBUG = False          # 關閉除錯模式

ALLOWED_HOSTS = ['*']  # 允許其他主機連線

STATIC_ROOT = BASE_DIR / 'static'  # 新增這個變數,用來收集所有的靜態資源

執行:

python manage.py collectstatic 

將專案中所有用到的靜態檔案,統統收集到 STATIC_ROOT 定義的資料夾中,這樣,nginx 就可以直接訪問這個目錄,來訪問靜態資源。

Nginx 配置

nginx 安裝和基礎瞭解,檢視:教程

簡單配置:

/usr/local/nginx/conf/nginx.conf

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;
    
    upstream django {         # 定義一組伺服器池
        server 0.0.0.0:8082;  # 使用這個地址和 uwsgi 通訊
    }

    server {
        listen       80;
        server_name  ip_address;  # 這裡填寫你自己伺服器的 ip 地址

        charset    utf-8;
        gzip on;
        gzip_disable "msie6";
        gzip_proxied any;
        gzip_min_length 1k;
        gzip_comp_level 4;

        access_log  logs/host.access.log;
        
        location /media  {
            alias /root/mysite/media;  # 指向 django 的 media 目錄(絕對路徑)
        }
        location /static  {
            alias /root/blog_site/static;  # 指向 django 的 STSTIC_ROOT 目錄(絕對路徑)
        }

        location / {
            uwsgi_pass django;   # 設定 uWSGI 的地址
            include /usr/local/nginx/conf/uwsgi_params;  # 包含進來的 uwsgi 配置
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

重新載入 ngnix 設定:

# 先進入你 nginx 安裝目錄的 sbin 下
./nginx -s reload

uwsgi 配置

在 python 虛擬環境下安裝 uwsgi

建立 /root/blog_site/uwsgi.ini: (注意這個配置檔案,放到了 django 專案的根目錄)

[uwsgi]
# 專案的絕對路徑,定位到專案的第一層
chdir           = /root/blog_site
# 指明 django 專案的 wsgi.py 檔案路徑
module          = blog.wsgi
# 指明你的 python 虛擬環境的目錄
home            = /root/Envs/venv
# 指明通過uwsgi,啟動多少個程序
processes       = 5

# 如果你已經配置了nginx(啟動了nginx服務,配置了uwsgi_pass),請用這個socket連線
# socket 的值,一定要和 nginx 配置的地址一模一樣!
socket          = 0.0.0.0:8082   # 使用這個,將下面的http註釋掉

# 如果你沒用nginx,想通過uwsgi直接啟動web服務,指明http協議
#http = 0.0.0.0:9999

# 在退出uwsgi環境後,清空環境變數
vacuum          = true

執行命令:

cd /root/blog_site

uwsgi --ini uwsgi.ini  # 執行 uwsgi

完成,此時在瀏覽器訪問:linux伺服器的ip ,應該就能訪問你的 django 網站了。

這也是我參考了很多教程後寫出來的,但也只能算是一個 demo,不能面向複雜的實際場景,尤其是 nginx 的配置。