在我们的应用让全世界看到并准备好让用户注册并创建符合他们内心内容的帖子之前,我们还有几个步骤要完成。
在本章中,我们将执行以下操作以启动并运行应用:
- 我们将在 Cloudant 中建立一个帐户,用于存储应用的 CouchDB 数据库,并为应用做好准备
- 我们将向项目中添加一个配置类,以使用环境变量驱动应用的设置
- 我们将使用 PHPFOG 创建一个帐户来托管我们的应用
- 我们将配置 Git 以连接到 PHP Fog 的 Git 存储库并部署我们的应用
正如您所料,在本章中,我们将进行大量的帐户设置和代码调整。
在我们开始之前
对于任何应用或数据库部署,都有多种选项供您选择。每种选择都有其优缺点。我想用一些知识武装你,而不是直接开始设置服务,以防有一天你想换一种不同的服务。
在过去的几年里,云已经成为科技行业中使用和滥用最多的术语之一。为了完全理解云这个术语,你必须阅读大量的研究论文和文章。但为了简单起见,术语云描述了从传统的单租户方法(使用专用主机)到可扩展、多租户和多平台主机的转变。CouchDB 本身就是一个可以支持云架构的可伸缩数据库的完美例子。我们的应用也是云解决方案的一个很好的候选者,因为我们不在本地存储任何东西,并且我们的应用没有任何特殊的依赖关系。
考虑到这一点,我们将为应用和数据库托管使用云服务。其中一个额外的好处是,我们可以在不支付任何费用的情况下启动并运行我们的应用,而且我们只需要在应用成功后开始支付。这一点都不坏!
让我们快速讨论一下如何处理我们的应用和 CouchDB 托管,以及我们可以使用的选项。
应用托管
说到在云中托管 web 应用,有无数种方法可以做到这一点。由于我们不是服务器安装天才,我们希望使用一个具有少量安装的高回报系统。考虑到这一点,我们将使用平台即服务(PaaS)。有很多 PaaS 解决方案,但目前 PHP 开发人员的最佳选择是 Heroku 和 PHP Fog。
赫罗库http://www.heroku.com 是将 PaaS 带到聚光灯下的创新者。他们使用 Cedar 堆栈支持 PHP 应用。但是,因为它不是一个特定于 PHP 的堆栈,所以我们可能更明智地选择另一个提供商。
PHP 雾http://www.phpfog.com 在我看来,是开发 PHP 应用的可靠 PaaS,因为它们非常专注于 PHP。它们支持各种现成的 PHP 应用框架,具有 MySQL 托管(如果您的应用需要的话),并且通常是为了提供一个可靠的开发环境,特别是为 PHP 开发人员。
考虑到所有这些,PHPFOG 将成为我们在本项目中使用的应用托管解决方案。
CouchDB 托管
与应用托管相比,CouchDB 托管的解决方案要少得多,但幸运的是,它们都是非常可靠的产品。我们将讨论的两项服务是 Cloudant 和 Iriscoch。
云雀http://www.cloudant.com 是云计算中 CouchDB 最强大的解决方案之一。它们提供了我们在本书中使用过的熟悉工具,如 Futon 和命令行,并具有随着数据增长而扩展数据的能力。Cloudant 的独特之处在于,当您的应用需要某些特殊功能时,它们提供定制解决方案,而 Cloudant 是 CouchDB 本身的较大贡献者之一。
虹膜床http://www.iriscouch.com 还允许在云中免费托管 CouchDB。不幸的是,他们刚刚开始提供 Couchbase 服务器作为他们的基础设施,它构建在 CouchDB 的大部分核心之上。虽然我绝对喜欢 Couchbase 及其对核心 CouchDB 技术的增强,但我们的任务是在本书中只使用 CouchDB。但是,如果你发现自己在未来的 Couchbase 增强功能市场上,那么绝对值得一看。
因为我过去使用过 Cloudant,并且知道它可以处理什么,所以我们将在这个项目中使用它。
一般来说,我们将在本章中执行的设置与他们的任何竞争服务都相对类似。因此,如果您决定以后再切换,您应该能够很好地处理它,而不会出现太多问题。
使用 Cloudant 托管数据库
在本节中,我们将设置一个 Cloudant 服务器,并为应用连接做好准备。要做的设置非常少,我们在书的早期设置 CouchDB 数据库时所采取的步骤很有希望看起来很熟悉。
开始使用 Cloudant
创建一个 Cloudant 帐户非常简单,但是让我们来浏览一下,以便大家都在同一页上。
- Start by going to https://cloudant.com/sign-up/, and you'll see the signup page.

