Ubuntu 于 2016 年 4 月发布了其操作系统的最新长期支持 (LTS) 版本。该更新将 Ubuntu 带到了 16.04 版本,其最新代号为“Xenial Xerus”。 16.04 是第一个将 Python 3 作为默认 Python 安装的 Ubuntu 版本。
让我们使用这个最新的 Ubuntu 版本和 Python 3.5 版来启动一个新的 Django Web 应用程序项目并使用 Green Unicorn (Gunicorn) 运行它。
我们需要的工具
我们需要一些工具来完成我们的项目。不要担心安装这些,因为我们会在教程中逐步安装它们。截至 2017 年 4 月,这些工具及其当前版本为:
- Ubuntu 16.04.2 LTS (Xenial Xerus)
- Python 版本 3.5.1(Ubuntu 16.04.2 默认)。 Python 3.6 已经发布,但 Ubuntu 16.04.2 默认带有 3.5.1,所以我们将在本文中使用 3.5.1 版本。
- Django web 框架 version1.11
- Green独角兽(Gunicorn)版本19.7.1
如果您运行的是 Mac OS X 或 Windows,请使用虚拟化软件,例如 Parallels(这是我使用的,但它仅适用于 Mac OS X)或带有 Ubuntu .iso 文件的 VirtualBox。 16.04的amd64或者ori386版本都可以,但是我在这篇博文中使用amd64进行开发和测试。
当我们第一次启动时,我们应该看到这样的桌面屏幕。
打开终端以继续设置。
系统包
我们可以看到Ubuntu自带的python3版本,以及它的可执行文件存放的地方。
python3 --version which python3
我们的 Ubuntu 安装首先需要用于 Python 开发的系统包。系统会提示您输入超级用户密码,因为通过 apt 安装包需要受限的系统访问权限。
sudo apt-get install python3-pip python3-dev
输入y
,让系统包安装过程运行。
现在我们需要的基本系统包已经安装好了,所以我们可以继续安装特定于 Python 的依赖项。
虚拟环境
用于隔离和处理应用程序依赖关系的 Virtualenv 和 pip 刚刚通过系统包安装,因此我们现在可以使用它们来获取 Django 和 Gunicorn。
创建一个存放virtualenvs的目录,然后在里面放一个新的virtualenv。
# make sure pip and setuptools are the latest version
pip3 install --upgrade pip setuptools
# the tilde "~" specifies the user's home directory, like /home/matt
cd ~
mkdir venvs
# specify the system python3 installation
python3 -m venv venvs/djproject
激活虚拟环境。
source ~/venvs/djproject/bin/activate
我们应该看到我们的提示更改,以便我们知道 virtualenv 已正确激活。
我们的 Python 3 virtualenv 已激活,因此我们可以安装任何我们想要的依赖项,例如 Django 和 Gunicorn。
Django 和 Gunicorn
是时候将 Django 和 Green Unicorn 安装到我们的 virtualenv 中了。
pip install django gunicorn
没有错误是一个好兆头,一切都对我们有用。
创建一个名为djproject
的新 Django 项目,或者您想要为项目命名的任何名称。然后切换到新项目的目录。
django-admin startproject djproject cd djproject
我们可以使用python manage.py runserver
命令在开发服务器上运行Django。但是,改为使用 Gunicorn 启动 Django。
gunicorn djproject.wsgi
太棒了,现在我们可以在 Web 浏览器中的 localhost:8000
或 127.0.0.1:8000
地址打开我们的 shell 项目。
准备开发!
准备开发
这些是在 Ubuntu 16.04 上使用 Django 和 Gunicorn 开始开发的基础知识。如果您需要更深入的分步教程来将您的 Python Web 应用程序部署到生产环境,请查看《全栈 Python 部署指南》一书。
要弄清楚您的 Python 项目接下来要做什么,请阅读目录页面上的主题。
有问题吗?通过 Twitter@fullstackpython 或@mattmakai 与我联系。我也在 GitHub 上,用户名是 mattmakai。
看到这篇文章有什么问题了吗?在 GitHub 上创建此页面的源代码并提交拉取请求。