Centos7部署django+uwsgi+nginx
阿新 • • 發佈:2022-04-21
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 的配置。