- Cloudant 只需要一些基本信息来创建您的帐户。首先输入用户名。这将用作您的唯一标识符和指向 Cloudant 帐户的链接。我建议你选择你的名字或公司的名字。
- Fill in the rest of the information on the page, and click the sign up button at the bottom of the page when you're ready!
您已经完成了,应该查看 Cloudant 仪表板。从这里,您可以管理您的帐户并创建新的数据库。

创建用户数据库
我们现在有了全新的 Cloudant 帐户,但我们还没有任何数据库。更糟糕的是,我们甚至没有我们的 _users数据库。我们需要做的就是创建一个新的 _users数据库,其余的由 Cloudant 处理。从技术上讲,我们可以通过 Cloudant 的接口完成这个过程,但是让我们使用命令行,因为它更通用。
- 打开终端。
- Run the following command, and replace the two instances of username and the one instance of password, so that Cloudant knows who you are and what account you are trying to use:
curl -X PUT https://username:[email protected]/_users
终端将通过返回一条成功消息让您知道您的数据库已创建:
{"ok":true}
伟大的您的 _users数据库现在已创建。请记住,我们还需要另一个名为 verge的数据库来存储所有数据。接下来我们创建 verge数据库。
创建边缘数据库
您需要在您的帐户中创建另一个数据库,这次称之为 verge。
有一个英雄,你自己试一试
现在,创建另一个数据库应该很容易。按照我们在创建 _users数据库时所做的相同步骤进行尝试,但将数据库名称改为 verge。
如果您觉得卡住了,我马上给您看一下命令行语句。好吧,进展如何?让我们回顾一下创建 verge数据库所需执行的步骤。
- 打开终端。
- You should have ran the following command and replaced the two instances of username and the one instance of password, so that Cloudant would know who you are and what account you are trying to use:
curl -X PUT https://username:[email protected]/verge
当您看到一条熟悉的成功消息时,终端应该向您保证一切正常,如下所示:
{"ok":true}
在 Cloudant 上使用蒲团
从命令行管理内容可能有点乏味。幸运的是,Cloudant 还和我们的老朋友 Futon 一起来了。要到达 Cloudant 上的 Futon,请执行以下步骤:
- Log in, and go to your dashboard.

- Click on one of your database names; for this example, let's use
verge.

- 这是数据库详细信息页面-当文档出现在数据库中时,它们将显示在此页面上。
看起来眼熟吗?这是我们在当地使用的同一个大蒲团。

配置权限
现在我们在生产数据库上生活,配置在生产服务器上工作的权限是非常重要的。如果我们不保护我们的数据库,那么我们的用户就很容易阅读,而这不是我们想卷入的事情。
幸运的是,Cloudant 通过以下方式为我们解决了所有这些问题:
- 因为我们已经创建了一个帐户,数据库不再处于
Admin Party模式 - 默认情况下,Cloudant 为我们的
admin帐户管理_users数据库,但没有其他帐户可以访问它
我们很幸运,Cloudant 有我们的支持!但是,如果您决定推出自己的 CouchDB 实例,请务必回顾第 3 章、开始使用 CouchDB 和 Futon,并遵循我们为保护本地环境所采取的步骤。
然而,我们确实需要更新我们的 verge数据库,以便用户可以在该数据库中读取、创建和写入。
- 登录到您的 Cloudant 帐户,然后转到您的仪表板。https://cloudant.com/#!/仪表板。
- 点击
verge数据库。 - 点击权限管理数据库权限。
- Update the Permissions for Everyone else by checking the boxes under Read, Create, and Write. Make sure to leave Admin unchecked, so that normal users can't alter our database structure and design documents. The end result should look similar to the following screenshot:

