介绍
Django 是一个功能齐全的 Python Web 框架,用于开发动态网站和应用程序。 使用 Django,您可以快速创建 Python Web 应用程序并依靠该框架完成大量繁重的工作。
在本指南中,我们将向您展示如何在 Ubuntu 16.04 服务器上启动并运行 Django。 安装后,我们将向您展示如何启动一个新项目以用作您网站的基础。
不同的方法
根据您的需要以及您希望如何配置开发环境,您可以通过多种不同的方式安装 Django。 这些具有不同的优势,一种方法可能比其他方法更适合您的具体情况。
一些不同的方法如下:
- 从包全局安装:官方的 Ubuntu 存储库包含 Django 包,可以使用传统的
apt
包管理器轻松安装。 这非常简单,但不如其他一些方法灵活。 此外,存储库中包含的版本可能落后于项目中可用的官方版本。 - 通过 pip 全局安装:
pip
工具是 Python 包的包管理器。 如果你安装了pip
,你可以很容易地在系统级别安装Django,供任何用户使用。 这应该始终包含最新的稳定版本。 即便如此,全球安装本质上不太灵活。 - 在 Virtualenv 中通过 pip 安装:Python
virtualenv
包允许您为各种项目创建自包含环境。 使用这项技术,您可以将 Django 安装在项目目录中,而不会影响更大的系统。 这使您可以轻松地提供每个项目的自定义和包。 与全局可访问的安装相比,虚拟环境增加了一些轻微的心理和过程开销,但提供了最大的灵活性。 - Development Version 通过 git 安装:如果你想安装最新的开发版本而不是稳定版本,你必须从
git
repo 获取代码。 这是获得最新功能/修复所必需的,可以在全局或本地完成。 但是,开发版本没有相同的稳定性保证。
考虑到上述注意事项和质量,请从以下说明中选择最适合您需求的安装方法。
先决条件
在开始之前,您应该在 Ubuntu 16.04 服务器上拥有一个具有 sudo
权限的非 root 用户。 要进行设置,请按照我们的 Ubuntu 16.04 初始服务器设置指南 。
当您准备好继续时,请按照以下步骤操作。
从包全局安装
如果您希望使用 Ubuntu 存储库安装 Django,该过程非常简单。
首先,用 apt
更新你的本地包索引:
sudo apt-get update
接下来,选择要与 Django 一起使用的 Python 版本。 对于 Python 2,键入:
sudo apt-get install python-django
相反,如果您想在 Django 中使用 Python 3,请输入:
sudo apt-get install python3-django
您可以通过键入以下内容来测试安装是否成功:
django-admin --version
Output1.8.7
这意味着该软件已成功安装。 您可能还注意到 Django 版本不是最新的稳定版本。 要了解如何使用该软件,请跳过学习如何创建示例项目。
通过 pip 全局安装
如果您希望全局安装最新版本的 Django,更好的选择是使用 Python 包管理器 pip
。 首先,我们需要安装 pip
包管理器。 刷新您的 apt
包索引:
sudo apt-get update
现在您可以安装pip
。 如果您打算使用 Python 版本 2,请使用以下命令进行安装:
sudo apt-get install python-pip
相反,如果您打算使用 Python 3,请使用以下命令:
sudo apt-get install python3-pip
现在你有了pip
,我们就可以轻松安装Django了。 如果您使用的是 Python 2,则可以键入:
sudo pip install django
如果您使用的是 Python 3,请改用 pip3
命令:
sudo pip3 install django
您可以通过键入以下内容来验证安装是否成功:
django-admin --version
Output1.9.6
如您所见,通过 pip
提供的版本比 Ubuntu 存储库中的版本更新(您的版本可能与上述不同)。
在 Virtualenv 中通过 pip 安装
也许在你的系统上安装 Django 最灵活的方法是使用 virtualenv
工具。 此工具允许您创建虚拟 Python 环境,您可以在其中安装所需的任何 Python 包,而不会影响系统的其余部分。 这允许您在每个项目的基础上选择 Python 包,而不管与其他项目的要求是否冲突。
我们将首先从 Ubuntu 存储库安装 pip
。 在开始之前刷新您的本地包索引:
sudo apt-get update
如果您打算使用 Python 版本 2,您可以通过键入以下命令来安装 pip
:
sudo apt-get install python-pip
相反,如果您打算使用 Python 版本 3,则可以通过键入以下命令来安装 pip
:
sudo apt-get install python3-pip
安装 pip
后,您可以使用它来安装 virtualenv
软件包。 如果你安装了 Python 2 pip
,你可以输入:
sudo pip install virtualenv
如果您安装了 pip
的 Python 3 版本,则应键入以下内容:
sudo pip3 install virtualenv
现在,每当您开始一个新项目时,您都可以为它创建一个虚拟环境。 首先创建并移动到一个新的项目目录:
mkdir ~/newproject cd ~/newproject
现在,通过键入以下内容在项目目录中创建一个虚拟环境:
virtualenv newenv
这会将 Python 的独立版本以及 pip
安装到项目目录中的隔离目录结构中。 我们选择将我们的虚拟环境称为 newenv
,但您应该将其命名为描述性的。 将使用您选择的名称创建一个目录,该目录将保存安装包的文件层次结构。
要将软件包安装到隔离环境中,您必须通过键入以下命令来激活它:
source newenv/bin/activate
您的提示应该更改以反映您现在处于虚拟环境中。 它看起来像 (newenv)username@hostname:~/newproject$
。
在您的新环境中,您可以使用 pip
来安装 Django。 无论您使用的是 Python 版本 2 还是 3,当您在虚拟环境中时,都应该将其称为 pip
。 另请注意,您 不需要 需要使用 sudo
,因为您是在本地安装:
pip install django
您可以通过键入以下内容来验证安装:
django-admin --version
Output1.9.6
要离开您的虚拟环境,您需要从系统上的任何位置发出 deactivate
命令:
deactivate
您的提示应该恢复到常规显示。 当您希望再次处理您的项目时,您应该重新激活您的虚拟环境,方法是回到您的项目目录并激活:
cd ~/newproject source newenv/bin/activate
开发版通过git安装
如果您需要 Django 的开发版本,则必须从其 git
存储库下载并安装 Django。
为此,您需要使用 apt
在您的系统上安装 git
。 通过键入以下内容刷新您的本地包索引:
sudo apt-get update
现在,我们可以安装git
。 我们还将安装 pip
Python 包管理器。 下载后,我们将使用它来处理 Django 的安装。 如果您使用的是 Python 2,则可以键入:
sudo apt-get install git python-pip
如果您使用的是 Python 3,则应键入以下内容:
sudo apt-get install git python3-pip
拥有 git
后,您可以克隆 Django 存储库。 在发布之间,此存储库将具有更多最新功能和错误修复,但可能会牺牲稳定性。 您可以通过键入以下命令将存储库克隆到主目录中名为 django-dev
的目录:
git clone git://github.com/django/django ~/django-dev
克隆存储库后,您可以使用 pip
安装它。 我们将使用 -e
选项以“可编辑”模式安装,这是从版本控制安装时需要的。 如果您使用的是 Python 版本 2,请键入:
sudo pip install -e ~/django-dev
如果您使用的是 Python 3,请键入:
sudo pip3 install -e ~/django-dev
您可以通过键入以下内容来验证安装是否成功:
django-admin --version
Output1.10.dev20160516172816
请注意,如果您希望在单个环境中安装 Django 的开发版本,您也可以将此策略与上面的 virtualenv
结合使用。
创建示例项目
现在您已经安装了 Django,我们可以简要地向您展示如何开始一个项目。
请按照以下与您使用的 Python 版本匹配的步骤操作。
蟒蛇2
您可以使用 django-admin
命令创建项目:
django-admin startproject projectname cd projectname
这将在您的当前目录中创建一个名为 projectname
的目录。 在其中,将创建一个管理脚本,并使用实际代码创建另一个名为 projectname
的目录。
笔记
如果您已经在为使用 virtualenv
命令创建的项目目录中,您可以通过键入此命令告诉 Django 将管理脚本和内部目录放入当前目录,而不需要额外的层(注意结尾点):
django-admin startproject projectname .
要在更新版本的 Django 上引导数据库(默认情况下使用 SQLite),您可以键入:
python manage.py migrate
如果 migrate
命令不起作用,您可能使用的是旧版本的 Django。 相反,您可以键入:
python manage.py syncdb
作为此过程的一部分,您将被要求创建一个管理用户。 选择用户的用户名、电子邮件地址和密码。
如果您使用上面的 migrate
命令,则需要手动创建管理用户。 您可以通过键入以下内容来创建管理用户:
python manage.py createsuperuser
系统将提示您输入用户名、电子邮件地址和用户密码。
跳到使用您的开发版本进行测试的部分。
蟒蛇 3
您可以使用 django-admin
命令创建项目:
django-admin startproject projectname cd projectname
这将在您的当前目录中创建一个名为 projectname
的目录。 在其中,将创建一个管理脚本,并使用实际代码创建另一个名为 projectname
的目录。
笔记
如果您已经在为使用 virtualenv
命令创建的项目目录中,您可以通过键入此命令告诉 Django 将管理脚本和内部目录放入当前目录,而不需要额外的层(注意结尾点):
django-admin startproject projectname .
要在更新版本的 Django 上引导数据库(默认情况下使用 SQLite),您可以键入:
python3 manage.py migrate
如果 migrate
命令不起作用,您可能使用的是旧版本的 Django。 相反,您可以键入:
python3 manage.py syncdb
作为此过程的一部分,您将被要求创建一个管理用户。 选择用户的用户名、电子邮件地址和密码。
如果您使用上面的 migrate
命令,则需要手动创建管理用户。 您可以通过键入以下内容来创建管理用户:
python3 manage.py createsuperuser
系统将提示您输入用户名、电子邮件地址和用户密码。
在 Django 设置中修改 ALLOWED_HOSTS
在测试应用程序之前,您需要修改 Django 设置中的指令之一。
通过键入以下内容打开设置文件:
nano ~/projectname/projectname/settings.py
在里面,找到 ALLOWED_HOSTS
指令。 这定义了可用于连接到 Django 实例的地址或域名的白名单。 任何带有不在此列表中的 Host 标头的传入请求都将引发异常。 Django 要求您设置它以防止某一类安全漏洞。
在方括号中,列出与您的 Django 服务器关联的 IP 地址或域名。 每个项目都应列在引号中,条目之间用逗号分隔。 如果您希望请求整个域和任何子域,请在条目的开头添加句点。 在下面的代码片段中,有一些注释掉的示例用于演示:
~/myproject/myproject/settings.py
. . . # The simplest case: just add the domain name(s) and IP addresses of your Django server # ALLOWED_HOSTS = [ 'example.com', '203.0.113.5'] # To respond to 'example.com' and any subdomains, start the domain with a dot # ALLOWED_HOSTS = ['.example.com', '203.0.113.5'] ALLOWED_HOSTS = ['your_server_domain_or_IP', 'second_domain_or_IP', . . .]
完成后,保存并关闭文件。
使用您的开发服务器进行测试
一旦你有了一个用户,你就可以启动 Django 开发服务器来看看一个新的 Django 项目是什么样子的。 您应该仅将其用于开发目的。
在尝试开发服务器之前,请确保在防火墙中打开端口。 如果您在初始服务器设置指南中使用 UFW,您可以通过键入以下内容打开相应的端口:
sudo ufw allow 8000
现在,启动开发服务器。
对于 Python 2,运行:
python manage.py runserver 0.0.0.0:8000
对于 Python 3,运行:
python3 manage.py runserver 0.0.0.0:8000
访问您的服务器的 IP 地址,然后在您的网络浏览器中访问 :8000
server_ip_address:8000
您应该会看到如下所示的内容:
现在,将 /admin
附加到 URL 的末尾以访问管理员登录页面:
server_ip_address:8000/admin
如果您输入刚刚创建的管理员用户名和密码,您应该会被带到该站点的管理员部分:
浏览完默认站点后,您可以通过在终端中键入 CTRL-C
来停止开发服务器。
您创建的 Django 项目为设计更完整的站点提供了结构基础。 查看 Django 文档以获取有关如何构建应用程序和自定义站点的更多信息。
结论
您现在应该在 Ubuntu 16.04 服务器上安装了 Django,它提供了创建强大的 Web 应用程序所需的主要工具。 您还应该知道如何启动一个新项目并启动开发人员服务器。 利用像 Django 这样的完整 Web 框架可以帮助加快开发速度,让您只专注于应用程序的独特方面。