這個問題是應為Nginx的配置文件有問題;
要使用uwsgi啟動Django的話要有以下配置:
upstream djangos14{ # nginx負載均衡配置; server 10.0.0.10:9999; #server 10.0.0.11:80; } server { listen 80; server_name www.s14hanju.com; location / { # 要使用uwsgi,代理就不要用proxy_pass了,要使用uwsgi_pass; uwsgi_pass djangos14; # 要指定Nginx安裝目錄下的conf文件下的uwsgi_params文件的絕對路徑; include /opt/nginx1-12/conf/uwsgi_params; root /data/hanju; index index.html index.htm; } location /status { stub_status on; }
然后要在虛擬環境中的Django項目中的manager。py文件同級目錄中創建 uwsgi。ini文件,作為啟動初始化
[uwsgi] #項目的絕對路徑,定位到項目的第一層 chdir = /root/Desktop/NB_crm #指明項目的wsgi文件路徑 module = NB_crm.wsgi #指明你的虛擬解釋器的第一層路徑 home = /root/Envs/nbcrm #指明通過uwsgi,啟動多少個進程 processes = 5 #非常重要 #非常重要 #非常重要 #如果你已經配置了nginx(啟動了nginx服務,配置了uwsgi_pass),請用這個socket連接 socket = 0.0.0.0:9999 #如果你沒用nginx,想通過uwsgi直接啟動web服務,指明http協議 #http = 0.0.0.0:9999 #在退出uwsgi環境后,清空環境變量 vacuum = true
但是這樣起來的項目是沒有靜態文件的,應為uwsgi不支持靜態文件的解析,所以要手動收集項目中的靜態文件,
需要配置項目的setting.py文件,添加路徑
STATIC_ROOT='/root/Desktop/static'
指定靜態文件的收集目錄,在執行命令
通過python3 manage.py collectstatic 收集所有你使用的靜態文件保存到STATIC_ROOT!
然后使用Nginx指定靜態文件位置STATIC_ROOT,轉發靜態請求。
location /static{ alias '/opt/static'; }