返回

轻松实现在Ubuntu 20.04上用Postgres、Nginx和Uvicorn设置一个ASGI Django应用程序

开发工具







## 前言

Django是一个功能强大的Python网络框架,它简化了Web应用程序的开发。Django附带了一个用于在本地测试代码的简化开发服务器,但不适合生产环境。在生产环境中,您需要一个更安全、更强大的Web服务器来托管您的Django应用程序。

在本教程中,您将学习如何在Ubuntu 20.04上使用Postgres、Nginx和Uvicorn设置一个ASGI Django应用程序。您将学习如何使用Postgres作为数据库,如何使用Nginx作为Web服务器,以及如何使用Uvicorn作为ASGI服务器。您还将学习如何配置Nginx和Uvicorn以安全地托管您的Django应用程序。

## 先决条件

* Ubuntu 20.04服务器
* 一个非root用户,具有sudo特权
* Python 3.6或更高版本
* PostgreSQL 10或更高版本
* Nginx
* Uvicorn

## 第一步:安装依赖项

首先,您需要安装Django、Postgres、Nginx和Uvicorn。您可以通过以下命令安装这些依赖项:

sudo apt update
sudo apt install python3-pip
sudo pip3 install django
sudo apt install postgresql postgresql-contrib
sudo apt install nginx
sudo apt install uvicorn


## 第二步:创建一个Django项目

现在,您可以创建一个新的Django项目。您可以通过以下命令创建一个新的Django项目:

django-admin startproject myproject


这将在您的当前目录中创建一个名为“myproject”的新Django项目。

## 第三步:配置Django项目

接下来,您需要配置您的Django项目。您可以通过编辑“myproject/settings.py”文件来配置您的Django项目。

在“settings.py”文件中,您需要设置以下选项:

* `DATABASES`:这是Django的数据库设置。您需要将`'default'`数据库的引擎设置为“django.db.backends.postgresql”。您还必须提供数据库名称、用户名和密码。
* `ALLOWED_HOSTS`:这是Django的允许主机设置。您需要将您的服务器的IP地址或域名添加到此设置中。

## 第四步:创建Django模型

现在,您可以创建您的Django模型。模型是Django中用于表示数据的类。您可以通过在“myproject/models.py”文件中创建类来创建模型。

例如,您可以创建一个名为“Article”的模型:

from django.db import models

class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_date = models.DateTimeField('date published')


## 第五步:创建Django视图

现在,您可以创建您的Django视图。视图是Django中用于处理请求和生成响应的函数。您可以通过在“myproject/views.py”文件中创建函数来创建视图。

例如,您可以创建一个名为“article_list”的视图:

from django.shortcuts import render

def article_list(request):
articles = Article.objects.all()
return render(request, 'article_list.html', {'articles': articles})


## 第六步:创建Django模板

现在,您可以创建您的Django模板。模板是Django中用于生成HTML响应的文本文件。您可以通过在“myproject/templates”目录中创建文件来创建模板。

例如,您可以创建一个名为“article_list.html”的模板:

{% extends "base.html" %}

{% block content %}

Article List

{% endblock %} ```

第七步:配置Nginx

现在,您可以配置Nginx来代理Django应用程序的请求。您可以通过编辑“/etc/nginx/sites-available/default”文件来配置Nginx。

在“default”文件中,您需要添加以下配置:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
    }
}

第八步:配置Uvicorn

现在,您可以配置Uvicorn来托管您的Django应用程序。您可以通过编辑“myproject/asgi.py”文件来配置Uvicorn。

在“asgi.py”文件中,您需要添加以下配置:

import os

from django.core.asgi import get_asgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')

application = get_asgi_application()

第九步:启动您的Django应用程序

现在,您可以启动您的Django应用程序。您可以通过以下命令启动您的Django应用程序:

python3 manage.py runserver 0.0.0.0:8000

第十步:测试您的Django应用程序

现在,您可以测试您的Django应用程序。您可以通过以下命令测试您的Django应用程序:

curl http://localhost:8000

结论

在本教程中,您学习了如何在Ubuntu 20.04上使用Postgres、Nginx和Uvicorn设置一个ASGI Django应用程序。您学习了如何使用Postgres作为数据库,如何使用Nginx作为Web服务器,以及如何使用Uvicorn作为ASGI服务器。您还学习了如何配置Nginx和Uvicorn以安全地托管您的Django应用程序。

我希望本教程对您有所帮助。如果您有任何问题,请随时给我留言。