配置我们的项目
现在我们已经建立了生产数据库,我们的代码需要知道如何连接到它。我们只需更改 Bones库中的硬编码值,并在每次希望在本地开发或部署到生产环境时来回更改。但是,相信我,你不想经历这样的麻烦,更重要的是,我们不想在代码中存储任何用户名或密码;为此,我们将使用环境变量。环境变量是一组动态命名的值,允许您从承载环境的应用定义变量。让我们创建一个类,它允许我们使用环境变量,这样我们的代码就没有敏感信息,应用也很容易配置。
行动时间-创建配置类
插入一个简单的配置类实际上对我们来说非常容易,因为到目前为止我们已经编写了所有的代码。让我们一起浏览一下它的创建过程。
- 首先在我们的
lib文件夹(lib/configuration.php中创建一个名为configuration.php的新配置文件。 - 现在,让我们为我们的类创建名为
Configuration的脚手架。
<?php
class Configuration {
}
- 让我们浏览并创建一些描述性配置变量。我们可以添加更多,但让我们现在就添加我们需要的。
<?php
class Configuration {
private $db_server = ';
private $db_port = '';
private $db_database = '';
private $db_admin_user = '';
private $db_admin_password = '';
}
- 现在,复制访问本地 CouchDB 实例所需的登录信息;我的类似如下:
<?php
class Configuration {
private $db_server = '127.0.0.1';
private $db_port = '5984';
private $db_database = 'verge';
private $db_admin_user = 'tim';
private $db_admin_password = 'test';
}
- 让我们使用一个特殊的 _get 函数来检查是否设置了环境变量,并返回该变量而不是默认值。如果不是,它将返回我们在这个类中定义的默认值。
<?php
class Configuration {
private $db_server = '127.0.0.1';
private $db_port = '5984';
private $db_database = 'verge';
private $db_admin_user = 'tim';
private $db_admin_password = 'test';
public function __get($property) {
if (getenv($property)) {
return getenv($property);
} else {
return $this->$property;
}
}
}
刚才发生了什么事?
我们刚刚创建了一个名为 configuration.php的简单配置类,并创建了一个名为 Configuration的类的外壳。接下来,我们为数据库的配置创建了一些变量,我们制作了 public,因为我们可能需要在不同的地方使用这些变量。然后,我们用访问本地 CouchDB 实例的信息填充这些变量的默认值。然后我们加入了这门课的魔力。我们创建了一个 __get函数,该函数覆盖类上的标准 get操作。此函数使用 getenv函数检查服务器,查看是否在环境变量中设置了该变量(我们将简要介绍如何执行此操作)。如果有同名的环境变量,我们将其返回给调用函数;如果不是,那么我们只返回默认值。
Configuration类是一个很好且简单的类,它可以完成我们需要的一切,而不会过于复杂。接下来,让我们继续确保我们的应用知道如何访问和使用这个类。
行动时间-将配置文件添加到骨骼
将新的配置类添加到我们的应用非常简单。现在,我们只需要将它添加到我们的 __construct()of骨骼中,我们应该能够在整个项目中开始使用这个类。
- 打开
lib/bones.php,看看文件的开头,我们告诉我们的图书馆在哪里可以找到其他lib文件。我们需要在这里添加配置类。
require_once ROOT . '/lib/bootstrap.php';
require_once ROOT . '/lib/sag/src/Sag.php';
require_once ROOT . '/lib/configuration.php';
- 让我们确保定义
$config in骨骼的公共变量,以便在需要时可以在其他文件中使用它们。
class Bones {
private static $instance;
public static $route_found = false;
public $route = '';
public $method = '';
public $content = '';
public $vars = array();
public $route_segments = array();
public $route_variables = array();
public $couch;
public $config;
- 让我们看一看文件中稍微向下一点的
__construct()方法。在这个方法中(就在 Sag 实例化之前),让我们创建一个Configuration类的新实例。
public function __construct() {
...
$this->config = new Configuration();
$this->couch = new Sag('127.0.0.1','5984');
$this->couch->setDatabase('verge');
}
- 现在,我们的代码已经了解了配置类,我们只需要将变量放在正确的位置,就可以开始运行了。让我们告诉 Sag 如何使用配置类连接到 CouchDB。
public function __construct() {
$this->route = $this->get_route();
$this->route_segments = explode('/', trim($this->route, '/'));
$this->method = $this->get_method();
$this->config = new Configuration();
$this->couch = new Sag($this->config->db_server, $this->config->db_port);
$this->couch->setDatabase($this->config->db_database);
}
- 还有几个地方需要更新代码,以便它使用配置类。记住,我们在
classes/user.php中有admin用户名和密码,用于创建和查找用户。让我们先看一下classes/user.php中的注册函数来清理这个问题。一旦我们插入配置类,函数应该类似于以下内容:
public function signup($password) {
$bones = new Bones();
$bones->couch->setDatabase('_users');
$bones->couch->login($bones->config->db_admin_user, $bones->config->db_admin_password);
- 使用
config类需要调整的最后一个位置是classes/user.php文件末尾的get_by_username函数。
public static function get_by_username($username = null) {
$bones = new Bones();
$bones->couch->login($bones->config->db_admin_user, $bones->config->db_admin_password);
$bones->couch->setDatabase('_users');
- 我们刚刚删除了对
ADMIN_USER和ADMIN_PASSWORD的所有引用,这是我们在index.php顶部定义的。我们不再需要这些变量,所以让我们切换到index.php并从文件顶部删除ADMIN_USER和ADMIN_PASSWORD。
刚才发生了什么事?
我们刚刚编写了应用的最后几行代码!在本节中,我们确保 Bones 能够完全访问我们最近创建的配置文件 lib/configuration.php。然后,我们创建了一个公共变量 $config,以确保我们可以访问应用中任何位置的配置类。在 $config变量中存储了配置类之后,我们继续浏览代码中硬编码数据库设置的地方。
增加对 Git 的更改
因为我们刚刚编写了代码的最后几行,所以我将非常痛苦,并将确保您已将我们的所有代码完全提交给 Git。否则,当我们很快部署代码时,可能不是所有的文件都能进入生产服务器。
- 打开终端。
- 使用通配符添加项目中的所有剩余文件。
git add .
- 现在,让我们告诉 Git 我们做了什么。
git commit m 'Abstracted out environment specific variables into lib/configuration.php and preparing for launch of our site 1.0!'
使用 PHP Fog 托管应用
我们的代码都是最新的,随时可以部署。我们只需要一个地方来实际部署它。正如我前面提到的,我们将使用 PHPFOG,但是可以自由地探索您可以使用的其他选项。安装和部署过程与大多数 PaaS 提供商相同。
建立 PHP Fog 账户
设置 PHP Fog 帐户与设置 Cloudant 帐户一样简单。
- Start by going to https://www.phpfog.com/signup.

- Create an account by filling in each field. When you are finished, click on Register. You'll be forwarded on to create your first app.

- You'll notice that there are a variety of starter applications and frameworks that allow us to jump in and create the scaffolding of a PHP application. We're just going to use our own code, so click on Custom App.

- 我们的应用几乎已经创建完毕,我们只需要给 PHP Fog 提供更多的信息。
- 您会注意到 PHPFOG 要求为 MySQL 提供密码。因为我们在这个应用中没有使用 MySQL,所以我们可以输入一个随机密码或任何其他字符。有一点很有帮助,那就是将来某一天,如果您想在项目中使用 MySQL 来存储一些关系数据,只需单击几下鼠标,就可以在同一个应用环境中进行托管。记住,如果你使用得当,MySQL 和 CouchDB 可以成为最好的朋友!
- Next, PHP Fog will ask for your domain. Each application will have a short URL hosted on phpfogapp.com. This is totally fine for us in the short term, and when we're ready to roll out our application with a full domain name, we can do that through PHP Fog's Domain Name section. When creating a domain for your application, PHP Fog requires it to be unique, so you'll need to come up with your own domain. You could do something like
yourname-verge.phpfogapp.com, or you can get especially clever and create an app with the name of your favorite mythological creature. This is a popular practice, so that nobody can randomly find your application while you're still fixing bugs and getting ready to launch.

- When you are ready, click on Create App, and your application will be created.

- That's all it takes! Your application is getting ready to start. You'll notice that PHP Fog will say Status: Preparing App... for just a few moments, and then it will change to Status: Running.

创建环境变量
随着 PHP Fog 应用的启动和运行,在将代码推送到服务器之前,我们需要执行最后一项配置。还记得我们在配置项目时设置的所有环境变量吗?我们需要在 PHPFOG 中设置它们,以便我们的应用知道如何连接到 Cloudant。
为了让您管理环境变量,您需要首先导航到项目的应用控制台,这是您创建第一个应用后我们停止的地方。
点击环境变量,进入环境变量管理部分。

您会注意到,PHP Fog 为我们创建的 MySQL 数据库的环境变量已经设置好了。我们只需要为 Cloudant 输入环境变量。名称必须与本章前面的配置类中定义的名称相同。
让我们从添加 db_server环境变量开始。我的 db_server位于https://timjuravich:[email protected],所以我会在名称和值文本字段中输入这些详细信息。

让我们为配置文件中的每个变量继续这个过程。总而言之,以下是您需要在此处输入的环境变量:
db_server:这将是您的 Cloudant URL,同样,我的是https://timjuravich:[email protected]db_port:这将被设置为5984db_database:这是存储所有内容的数据库,应该设置为vergedb_admin_user:这是admin用户的用户名。在我们的例子中,这被设置为 Cloudant 管理员用户名的值db_admin_password:这是上述admin用户的密码
完成后,点击保存更改,即可设置您的环境变量。有了这些,我们就可以部署到 PHP Fog 了。
部署到 PHP Fog
部署到 phpfog 是一个非常简单的过程,因为 phpfog 使用 Git 进行部署。很好,我们的项目已经用 Git 建立并准备就绪。我们只需要告诉 PHP 我们的 SSH 密钥,以便它知道如何识别我们。
将我们的 SSH 密钥添加到 PHP Fog
PHPFOG 使用 SSH 密钥就像 GitHub 一样来识别和验证我们。因为我们在本书的早期已经创建了一个,所以我们不需要再创建一个。
- You can start by clicking on MY ACCOUNT in the top-right corner and then clicking on SSH Key on the next page. You'll be presented with the following page in which you can enter your SSH key:

- Enter a value for Nickname. You should use something simple but descriptive, such as
Tim's Macbook. You'll thank yourself later for keeping this organized, especially if you start to collaborate with other developers on this project.
您需要获取公钥文本框的公钥。幸运的是,我们可以通过终端中的一个简单命令来实现这一点。
- 打开终端。
- 运行以下命令,您的公钥将被复制到剪贴板。
pbcopy< ~/.ssh/id_rsa.pub
- 使用剪贴板中的公钥,只需单击文本框并粘贴值。
- 最后,在表单的底部,有一个复选框,上面写着给这个键写访问权。如果您希望计算机能够将代码推送到 PHPFOG(我们希望能够这样做),则需要对此进行检查。
- 单击保存 SSH 密钥,我们就可以开始部署应用的最后步骤了。
连接到 PHP Fog 的 Git 存储库
由于我们已经准备好了 Git 存储库,我们需要做的就是告诉 Git 如何在 PHP Fog 上连接到存储库。让我们通过向名为 phpfog的工作目录添加一个远程存储库来完成这个过程。
从 Php Fog 获取存储库
当我们在 PHPFOG 上创建应用时,我们还创建了一个独特的 Git 存储库,我们的应用由它驱动。在本节中,我们将获取此存储库的位置,以便告诉 Git 连接到它。
- 登录到您的 PHP Fog 帐户。
- 转到应用的应用控制台。
- 点击源代码。
- 在源代码页面上,您将看到一个部分,上面写着克隆您的 git 存储库。我的代码如下(你的代码应该类似):
git clone [email protected]:timjuravich-verge.phpfogapp.com
- 因为我们已经有了一个现有的 Git 存储库,所以我们不必克隆它们,但是我们需要应用的 Git 存储库的位置,以便下一个配置步骤。使用此示例,存储库位置将为
[email protected]:timjuravich-verge.phpfogapp.com。将此复制到剪贴板。
从 Git 连接到存储库
现在我们已经知道了 PHP Fog 的 Git 存储库,我们只需要告诉本地机器如何连接到它。
- 打开终端。
- 将目录更改为您的
working文件夹。
cd /Library/WebServer/Documents/verge
- 现在,让我们将 PHP Fog 的存储库添加为一个名为
phpfog的新远程存储库。
git remote add phpfog [email protected]:verge.phpfogapp.com
- 离开跑道,我们就可以启动这个应用了!
部署到 PHP Fog
这是我们一直在等待的时刻!让我们启动 PHP Fog 的应用。
- 打开终端。
- 将目录更改为您的
working文件夹。
cd /Library/WebServer/Documents/verge
- 我们希望忽略 PHPFOG 的 Git 存储库中的内容,因为我们已经构建了应用。所以,这一次,仅这一次,我们希望在通话结束时追加
--force。
git push origin master --force
我希望这不是太反高潮,但恭喜你,你的申请是活给世界!那很好很容易,不是吗?每次从现在开始对代码进行更改时,只需将其提交到 Git,输入命令 git push phpfog master,并确保使用 git push origin master将代码推送到 GitHub。
如果您开始使用您的实时应用,您可能会发现本地计算机上的数据不供您查看而感到不安。你很幸运;在下一节中,我们将使用 CouchDB 强大的复制功能将本地数据库推送到生产数据库。
将本地数据复制到生产中
本节将不详细介绍复制的内部工作和背景信息,但您可以在 Packt 发布网站上标题为复制您的数据的奖励章节中找到完整的演练。
为了让您快速了解,复制是 CouchDB 在一台服务器和另一台服务器之间传输数据的方式。复制由每个文档中的 _rev字段驱动, _rev字段确保您的服务器知道哪个版本有正确的数据可供使用。
在本节中,我们将复制 _users和 verge数据库,以便所有本地数据都可以在生产服务器上使用。您不必担心您的应用是否已经运行了几分钟甚至几天,因为复制的最佳部分是,如果有人已经在使用您的应用,那么他们的所有数据都将保持不变;我们将只添加本地数据。
是时候采取行动了——将我们的本地用户数据库复制到 Cloudant
让我们使用 Futon 将本地 _users数据库复制到我们在 Cloudant 上创建的 _users数据库。
- 在浏览器中打开 Futon,点击复制器,也可以直接导航到
http://localhost:5984/_utils/replicator.html。 - 确保您以
administrator身份登录;如果您不是,请单击登录并以administrator身份登录。 - 从下拉列表中的复制更改中选择
_users数据库。 - Click on the Remote database radio button in the To section.

- In the Remote database text field, enter the URL of the database at Cloudant along with the credentials. The format of the URL will look similar to
https://username:[email protected]/_users.

- 点击复制,CouchDB 会将您的本地数据库推送到 Cloudant。
- You'll see the familiar results from Futon.

刚才发生了什么事?
我们刚刚使用 Futon 将本地 _users数据库复制到由 Cloudant 托管的 _users生产数据库。这个过程与我们之前所做的完全相同,但是,我们在到部分中使用了远程数据库,并将数据库的 URL 与我们的凭证一起使用。复制完成后,我们收到了一份冗长而令人困惑的报告,但其要点是一切顺利。让我们继续复制我们的 verge数据库。
注
值得一提的是,如果您试图从命令行复制 _users数据库,则必须在调用中包含用户名和密码。这是因为我们将用户数据库完全锁定为匿名用户。该函数将类似于以下内容:
curl-X 柱 http://user:password@localhost:5984/_replicate-d'{“source”:“_users”,“target”:https://username:[email protected]/_users“}'-H“内容类型:应用/json”
有一个 go hero-将本地 verge 数据库复制到 Cloudant
根据我刚才给你的提示,你认为你能想出将本地 verge数据库复制到 Cloudant 上 verge数据库的命令吗?在游戏的这个阶段,几乎不可能把任何事情搞砸,所以如果你第一次没有得到它,不要害怕尝试一些东西。
试试看。完成后,继续阅读,我们将检查我使用的命令。
一切进展如何?希望你不费吹灰之力就能得到它。如果无法使其工作,以下是一个可以使用的命令示例:
curl -X POST http://user:password@localhost:5984/_replicate -d '{"source":"verge","target":"https://username:password@username .cloudant.com/verge"}' -H "Content-Type: application/json"
在本例中,我们使用本地 CouchDB 实例将本地 verge数据库复制到目标 Cloudant verge数据库。对于本地数据库,我们可以简单地将名称设置为 verge,但是对于目标数据库,我们必须传递完整的数据库位置。
在所有数据都处于活动状态且位于生产服务器上的情况下,您可以以您在本地创建的任何用户的身份登录,并可以看到您创建的所有内容,这些内容都是活动的,可以让全世界看到。这并不是你旅程的终点;让我们快速讨论下一步的内容。
下一步是什么?
在我向您介绍之前,让我们先讨论一下您的应用在野外将为您带来什么,以及您下一步可以做些什么来使这个应用更加强大。
扩展应用
幸运的是,利用 PHPFog 和 Cloudant 时,扩展应用应该非常容易。实际上,您需要做的最紧张的事情就是登录到 PHPFog 并启动我们的 web 进程,或者登录到 Cloudant 并升级到更大的计划。他们处理所有的艰苦工作;你只需要学习如何有效地扩展。你不能打败它!
有关如何有效扩展的更多信息,请浏览 PHPFog 和 Cloudant 的帮助文档,它们讨论了许多可以扩展的不同方法和要避免的问题区域。
值得一提的是,我们在本章中没有完全介绍复制。有关复制的完整演练,请务必查看 Packt 发布网站上标题为复制您的数据的奖励章节。
下一步
我希望你们继续发展和适应 Verge,使其成为非常有用的东西,或者,如果不是,我希望你们利用本书中学到的知识,构建更伟大的东西。
如果您决定继续在 Verge 上构建功能,那么使用此应用仍有很多工作要做。例如,您可以:
- 添加用户跟随其他用户的功能
- 允许用户筛选和搜索内容
- 添加消息传递系统,以便用户可以相互通信
- 自定义 UI 并使其成为真正独特的东西
我将继续向 GitHub 上的 Verge 存储库中添加类似这些和更多的功能:https://github.com/timjuravich/verge 。因此,请确保查看存储库中的更新,如果愿意,请使用 fork。
再次,我非常感谢我们在这本书中共度的时光,如果您有任何问题,请随时在 Twitter 上联系我。
发展愉快!
总结
在本章中,我们学习了如何与世界共享我们的应用。具体来说,我们使用 Cloudant 和 PHP Fog 注册了一个帐户,并成功部署了我们的应用。剩下要做的就是继续编写代码,并将这个应用转变成令人敬畏的东西。