个性化阅读
专注于IT技术分析

在Dokku上部署Django

本文概述

该帖子最初是为Gun.io撰写的, 详细介绍了如何使用Dokku作为Heroku的替代品来部署Django应用。

移除广告

什么是Dokku?

几天前, 我被指到了Dokku项目, 这是一个“由Docker驱动的mini-Heroku”, 你可以将其部署在自己的服务器上以用作自己的私有PaaS。

你为什么想要自己的迷你Heroku?

  • 好吧, Heroku可能要花很多钱。它托管在云中, 你可能不希望应用程序离开房间;并且你无法100%控制平台的各个方面。
  • 也许你只是DIY类型的人。

无论如何, 杰夫·林赛(Jeff Lindsay)用不到100行bash代码共同入侵了Dokku!

Dokku将Docker与Gitreceive和Buildstep捆绑在一起, 成为一个易于部署, 派生/破解和更新的软件包。

你需要开始什么

你可以使用从AWS到自己专用网络上的计算机的任何内容。我决定将Digital Ocean用作此小项目的云托管服务。

托管Dokku的要求很简单:

  • Ubuntu 14.10 x64
  • SSH功能

Digital Ocean有一个预先配置的Droplet, 你可以使用它已经为Dokku环境提供了。随意使用它。我们将使用一台全新的服务器, 因此你可以在任何服务器上重新创建此过程, 而不仅仅是Digital Ocean上的一个。

让我们开始!

首先, 在上注册一个帐户

数字海洋

, 请确保将公共密钥添加到该帐户。

你可以按照此步骤执行第一到第三步

指南

如果需要创建新密钥, 可以帮助你进行设置。第四步将在以后派上用场。

接下来, 通过单击“创建液滴”来创建“液滴”(旋转节点)。确保选择“ Ubuntu 14.10 x64”作为图像。

我最初选择的是x32版本, 但无法安装Dokku(请参阅

https://github.com/progrium/dokku/issues/51

).

将ssh公钥添加到小滴中, 这样你就可以ssh进入计算机, 而无需每次登录都输入密码。Digital Ocean大约需要一分钟时间来启动计算机。

准备就绪后, Digital Ocean会通过电子邮件向你发送这样的信息, 并在电子邮件中包含机器的IP地址, 或者该机器将出现在“ Droplet”面板下。使用IP地址SSH进入计算机, 然后按照Digital Ocean的步骤四进行操作

ssh指南

.

安装Dokku

现在我们的主机已经设置完毕, 该安装和配置Dokku了。 SSH返回你的主机并运行以下命令:

$ wget -qO- https://raw.github.com/progrium/dokku/v0.2.3/bootstrap.sh | sudo DOKKU_TAG=v0.2.3 bash

无论你是否以root用户身份登录, 请确保使用sudo。有关更多信息, 请参见下面的“包装”部分。

安装可能需要两到五分钟。完成后注销主机。

请确保使用以下格式为用户上传公共密钥:

$ cat ~/.ssh/id_rsa.pub | ssh root@<machine-address> "sudo sshcommand acl-add dokku <your-app-name> "

将<machine-address>替换为主机的IP地址或域名, 并将<your-app-name>替换为Django Project的名称。

例如:

$ cat ~/.ssh/id_rsa.pub | ssh root@104.236.38.176 "sudo sshcommand acl-add dokku hellodjango"

移除广告

将Django应用程序部署到Dokku

对于本教程, 让我们按照Heroku上的Django入门指南进行初始Django应用程序设置。

同样, Dokku使用Buildstep, 该步骤使用Heroku构建包构建应用程序。它带有内置的Heroku Python Buildpack, 足以立即使用Django或Flask应用程序。但是, 如果你想添加自定义buildpack, 则可以。

创建一个Django项目并添加本地Git存储库:

$ mkdir hellodjango && cd hellodjango
$ virtualenv venv
$ source venv/bin/activate
$ pip install django-toolbelt
$ django-admin.py startproject hellodjango .
$ echo "web: gunicorn hellodjango.wsgi" > Procfile
$ pip freeze > requirements.txt
$ echo "venv" > .gitignore
$ git init
$ git add .
$ git commit -m "First Commit HelloDjango"

我们必须将Dokku作为Git远程服务器添加到主机上:

$ git remote add production dokku@<machine-address>:hellodjango

现在我们可以按下我们的代码:

$ git push production master

将<machine-address>替换为主机的地址或域名。如果一切顺利, 你应该在终端上看到应用程序已部署的消息:

=====> Application deployed:
       http://104.236.38.176:49153

接下来, 访问http:// <machine-address>:49153, 你应该看到熟悉的“欢迎使用Django”页面。现在, 你可以在本地处理你的应用程序, 然后将其推送到你自己的mini-heroku!。

包起来

最初, 我没有安装“ sudo”安装了Dokku:

$ wget -qO- https://raw.github.com/progrium/dokku/v0.2.3/bootstrap.sh | DOKKU_TAG=v0.2.3 bash

当我尝试推送到Dokku时, python构建包将无法尝试下载/构建python。解决方案是先卸载Dokku, 然后使用sudo重新安装它:

$ wget -qO- https://raw.github.com/progrium/dokku/v0.2.3/bootstrap.sh | sudo DOKKU_TAG=v0.2.3 bash

不幸的是, Dokku与Heroku的差距并不大。

例如, 由于Dokku没有像Heroku这样的客户端应用程序, 所有命令都需要直接在主机服务器上运行。

因此, 为了运行这样的命令:

$ heroku run python manage.py syncdb

你需要先通过SSH进入服务器。实现此目的的最简单方法是创建一个dokku命令:

alias dokku="ssh -t root@<machine-address> dokku"

现在, 你可以运行以下命令来同步数据库:

$ dokku run hellodjango python manage.py syncdb

Dokku确实允许你为每个应用程序分别配置环境变量。只需创建或编辑/ home / git / APP_NAME / ENV并填写以下内容:

export DATABASE_URL=somethinghere

Dokku仍然是一个年轻的平台, 因此希望它不断发展并变得越来越有用。它也是开源的, 所以如果你想贡献, 提出请求或在Github上发布问题。

赞(0)
未经允许不得转载:srcmini » 在Dokku上部署Django

评论 抢沙发

评论前必须登录!