如何在 Ubuntu 14.04 上部署 DocPad 应用程序

介绍

在本教程中,我们将学习如何将用 DocPad制作的应用程序部署到DigitalOcean上的标准64位Ubuntu 14.04图像中。

阅读本教程后,您应该能够作为非 root 用户在端口 80 上服务 DocPad,并确保如果您的 DocPad 应用程序崩溃,它将自动重新启动。

前提条件

在我们开始之前,您将需要以下内容:

您应该在本教程中作为 docpad 用户完成所有操作。

第1步:安装 Git、Node.js 和 NPM

在本节中,我们将安装 DocPad 的先决条件。

确保您的服务器的包列表更新:

1sudo apt-get update

安装 Git,这将允许您从Git存储库部署默认的DocPad应用程序或您自己的自定义应用程序。

1sudo apt-get install git

安装 Node.js 作为您的 Web 服务器:

1sudo apt-get install nodejs

请注意,我们正在安装nodejs而不是节点。

Node.js 现在可以从命令行使用nodejs命令。

为了做到这一点,我们可以创建一个从节点到Node.js的象征链接,这是必要的,以确保您的DocPad应用程序可以正确下载其所有插件依赖,因为其中一些称为节点:

1sudo ln -s /usr/bin/nodejs /usr/bin/node

