介绍
Django是一个用Python编写的免费开源的Web框架。这个工具支持可伸缩性、可重用性和快速开发。
在本教程中,您将学习如何为一个博客网站建立与MySQL数据库的连接的初始基础。这将涉及使用django-admin
创建博客Web应用程序的骨架结构,创建MySQL数据库,并将Web应用程序连接到数据库。
Django将为您提供一个开发环境,用于开发您的博客Web应用程序,但在将博客发布到互联网之前,您需要采取更多步骤。
先决条件
要按照本教程,您需要:
- 一个Ubuntu 22.04服务器,具有一个非root
sudo
启用的用户和一个防火墙。请按照我们的Ubuntu 22.04初始服务器设置指南进行设置。 - MySQL安装用作数据库。您可以按照我们在如何在Ubuntu 22.04上安装MySQL的教程设置它。
- A Python environment set up. For this, follow our tutorial on How To Install Python 3 and Set Up a Programming Environment on Ubuntu 22.04
.
一切安装和设置完成后,您可以继续进行第一步。
步骤1 — 创建数据库
Django支持许多流行的数据库管理系统,但本指南侧重于将Django连接到MySQL数据库。为了做到这一点,您需要在MySQL实例上创建一个数据库,以及一个Django可以用来连接到数据库的MySQL用户配置文件。
为此,请使用以下命令连接到您的MySQL数据库,作为root MySQL用户:
当提示符变更时,您将知道自己在MySQL服务器中:
使用以下命令检查当前的数据库:
您的输出将类似于以下内容,假设您尚未创建任何数据库:
Output+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
默认情况下,您已经创建了4个数据库:information_schema
、MySQL
、performance_schema
和sys
。您不需要触摸这些数据库,因为它们包含对MySQL服务器本身很重要的信息。
相反,创建一个初始数据库来保存您的博客的数据。
要在MySQL中创建数据库,请运行以下命令,使用一个有意义的名称来命名你的数据库:
数据库成功创建后,输出将如下所示:
OutputQuery OK, 1 row affected (0.00 sec)
验证数据库现在是否已列为可用数据库之一:
blog_data
数据库现在应该在输出中列出:
Output+--------------------+
| Database |
+--------------------+
| information_schema |
| blog_data |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
接下来,创建一个单独的MySQL用户账户,Django将用来操作新的数据库。创建特定的数据库和账户可以在管理和安全方面支持您。在本指南中,我们将使用名称djangouser。您可以使用任何您喜欢的名称,但选择一个描述性的名称可能会有帮助。
您将创建这个账户,设置一个密码,并授予访问您创建的数据库的权限。首先,通过键入以下命令创建用户并设置他们的密码。请记得通过替换这个示例中的password
来选择一个强密码:
让数据库知道djangouser应该完全访问您设置的数据库:
现在您拥有一个专门为Django创建的数据库和用户账户。刷新权限,以便当前的MySQL实例了解您所做的最新更改:
完成后,您可以通过写入EXIT;
或按下CTRL + D
来退出MySQL服务器。
步骤2 —— 创建 MySQL 选项文件
与在 Django 配置文件中指定 MySQL 连接详细信息不同,您可以将它们存储在一个选项文件中。许多 MySQL 程序可以读取选项文件 —— 也称为配置文件 —— 获取启动选项或连接详细信息等信息。这样做很方便,因为您只需在一个地方存储数据库登录凭据。
使用您喜欢的文本编辑器打开 my.cnf
配置文件以更新 MySQL 凭据。这里我们将使用 nano
:
添加以下行并包括您的相关信息:
…
[client]
database = blog_data
user = djangouser
password = your_actual_password
default-character-set = utf8
请注意,utf8
被设置为默认编码。这是在 MySQL 中编码 Unicode 数据的常用方式。当您确定您的详细信息是正确的时候,请保存并关闭文件。如果您使用 nano
来编辑文件,则可以按 CTRL + O
保存文件,然后按 CTRL + X
关闭编辑器。
编辑完文件后,重新启动 MySQL 以使更改生效:
请注意,重新启动 MySQL 需要几秒钟时间,请耐心等待。
第三步 — 创建初始的 Django 项目框架
在这一步中,您将使用 django-admin
命令生成项目框架,为您的应用程序奠定基础。
导航至您想要构建博客应用程序的目录。在该目录中,创建一个特定的目录来构建应用程序。为您正在构建的应用程序命名一个有意义的目录名称。作为示例,我们将命名为 my_blog_app
:
现在,导航到新创建的目录:
接下来,进入您想要在 Django 中工作的编程环境。您可以使用现有的环境,也可以创建一个新的环境。以下命令创建一个名为 env
的新环境,但您应该使用对您有意义的名称:
创建完成后,您可以激活它:
如果尚未安装 Django,则现在将其安装到此环境中:
在 my_blog_app
目录中,运行以下命令生成项目:
验证它是否运行成功,通过导航到 blog/
目录:
然后运行 ls
来验证在项目文件夹内是否创建了必要的文件和目录:
输出将列出 blog
目录和一个 manage.py
文件:
Outputblog manage.py
现在,您已经创建了一个包含博客应用程序初始启动的项目目录,您可以继续进行下一步。
第4步 — 安装MySQL数据库连接器
为了在项目中使用MySQL,您需要一个与Django兼容的Python 3数据库连接器库。此步骤概述了如何安装一个这样的数据库连接器,mysqlclient
,它是MySQLdb
的一个分支版本。
首先,安装必要的MySQL开发头文件和库:
接下来,使用pip
安装wheel
包。 Wheel是Python中用于从Python包索引安装模块的打包格式。从wheel包安装Python程序通常比从其源代码构建包更快且更节省资源。为了安装和使用作为wheel包打包的程序,您首先需要确保安装了wheel
包:
然后继续安装mysqlclient
:
您的输出将类似于以下内容,验证客户端已正确安装:
Output...
Successfully installed mysqlclient-2.1.1
您现在已成功安装了MySQL客户端,使用了PyPi的mysqlclient
连接器库。
步骤5 — 编辑设置
之前运行django-admin
时,它会创建一个名为settings.py
的Django配置文件。您需要更改此文件中的一些默认设置,以便一切都能正常运行。
要编辑该文件,请使用您选择的文本编辑器打开文件的路径:
为了使您的博客具有与您所在地区关联的正确时间,您可以编辑settings.py
文件,以便它使用您当前的时区。您可以使用此时区列表作为参考。在我们的示例中,我们将使用America/New_York
时间。
在文件中,导航到文件底部附近的TIME_ZONE
字段:
...
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
...
修改TIME_ZONE
行,使其设置为您当前的时区。在本示例中,我们将使用纽约的时区:
...
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'America/New_York'
USE_I18N = True
...
保持文件打开,因为接下来,您需要为您的静态文件添加路径。从您的Django Web应用程序提供服务的文件称为静态文件。这可能包括呈现完整网页所需的任何文件,包括JavaScript、CSS和图像。
转到settings.py
文件的末尾并添加STATIC_ROOT
:
…
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
...
现在您已经添加了时区和静态文件路径,将您的 IP 添加到允许的主机列表中。导航到 settings.py
文件中标有 ALLOWED_HOSTS
的行,它将位于 settings.py
文件的顶部。在方括号之间添加您服务器的 IP 地址,用单引号括起来:
...
ALLOWED_HOSTS = ['your_server_IP_address']
...
接下来,添加 Python 的 OS 模块,该模块提供了各种目录功能。如果没有这个模块,当设置管理用户以开始使用 Django 接口时,您将收到错误提示。为此,您需要导入适用于您所在操作系统的 os
模块。在 from pathlib import Path
行上面添加 import os
行:
...
import os
from pathlib import Path
...
到目前为止,您已经编辑了 settings.py
文件,以便配置了正确的时区。您还添加了静态文件的路径,将您的 ip 地址
设置为应用程序的 ALLOWED_HOST
,并导入了 Python 的 OS 模块,以帮助稍后设置您的管理用户。
要添加到文件的最后一部分代码是数据库连接凭据,以将您的 Django 博客应用程序连接到 MySQL。为此,请查找文件中的 DATABASES
字典。默认情况下,它看起来像以下内容:
…
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
...
将 DATABASES
字典的 ENGINE
和 NAME
选项替换为以下行:
...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': '/etc/mysql/my.cnf',
},
}
}
...
'ENGINE': 'django.db.backends.mysql'
行告诉 Django 使用其内置的 MySQL 数据库后端。 read_default_file
选项指向 /etc/mysql/my.cnf
,这是您之前编辑过的 MySQL 选项文件。 这告诉 Django 在哪里找到相关的连接详细信息,以连接到您在第一步创建的 MySQL 数据库。
请注意,Django 以以下顺序读取数据库连接设置:
OPTIONS
NAME
、USER
、PASSWORD
、HOST
、PORT
- MySQL 选项文件
通过在示例中的 OPTIONS
设置中将 Django 指向您的 MySQL 选项文件,它将优先于任何 NAME
设置,否则如果您将其指向 OPTIONS
设置之外,它将覆盖选项文件。
此时,您可以保存并关闭文件。
接下来,通过运行以下命令检查迁移更改:
然后,运行 migrate
以确保更改通过:
现在您的更改已迁移,您可以创建一个用于 Django 管理界面 的管理用户。 使用 createsuperuser
命令执行此操作:
系统会提示您输入用户名、电子邮件地址和用户密码。
完成这些信息后,您可以继续调整防火墙设置以允许进行测试。
第6步 — 调整防火墙设置
在测试 Django 网络应用之前,您必须确保已经调整了防火墙设置。首先更改您的 ufw
设置以允许访问端口 8000
:
检查状态以确保这些权限设置已成功更新:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
8000 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
8000 (v6) ALLOW Anywhere (v6)
您的防火墙设置现在已经正确调整,可以进行下一步连接测试。
第7步 — 测试 MySQL 到应用的连接
现在,您可以验证 Django 中的配置是否正确地检测到了您的 MySQL 服务器。您可以通过运行服务器来进行此操作。如果失败,则意味着连接未正常工作。否则,连接是有效的。
首先导航至以下目录:
然后,运行以下命令:
您将收到类似以下的输出:
OutputPerforming system checks...
System check identified no issues (0 silenced).
July 19, 2022 - 13:26:08
Django version 4.0.6, using settings 'blog.settings'
Starting development server at http://your-server-ip:8000/
Quit the server with CONTROL-C.
注意:您会注意到输出中有未应用的迁移。不要担心,这不会影响应用程序的初始设置,您可以继续进行。
按照输出中的说明操作,并访问建议的链接,http://your-server-ip:8000/
,查看您的 Web 应用程序,并验证其是否正常工作。
如果您的页面看起来与上面的截图类似,则您的 Django 应用程序运行正常。
测试应用程序完成后,按下CTRL + C
停止runserver
命令。这将返回您到编程环境。
当您准备好离开 Python 环境时,您可以运行deactivate
命令:
退出编程环境将使您返回到终端命令提示符。
结论
在本教程中,您创建了 Django 博客的初始基础。您已经安装、配置并将 MySQL 连接到 Django 后端。您还在应用程序的settings.py
文件中添加了一些重要信息,例如TIME_ZONE
、ALLOWED_HOSTS
、import os
和数据库凭据,以将 Django 应用程序连接到 MySQL。您还调整了防火墙设置,以确保测试顺利进行。
现在,这些基本设置和配置已完成,您可以开始在 Django 应用程序中开发模型并应用迁移。