Django+uWSGI+Nginx 部署網站
Django 1.11設置
保證Django在本地調試沒有問題;
當然這是前提^_^
收集靜態文件至指定文件夾
Django靜態文件設置具體參考:https://docs.djangoproject.com/en/1.11/ref/contrib/staticfiles/
在
myproject/settings.py
中設置靜態文件STATIC_URL和STATIC_ROOT設置;
如:STATIC_URL = ‘/static/‘
STATIC_ROOT = os.path.join(BASE_DIR, ‘static‘) #此文件夾需為空在
myproject/urls.py
中添加static文件URL配置;urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
運行
python3 manage.py collectstatic
將靜態文件收集到指定文件夾;python3 manage.py collectstatic #處於Django虛擬環境下
本地調試測試,網站是否正常;
註:
STATIC_ROOT
不可與STATICFILES_DIRS
目錄一致。
uWSGI設置
參考文檔:
- https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/uwsgi/
- https://www.cnblogs.com/chenice/p/6921727.html
安裝uwsgi
如果使用虛擬環境,請在Django虛擬環境下運行;
pip3 install uwsgi
編寫測試文件test.py進行測試,驗證uwsgi是否正常安裝;
# test.py def application(env, start_response): start_response(‘200 OK‘, [(‘Content-Type‘,‘text/html‘)]) return [b"Hello World"] # python3 #return ["Hello World"] # python2
運行:
uwsgi --http :8000 --wsgi-file test.py
訪問驗證是否正常。
利用uwsgi啟動myproject進行驗證是否正常工作;
uwsgi --chdir=/path/to/myproject(此為manage.py文件所在父目錄) --module=myproject.wsgi:application --http=127.0.0.1:8000 --processes=2 --vacuum
如果無異常,編寫uwsgi配置文件代替命令行形式;
[uwsgi] # http = :8000 #直接提供http訪問,配置為http模式,端口自定(下同) socket = :8001 #和nginx進行通信,配置為socket模式 chdir = /path/to/myproject module = myproject.wsgi:application env = DJANGO_SETTINGS_MODULE=website.settings master = true processes = 4 vacuum = true max-requests = 5000 home = /path/to/django/python/virtual_env #(如/path/venv) daemonize = /var/log/uwsgi/website.log #後臺運行
使用配置文件啟動:
uwsgi --ini /path/to/uwsgi.ini
停止uwsgi,請使用kill 進程,優化請自己寫腳本進行控制。
Nginx配置
安裝nginx,可選擇nginx官方源
linux版安裝源配置
修改nginx配置文件,本配置以Debian9系統下Nginx=1.12版為例
- nginx默認配置位置
/etc/nginx
; - 進行
/etc/nginx/conf.d/
添加自己的網站文件或者修改default.conf,nginx默認會對所有下面的配置文件進行讀取和設置,配置文件以.conf結尾。
註:default.conf文件默認端口為80,如使用80端口,請修改或刪除default.conf或者在此基礎進行設置配置文件; 配置文件示例:
server { listen 80; server_name debian; charset utf-8; client_max_body_size 10M; location /media { alias /path/to/myproject/media; } location /static { alias /path/to/myproject/static; } location / { \# 此處記得和uwsgi裏的socket配置保持一致,另記得uwsgi裏啟用socket而不是http uwsgi_pass 127.0.0.1:8001; include uwsgi_params; } }
測試nginx配置文件是否正確;
nginx -t
啟動nginx服務,訪問進行驗證是否正常工作;
至此,Django + uWSGI + Nginx部署完成。
Django+uWSGI+Nginx 部署網站