nginx + gunicorn + django 2.0 踩坑

部署踩坑

提早準備

在本地可以 python(3) manage.py runservernginx

服務器端準備

安裝nginx

爲了防止python的某些包沒有安裝django

請先 sudo apt-get install python-devvim

而後 sudo apt-get install nginx服務器

使用uwsgi部署

求求你了 別用uwsgi 玩了4個小時 試了不下15種配置方法 無功而返app

如今尚未solution 跳過dom

使用gunicorn配置

相比於uwsgi, guncorn不能再好url

先進入虛擬環境source /path/to/env/bin/activespa

再安裝gunicornsudo pip(3) install gunicornunix

/path/to/env/bin/gunicorn --chdir /path/to/project --pythonpath /path/to/env/ -w4 -b0.0.0.0:8017 project.wsgi:application

這邊用的8017端口

配置nginx

新建一個配置文件sudo vim /etc/nginx/sites-available/your_conf.conf

your_conf.conf中寫下以下內容:

server {
  listen     80;
  server_name your_domain_name.com;
  charset     utf-8;

  client_max_body_size 75M;

  location /media {
      alias /path/to/project/media;
  }

  location /static {
      alias /path/to/project/static;
  }

  location / {
      uwsgi_pass unix:///home/tu/zqxt/zqxt.sock;
      include     /etc/nginx/uwsgi_params;
  }
}

listen默認通常都是80端口, 若是沒有media文件就不配置,這個static文件夾是運行python(3) manage.py collectstatic後生成的文件夾,由於沒有用到uwsgi,因此uwsgi_pass看心情隨緣,include按照這個來.

 

而後複製到/sites-enabled/中: sudo ln -s /etc/nginx/sites-available/your_conf.conf /etc/nginx/sites-enabled/your_conf.conf

 

ps: nginx配置通常都在/etc/nginx/中,/sites-available/裏面保存你可能要用到的configure文件

/sites-enabled/保存目前生效的configure文件

配置django中的路徑url

若是不配置這個會找不到static文件夾

from django.conf.urls.static import static
from your_project import settings

urlpatterns = [
   # your path here
   path('admin/', admin.site.urls, name='admin'),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

這是Django 2.0版本以後纔有的,詳情請見官方文檔 https://docs.djangoproject.com/en/2.0/ref/urls/

而後 service nginx restart重啓nginx,就能夠看到了網頁了.

(注意只能在gunicorn中配置的端口訪問 eg: your_domain_name.com:8017)

相關文章
相關標籤/搜索