Dokku Django
什么是Dokku
Dokku是一个于2013年发布的开源项目,旨在简化基于Docker的应用托管平台的设置。Dokku是用Ruby写的,使用Docker来管理应用和容器。
Dokku是一个基于容器的部署平台,用于运行在Docker容器中的应用程序。它类似于Heroku,但有一些关键的区别。其中一个主要区别是Dokku不使用构建包(buildpacks),而是依靠容器来构建和部署你的应用程序。
Dokku还比Heroku提供了一些更多的功能,比如在单个实例上运行多个应用程序以及轻松添加和删除插件等。总体而言,Dokku是一个很好的选项,适用于那些寻找一种简单的方法来部署基于Docker的应用程序的人。
要在Django中使用Dokku,你需要创建一个Profile,并将以下代码添加到其中:
web: gunicorn myproject.wsgi -b 0.0.0.0:$PORT
您还需要创建一个 requirements.txt 文件,并添加所有的依赖项。完成这个步骤后,您可以将代码推送到您的 Dokku 实例,它将自动部署。
Django 是什么
Django 是一个 Web 开发框架,可以帮助开发人员快速、轻松地创建 Web 应用程序。它是用 Python 编程语言编写的,是免费、开源软件,遵循 GNU 通用公共许可证发布。
如何将 Dokku 和 Django 结合使用
Dokku 是托管 Django 应用程序的一种很好的方式。本章将向您展示如何设置 Dokku 和 Django。我们还将向您展示如何使用 Dokku 的内置功能来改进您的开发工作流程。
如何设置 Dokku 和 Django 的开发环境
本节将向您展示如何设置 Dokku 和 Django 的开发环境。Dokku 是一种自托管的平台即服务(PaaS),它可以轻松部署 Web 应用程序。Django 是一个用于 Python 的 Web 框架,可以轻松构建 Web 应用程序。
要设置 Dokku 和 Django 的开发环境,您需要以下内容:
- 安装了 Ubuntu 16.04 的计算机。
- 域名。
- 您的域名的证书。
- 在计算机上安装了 Dokku。
- 在计算机上安装了 Django。
首先,您需要在计算机上安装 Ubuntu 16.04。您可以从 Ubuntu 网站下载:
https://www.ubuntu.com/download/desktop
下载 Ubuntu 的步骤如下:
- 前往官方 Ubuntu 网站(https://ubuntu.com/download)
- 选择要下载的版本
- 按照您的操作系统的说明进行操作
- 等待下载完成,这通常需要约 20 分钟
- 下载完成后,您可以在计算机上安装 Ubuntu
接下来,您需要购买一个域名。您可以在 NameCheap 网站上找到如何操作的说明:
https://www.namecheap.com/
在 Namecheap 上购买域名的步骤如下:
- 前往 Namecheap 的网站(https://www.namecheap.com/)
- 在搜索框中输入您想要购买的域名
- 查找可用域名并选择您想要的域名
- 将域名添加到购物车并进行结账
- 选择您的支付方式并完成支付过程
- 然后您将收到一封确认您购买的电子邮件
拥有域名后,您需要为您的域名购买证书。您可以在 Let’s Encrypt 网站上找到如何操作的说明:
https://letsencrypt.org/getting-started/
在 Let’s Encrypt 上为您的域名购买证书的步骤如下:
- 前往Let’s Encrypt的网站(https://letsencrypt.org/)
- 输入您想要使用证书保护的域名
- 按照提供的指示生成和安装证书
- 最后,配置您的Web服务器以使用新证书的安装步骤以在Dokku网站上安装Dokku。
一旦您拥有域名和证书,您需要在您的计算机上安装Dokku。您可以在Dokku网站上找到如何执行此操作的说明:
https://dokku.io/docs/
这里是在Dokku网站上安装Dokku的步骤:
- 前往Dokku的网站(https://dokku.viewdocs.io/)
- 下载并安装Dokku一键安装程序
- 按照提供的指示完成安装过程
- 安装完成后,您将能够在您的Web服务器上访问Dokku。
一旦您安装了Dokku,下一步是安装dokku-alt插件。该插件提供了一些在标准dokku安装中找不到的额外功能。
要安装插件,请运行以下命令:
git clone https://github.com/dokku-alt/dokku-alt.git /var/lib/dokku/plugins/dokku-alt
现在插件已安装,您需要配置它。配置文件位于 /etc/dokku-alt/dokku-alt.conf。您需要编辑此文件,并将 DOKKU_ALT_DOMAIN 变量设置为您的域名(例如,example.com)。此外,您还需要将 DOKKU_ALT_HOSTNAME 变量设置为您的主机名(例如,dokku.example.com)。
接下来是将您的 Django 项目配置为与 dokku-alt 合作。在您项目的设置文件(通常称为 settings.py)中,您需要添加以下几行:
import os
SECRET_KEY = os.environ['SEC
一旦您安装了Dokku,您需要在计算机上安装Django。您可以在Django网站上找到如何执行此操作的说明:
https://docs.djangoproject.com/en/dev/
以下是在Django网站上安装Django的步骤:
- 转到Django的官方网站(https://www.djangoproject.com/)。
- 按照说明下载和安装最新版本的Django。
- 安装完成后,您将能够在计算机上访问Django。
一旦您安装了Dokku和Django,您将准备好开始开发Web应用程序。
如何设置Django项目
设置Django项目可能是一项艰巨的任务。不过,通过几个简单的步骤,您可以在很短的时间内使您的项目运行起来。在本章中,我们将向您展示如何设置您的环境并创建您的第一个Django项目。
首先,您需要安装Python。如果您没有安装Python,您可以从Python网站上下载它。安装Python后,您需要安装Django。要安装Django,请打开终端并运行以下命令:
pip install django
接下来,您需要创建一个新项目。为此,请在您的终端中运行以下命令:
django-admin startproject myproject
这将创建一个名为myproject的新目录,其中包含您项目所需的所有文件和文件夹。
现在,您需要设置您的环境。在您的项目目录中,您会找到一个名为settings.py的文件。该文件包含了您项目的所有设置。您需要编辑这个文件来设置您的环境。
您需要做的第一件事是设置DJANGO_SETTINGS_MODULE环境变量。这个变量告诉Django要使用哪个设置文件。要设置这个变量,请在您的settings.py文件中添加以下行:
DJANGO_SETTINGS_MODULE=myproject.settings
接下来,您需要设置SECRET_KEY环境变量。此变量用于加密cookies和其他敏感数据。要设置此变量,请将以下行添加到settings.py文件中:
SECRET_KEY='your_secret_key'
最后,你需要设置ALLOWED_HOSTS环境变量。这个变量告诉Django哪些主机可以访问你的项目。要设置这个变量,请将下面的行添加到你的settings.py文件中:
使用Django模板的方法
Django模板是一种简单但功能强大的创建动态网页的方法。它们是用类似Python的语言编写的,并允许你在模板中插入Python代码以创建动态生成的内容。
要创建一个Django模板,请使用.html扩展名创建一个新文件。在模板中,你可以通过使用{% %}标记来插入Python代码。例如,要插入当前时间,你可以使用以下代码:
{% now %}
这将打印当前时间,格式为”Tue, 05 Dec 2017 13:27:10″。
你也可以使用{% load %}标记来加载其他模板。如果你在多个模板中重用常见的HTML片段,这将非常有用。
要在Django项目中使用模板,请将模板名称添加到settings.py文件中的TEMPLATES设置中。Django将自动加载模板并呈现它。
将Django应用程序部署到dokku
假设你的Django应用程序已经准备好并在本地计算机上运行,你可以将其部署到一个dokku实例。在开始之前,请确保你具备以下先决条件:
- dokku实例正在运行。
- 在您的本地计算机上已安装了dokku客户端。
- 在您的本地计算机上有Django应用程序的代码库。
现在让我们开始吧。你首先需要在Django项目的根目录下创建一个名为Procfile的文件。这个文件将告诉dokku如何运行你的应用程序。将以下行添加到Procfile中:
web: gunicorn myproject.wsgi -b 0.0.0.0:$PORT
这告诉dokku使用gunicorn来运行您的Django应用程序,并将其绑定到端口$PORT(当应用程序部署时,dokku将注入该端口)。接下来,在项目的根目录中创建一个名为requirements.txt的文件。该文件将包含您的Django应用程序所依赖的所有Python软件包的列表。例如:
Django==1.8.4
gunicorn==19.3
如何创建一个Dokku应用程序
假设您已经设置并访问了一个Dokku主机,从您的本地开发环境运行以下命令就可以创建一个新的应用程序:
dokku apps:create myapp
这将在Dokku服务器上创建一个新的远程Git存储库,并添加一个post-receive钩子,以便在推送代码时自动部署您的代码。 现在您可以将新创建的远程添加到本地Git存储库,并将代码推送到它:
git remote add dokku stash :myapp git push dokku master
Basic code
#!/bin/bash #
# Set app name #
app_name="my-dokku-app"
# Create the app #
dokku apps:create app_name
# Set environment variables (if any) #
dokku config:setapp_name ENV_VAR_NAME=value
# Add a database to the app (if needed) #
#dokku plugin:install https://github.com/dokku/dokku-postgres.git #
#dokku postgres: create app_name-database #
#dokku postgres:linkapp_name-database app_name #
# Deploy the app #
# Git repository #
#dokku git:remoteapp_name <repo-url> #
#dokku git: deploy app_name #
# Docker image #
#dokku storage:mountapp_name /var/lib/dokku/data/storage/app_name:/app
#dokku config:setapp_name DOKKU_DOCKER_OPTS="--insecure-registry <registry-url>"
#dokku tags:deploy $app_name <image-name> #
如何设置Dokku数据库
假设您已经部署和运行了一个Dokku应用程序,第一步是设置Dokku数据库。可以使用Dokku命令行工具来完成这个步骤。
首先,SSH登录到您的Dokku服务器,并导航到您的应用程序的文件夹:
cd /var/dokku/apps/my-app
然后,使用dokku
命令创建一个新的Postgres数据库:
dokku postgresql: create my-db
这将为您的应用程序创建一个名为my-db
的新的Postgres数据库。接下来,您需要配置您的应用程序以使用这个数据库。这可以通过设置DATABASE_URL
环境变量来完成:
dokku config: set my-app DATABASE_URL=postgres://postgres@dokku-postgresql-my-db:5432/my-db
将my-app
替换为您的应用程序名称,将my-db
替换为您的数据库名称。这将告诉您的应用程序在连接到Postgres时使用my-db
数据库。
现在,您的应用程序已配置为使用my-db
数据库,您可以使用数据填充它。有关如何执行此操作的更多信息,请参阅您特定的数据库管理系统的文档。
Dokku存储设置
部署应用程序的挑战之一是管理持久数据,例如文件上传、数据库数据和其他需要在应用程序重新启动后继续存在的文件。
为解决这个问题,Dokku提供了一个存储插件,允许您管理Dokku应用程序的持久性存储。使用Dokku存储插件,您可以在服务器上创建一个存储目录,然后将其挂载到特定的Dokku应用程序上。这样,您可以持久存储数据,并在应用程序重新启动后仍然可以访问。
以下是设置Dokku应用程序存储的步骤:
- 安装Dokku存储插件:Dokku存储是一个用于管理Dokku应用程序持久存储的Dokku插件。要安装它,您需要在Dokku服务器上运行命令dokku plugin: install https://github.com/dokku/dokku-storage.git。这将为您下载并安装插件。
- 创建存储目录:为了持久存储数据,您需要在服务器上创建一个目录。您可以使用任何您喜欢的位置,但建议使用一个不直接从互联网访问的位置,例如/var/lib/dokku/data/storage/。
- 将存储目录映射到Dokku应用程序:这一步涉及将您在上一步中创建的存储目录挂载到特定的Dokku应用程序上。您可以通过运行命令dokku storage: mount /var/lib/dokku/data/storage/:/app/storage来实现。命令中的是您想要挂载存储的Dokku应用程序的名称。/var/lib/dokku/data/storage/是存储目录的路径,/app/storage是应用程序中存储将被挂载的路径。
- 重新启动Dokku应用程序:为了应用您在上一步中所做的更改,您需要重新启动Dokku应用程序。您可以通过运行命令dokku ps: restart 来完成这个操作。这将重新启动应用程序并激活存储插件。
- 验证存储:在重新启动应用程序后,您可以通过访问Dokku应用程序中的/app/storage目录来验证存储是否成功挂载。您可以使用ls命令或任何其他文件管理工具来检查在目录中存储的数据是否持久,并且可以在应用程序重新启动后访问。
存储的基本代码
# Install the Dokku storage plugin #
dokku plugin: install https://github.com/dokku/dokku-storage.git
# Create a storage directory #
mkdir /var/lib/dokku/data/storage/
# Map the storage directory to the Dokku application
dokku storage:mount /var/lib/dokku/data/storage/:/app/storage
# Restart the Dokku application #
dokku ps:restart
# Verify the storage #
# (from inside the application) #
ls /app/storage
在dokku上访问Django Admin
要在dokku部署的应用程序中访问Django admin,您需要将Django admin的URL暴露到互联网,并使用用户名和密码进行安全保护。为此,您可以使用诸如Apache基本身份验证之类的身份验证插件,或者设置SSL证书并通过HTTPS提供Django admin。
一旦您设置了对Django admin的访问权限,您可以登录到管理界面并管理Django应用程序中的数据。这对于添加和编辑内容,管理用户以及修改存储在Django应用程序中的其他数据非常有用。
要在dokku部署的Django应用程序上访问Django admin界面,需要按照以下步骤操作:
- 在Dokku应用程序中设置DJANGO_SETTINGS_MODULE环境变量:您可以通过运行以下命令在Dokku中设置环境变量:
dokku config:set <app-name> DJANGO_SETTINGS_MODULE=<project-name>.settings
。将<app-name>
替换为您的Dokku应用程序的名称,将<project-name>
替换为您的Django项目的名称。 - 在Django设置文件中更新ALLOWED_HOSTS设置:您需要将Dokku应用程序的主机名添加到Django设置文件中的ALLOWED_HOSTS设置中。这将允许您的Django应用程序接受来自指定主机的请求。例如,如果您的Dokku应用程序部署在myapp.example.com,您将将myapp.example.com添加到ALLOWED_HOSTS设置中。
- 创建超级用户帐户:您需要在Django应用程序中创建一个超级用户帐户以访问管理界面。您可以通过运行以下命令来完成此操作:
dokku run <app-name> python manage.py createsuperuser
。 - 访问管理界面:完成上述步骤后,您可以通过在Web浏览器中访问
http://<app-name>.<domain>.com/admin
来访问Django管理界面,将<app-name>
替换为Dokku应用程序的名称,<domain>
替换为服务器的域名。您将被提示使用您在前一步中创建的超级用户帐户登录。
添加域名
将自定义域名添加到您的Dokku应用程序是将域名映射到Dokku服务器的IP地址的过程。这使用户可以使用可记忆且易于输入的域名访问您的应用程序,而无需记住服务器的IP地址。
要将自定义域名添加到您的Dokku应用程序中,请按照以下步骤操作:
- 购买一个域名:从域名注册商,例如GoDaddy、Namecheap或Google Domains购买域名。
- 配置域名服务器(DNS):配置你的域名的DNS设置,指向你的Dokku服务器的IP地址。通常可以在域名注册商的控制面板上完成。
- 将域名添加到Dokku:使用dokku domains: add命令将域名添加到你的Dokku应用程序中。例如,如果你的域名是example.com,你可以运行以下命令:dokku domains:add example.com。将替换为你的Dokku应用程序的名称。
- 重新启动Dokku应用程序:在添加域名后,你需要重新启动Dokku应用程序以应用更改。你可以使用以下命令完成:dokku ps:restart 。
- 验证域名:最后,你可以通过在网络浏览器中访问域名来验证域名是否配置正确。如果一切配置正确,你应该能够在自定义域名上看到你的Dokku应用程序。
基本代码
# Add the domain to the Dokku application
dokku domains:add <app-name> <domain-name>
# Verify the domain has been added
dokku domains <app-name>
使用Dokku和Django开发环境的一些好处是什么
使用Dokku和Django开发环境对您的项目能带来许多好处。通过将开发环境与生产环境保持同步,可以避免一些常见问题。此外,使用Dokku和Django开发环境可以帮助您了解更多关于Django以及它的工作方式的信息。
使用Dokku和Django,您可以创建一个强大的易于设置和使用的Web开发环境。
出于种种原因,Dokku和Django是一个完美的组合。Dokku是一个轻量级的平台即服务(PaaS),可以轻松部署和管理应用程序。Django是一个强大的Web开发框架,可以帮助您快速轻松地构建高质量的网站。当两者一起使用时,Dokku和Django为开发和部署Web应用程序提供了一种快速、简单和可靠的方式。
Dokku和Django一起使用的一些好处包括以下几点:
- 快速简单的部署: Dokku使应用程序的部署变得简单,而Django则提供了一个快速可靠的Web开发框架。
- 可扩展性: Django是一个可扩展的Web开发框架,可以处理大量的流量。
- 使用便捷: Dokku是一个轻量级PaaS,易于使用和配置。
- 灵活性: Dokku和Django提供了很大的灵活性,让您能够轻松自定义应用程序。
结论
总之,Dokku是一个强大而轻量级的PaaS解决方案,适用于希望快速轻松部署应用程序的开发人员。通过与Django结合使用,您可以利用Dokku的稳定性和可扩展性,同时使用Django提供的所有吸引人的开发框架功能。
由于其简单的设置过程、预配置环境和对多种语言的支持,Dokku是任何Web应用程序开发项目的理想选择。