轻松实现在Ubuntu 20.04上用Postgres、Nginx和Uvicorn设置一个ASGI Django应用程序
2024-02-21 14:04:03
## 前言
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
-
{% for article in articles %}
- {{ article.title }} {% endfor %}
第七步:配置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应用程序。
我希望本教程对您有所帮助。如果您有任何问题,请随时给我留言。