1. 程式人生 > >Django+uWSGI+Nginx 部署網站

Django+uWSGI+Nginx 部署網站

本地調試 linu -- manage ase logs ket cli os.path

Django 1.11設置

保證Django在本地調試沒有問題;

當然這是前提^_^

收集靜態文件至指定文件夾

Django靜態文件設置具體參考:https://docs.djangoproject.com/en/1.11/ref/contrib/staticfiles/

  1. myproject/settings.py中設置靜態文件STATIC_URL和STATIC_ROOT設置;
    如:

    STATIC_URL = ‘/static/‘
    STATIC_ROOT = os.path.join(BASE_DIR, ‘static‘) #此文件夾需為空

  2. myproject/urls.py中添加static文件URL配置;

    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

  3. 運行python3 manage.py collectstatic將靜態文件收集到指定文件夾;

    python3 manage.py collectstatic #處於Django虛擬環境下

  4. 本地調試測試,網站是否正常;

    註:STATIC_ROOT不可與STATICFILES_DIRS目錄一致。

uWSGI設置

參考文檔:

  1. https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/uwsgi/
  2. https://www.cnblogs.com/chenice/p/6921727.html

安裝uwsgi

  1. 如果使用虛擬環境,請在Django虛擬環境下運行;

    pip3 install uwsgi

  2. 編寫測試文件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

    訪問驗證是否正常。

  3. 利用uwsgi啟動myproject進行驗證是否正常工作;

    uwsgi --chdir=/path/to/myproject(此為manage.py文件所在父目錄) --module=myproject.wsgi:application --http=127.0.0.1:8000 --processes=2 --vacuum

    uwsgi後面具體參數,請自行百度。
  4. 如果無異常,編寫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版為例

  1. nginx默認配置位置/etc/nginx
  2. 進行/etc/nginx/conf.d/添加自己的網站文件或者修改default.conf,nginx默認會對所有下面的配置文件進行讀取和設置,配置文件以.conf結尾。
    註:default.conf文件默認端口為80,如使用80端口,請修改或刪除default.conf或者在此基礎進行設置配置文件;
  3. 配置文件示例:

    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;
    }
    }
  4. 測試nginx配置文件是否正確;

    nginx -t

  5. 啟動nginx服務,訪問進行驗證是否正常工作;

至此,Django + uWSGI + Nginx部署完成。

Django+uWSGI+Nginx 部署網站