Django Nginx+uwsgi 安装配置


Django Nginx + uwsgi 安装配置说明

简介

在开发Django网站时,将其部署到生产环境中是意义重大的一步。Django Nginx + uwsgi是一种非常常见,方便的部署方式。本文将介绍如何在Ubuntu 18.04上安装和配置Django Nginx + uwsgi。

前提条件

在执行本文中的操作之前,请首先确保您已经安装了以下软件包:

  • Python 3
  • pip
  • Nginx
  • uwsgi

步骤 1 - 创建 Python 环境并安装 Django

  1. 创建Python虚拟环境(可选)

    python3 -m venv env
    source env/bin/activate
    
  2. 安装Django

    pip install django
    

步骤 2 - 创建Django项目

  1. 使用以下命令创建一个新项目

    django-admin startproject myproject
    
  2. 进入myproject目录并创建新的应用程序

    cd myproject
    django-admin startapp myapp
    
  3. 编辑myapp/views.py文件,并添加如下代码

    from django.http import HttpResponse
    def home(request):
        return HttpResponse("Hello, World!")
    
  4. 在myproject/urls.py文件中添加以下代码

    from django.urls import path
    from . import views
    urlpatterns = [
        path('', views.home, name='home'),
    ]
    

步骤 3 - 配置uWSGI

  1. 创建一个名为uwsgi.ini的文件,并添加以下代码

    [uwsgi]
    #定义uwsgi 运行方式
    socket = /tmp/myproject.sock
    #指向Django项目的目录
    chdir = /path/to/myproject/
    wsgi-file = /path/to/myproject/wsgi.py
    #指定uwsgi进程数量
    processes = 4
    #指定uwsgi线程数
    threads = 2
    #定义uwsgi用户,与运行nginx的用户一致
    uid = www-data
    gid = www-data
    harakiri = 30
    access-log = /path/to/logs/access.log
    

    其中:

    • socket:指定uwsgi与nginx交互的方式,可以是socket或者http。
    • chdir:指定Django项目的路径。
    • wsgi-file:指定WSGI文件的位置。
    • processes:指定uwsgi进程数。
    • threads:指定uwsgi线程数。
    • uid和gid:指定uwsgi运行时的用户。
    • harakiri:指定超时时间。
    • access-log:指定uwsgi的日志文件路径。
  2. 启动uwsgi

    uwsgi --ini /path/to/uwsgi.ini
    

步骤 4 - 配置Nginx

  1. 启动Nginx并编辑 /etc/nginx/sites-available/default 文件

    sudo service nginx start
    sudo nano /etc/nginx/sites-available/default
    
  2. 在 server {} 配置块中添加以下内容

    server {
        listen 80;
        server_name example.com;
    
        location = /favicon.ico { access_log off; log_not_found off; }
        location /static/ {
            root /path/to/myproject;
        }
        location / {
            include         /etc/nginx/uwsgi_params;
            uwsgi_pass      unix:///tmp/myproject.sock;
       }
    

}

其中:

- listen:指定监听端口。
- server_name:指定域名。
- location /static/:指定静态文件的路径。
- location /:配置uwsgi_pass指向uwsgi的socket文件。

3. 重启Nginx服务

sudo service nginx restart


## 结论

现在,您的Django网站已经可以在Nginx中运行了。在浏览器中输入服务器的 IP 地址或域名,即可查看Django应用程序的默认页面。