有关如何在 Ubuntu 14.04 服务器上安装 Node.js 的更多信息和替代方法,请参阅文章(https://andsky.com/tech/tutorials/how-to-install-node-js-on-an-ubuntu-14-04-server)。

我们需要安装命令行界面为Node的包管理器(https://www.npmjs.com)下载我们的Node.js依赖:

1sudo apt-get install npm

步骤2:将 Node.js 绑定到端口 80

默认情况下,DocPad 应用程序在端口 9778 上运行,在此步骤中,我们将将 Node.js 绑定到端口 80,并在以后的步骤中,我们将配置我们的 DocPad 应用程序在端口 80 上运行。

若要将 Node.js 绑定到端口 80,请先确保 libcap2-bin 已安装:

1sudo apt-get install libcap2-bin

在大多数系统上,这已经安装了,然后将 Node.js 绑定到端口 80:

1sudo setcap cap_net_bind_service=+ep /usr/bin/nodejs

稍后在教程中,我们将配置我们的DocPad应用程序以使用端口80。

第3步:安装DocPad

接下来,我们将使用NPM来安装DocPad本身。

1sudo npm install -g docpad

清理用户的 docpad 主目录中的权限,因为我们使用 sudo 来安装 DocPad:

1sudo chown -R docpad:docpad ~

如果您选择了不同的用户来运行 DocPad,请用自己的用户名取代该用户和组。

第4步:创建你的DocPad应用程序

在本节中,我们将您的 DocPad 应用程序设置在服务器上,您可以从 Git 存储库中使用现有项目,或者从头开始创建一个新的测试应用程序。

创建您的项目的目录. 它可以被称为任何,但在这种情况下,我们将使用docpad_test. 然后移动到该目录。

1mkdir ~/docpad_test
2cd ~/docpad_test

步骤 4a – 下载现有 DocPad 应用程序及其依赖性

如果您有现有的 DocPad 应用程序,请按照以下步骤将其部署到您的服务器上:首先,我们需要从其 Git 存储库下载完成的应用程序:

1git clone path_to_git_repository

接下来,我们需要下载我们的 DocPad 应用程序的所有依赖:

1npm install

如果您的应用程序也使用 Bower 组件,请运行:

1bower install

步骤 4b – 创建一个新的 DocPad 应用程序

如果您还没有 DocPad 应用程序,您可以创建一个新的应用程序目录,在应用程序目录中启动一个新的 DocPad 应用程序:

1docpad run

如果这是您第一次运行 DocPad,请按您想要的方式回答交互式对话问题:

1Before we continue, have you read and agree to DocPad's Terms of Service (http://bevry.me/tos) and Privacy Policy (http://bevry.me/privacy)? [Y/n] y
2
3Would you like to subscribe to our newsletter and stay up to date with the latest releases and tutorials? [Y/n] n

让我们选择)因为它为我们创建了一个样本网站,我们可以立即看到在浏览器中工作的东西。

14

现在等待几分钟,DocPad 将构建和启动您的应用程序,您应该在成功部署结束时看到此输出:

 1info: Installed the skeleton succesfully
 2notice: Shutting down the global DocPad, and starting up the local
 3info: Welcome to DocPad v6.63.8 (local installation: /home/docpad/docpad_test/node_modules/docpad)
 4info: Contribute: http://docpad.org/docs/contribute
 5info: Plugins: cleanurls, coffeescript, downloader, eco, less, livereload, marked, partials, related, stylus, text
 6info: Environment: development
 7info: DocPad listening to http://0.0.0.0:9778/ on directory /home/docpad/docpad_test/out
 8info: LiveReload listening to new socket on channel /docpad-livereload
 9info: Generating...
10info: Generated 168/173 files in 15.012 seconds
11info: Watching setup starting...
12info: Watching setup
13info: The action completed successfully

该过程将继续在您的终端窗口中运行。

现在请访问您的 IP 地址或域名 9778 端口:

  • http://example.com:9778

您应该看到默认的 DocPad 主页:

Default DocPad home page

我们将在下一步更新应用程序以运行端口 80,以便用户在访问您的域时不需要指定端口。

您现在可以通过按 CTRL + C 来阻止 DocPad 服务器。

如果你想在应用程序目录中查看具有ls的文件,你应该看到 Bootstrap 骨骼生成的下列文件和目录:

1docpad.coffee LICENSE.md node_modules out package.json Procfile README.md src

我们的应用程序的源代码是 src。

步骤5 – 配置 DocPad 在端口 80 上运行

您需要将下列行添加到您的 docpad.coffee config 文件中,以便 DocPad 在端口 80 上运行您的应用程序。

1nano ~/docpad_test/docpad.coffee

在「docpadConfig = {}」块中添加行 port: 80. 该端口行必须位于该块中的第一个层面. 您可以添加它作为在 docpadConfig = {之后的第一个行。

1docpadConfig = {
2
3. . .
4
5    port: 80
6    
7. . .
8
9}

请确保您在应用程序目录中。使用以下命令运行 DocPad. 如果这是您第一次在服务器上运行 DocPad,请接受条款和条件,并确保您的应用程序可以运行:

1./node_modules/docpad/bin/docpad run

应用程序成功运行后,您应该能够导航到您的网站URL并在浏览器中查看您的网站。

如果你找不到它,请尝试导航到 http://example.com:9778. 如果你在那里看到它,那是因为你的端口在你的docpad.coffee文件中没有正确配置。

现在通过按 Ctrl + C 来杀死这个过程. 在下一节中,我们将使应用程序成为一个服务,而不是每次都需要从命令行开始。

步骤 6 – 运行 DocPad 作为 Upstart 服务

在这最后一步中,我们将为 DocPad 应用程序创建一个 Upstart 脚本,这将允许您从命令行运行应用程序的启动、停止、重新启动等命令。它将在您的服务器的背景中运行,因此您不必保持 SSH 连接开放。

创建 Upstart 脚本:

1sudo nano /etc/init/docpad_test.conf

添加以下内容:

 1description "DocPad Test Application"
 2
 3start on (local-filesystems and net-device-up IFACE=eth0)
 4stop on runlevel [!12345]
 5
 6# If the process quits unexpectedly trigger a respawn
 7respawn
 8
 9env HOME=/home/docpad/
10chdir /home/docpad/docpad_test/
11
12setuid docpad
13setgid docpad
14
15exec /home/docpad/docpad_test/node_modules/docpad/bin/docpad run
  • 描述: 输入此服务的描述 * env HOME: 您的 DocPad 用户的首页目录 * chdir: 应用程序根目录 * setuidsetgid: 您的 DocPad 用户(该组应该有相同的名称) * exec: 我们想要运行的 DocPad 版本的完整路径;这与我们之前启动应用程序的命令相同,但它使用了完整的路径

更多关于 Upstart,请参阅 这篇文章

如果您将该文件命名为docpad_test.conf,则应使用相应的服务名称:

1sudo service docpad_test start

您需要等待大约 30 秒钟才能生成您的 DocPad 应用程序;此时间将取决于您的应用程序的大小,并需要大约与您手动启动它时一样的时间:\node_modules/docpad/bin/docpad run。

等待几秒钟后,在浏览器中导航到您的域或 IP 地址,您应该看到您的 DocPad 生成的网站。

如果你想,发送一个sudo重新启动到你的服务器,并确保应用程序自动备份。

结论

您现在应该能够创建一个新的 DocPad 应用程序或克隆一个现有的应用程序,将其部署到您的 Ubuntu 服务器上,并可以在您的域中访问它。

要开始使用 DocPad 构建您的网站,请参阅 文档

Published At
Categories with 技术
Tagged with
comments powered by Disqus