十一、附录 A:部署

大日子终于到了!在本附录结束时,您的站点将处于活动状态,现在只有几个小的部署问题阻碍您实现在线愿望。事实上,这不完全是真的!我应该明确,部署没有什么特别复杂的地方;只是你需要掌握很多不同的问题。在这个阶段犯愚蠢的错误会对最终产品产生巨大的影响,因为我们在部署完全开发的应用程序时主要处理配置问题。当然,犯错误并不是世界末日,因为我们将非常彻底地测试一切。

乍一看,部署一个像 Drupal 这样的站点非常简单,只需将 drupal文件夹复制到新服务器上即可!还是?在确保转会过程中一切顺利进行的同时,也存在许多问题。例如,数据库也必须完全按照开发机器上的方式重新构建—我确信,由于大多数人都花了一些时间配置所有内容和填充表,所以您会急于不必重新进行所有操作。除此之外,还需要考虑连接参数和一些安全问题。

具体而言,附录介绍了如何:

  • 为部署做好一切准备
  • 将文件转移到他们的新家
  • 设置站点,包括数据库
  • 彻底测试每件事

抬起下巴,我们快到终点了;情况也没那么糟,是吗?作为一个人,我无疑会开始自己的博客,这真的很诱人!

准备部署

第一件事是第一件事;你确定你对网站的现状完全满意吗?虽然在部署后对站点进行修改并不是什么大问题,但如果你现在就可以完成,那么你也没有必要再重新编码一些页面或进行设计更改,从而给自己制造麻烦。如果一切正常,那么我们可以从准备过程开始。

准备分为三个阶段。在没有特定顺序的情况下,我们需要确保我们有一个好的、干净的、工作版本的站点,一个好的、干净的、工作副本的数据库,最后是一个好的、干净的文件系统,为宿主站点上的文件做好准备。让我们来看看这是如何做到的。

确保主机已准备就绪

凭直觉,你必须确保你有足够的主人。我的意思是你有一台主机,你可以在上面创建一个 MySQL 数据库,并允许访问一个文件系统,以及你认为你可能需要的任何其他东西。为了让您的生活更轻松,最好有一个 FTP 帐户,这样您就可以将文件传输到主机文件系统。通常情况下,您应该能够使用管理员的用户名和密码自动登录到 FTP 帐户。如果您不确定这是怎么回事,请在浏览器中尝试以下 URL(假设您的浏览器支持 FTP):

ftp://ftp.your_domain_name.com

如果系统提示您输入密码或显示主目录的内容,恭喜您,您拥有 FTP 帐户。如果你没有一个,那么你应该考虑让你的主人给你一个,或者从他们身上发现他们是如何上传文件的。顺便说一句,您可能希望在 URL 中发送用户名和密码,而不是每次使用 FTP 帐户时都提示输入用户名和密码,如下所示:

ftp://username:password@hostname/

如果您担心安全性(我的意思是:您担心安全性),那么最好省去密码,只传递用户名,否则如果 URL 登录在不安全的地方,可能会导致安全问题。请记住,此信息已以未加密格式传递。如果您希望安全地执行所有操作,您应该向主机说明如何确保文件传输的安全。

如果你无法访问 FTP 帐户,那么不要惊慌!稍后阅读本附录中题为传输文件的部分,将文件移动到主机站点仍然很容易。

一旦您确定有地方可以上传 Drupal 文件,并且可以使用它,您就需要创建一个数据库。上帝只知道有多少种不同的方式可以做到这一点;所以我们不会逐一讨论。

查看站点的管理界面,看看是否有一个部分允许您创建和控制 MySQL 数据库(您可能会发现您的主机提供了我们的好友 phpMyAdmin)。例如,演示站点的主机在数据库部分有以下Manage Mysql链接,该链接提供用于创建数据库的接口。它还提供 phpMyAdmin 以管理这些数据库:

Make Sure the Host Is Ready

点击Manage MySQL链接,弹出以下页面。一旦你有了数据库,确保你已经记下了它的名字,主机会在你选择的名字后面附加一些东西,如演示站点的数据库创建界面所示:

Make Sure the Host Is Ready

如您所见,数据库名为contechj_contechst,其中contechst是我为实时数据库选择的名称,contechj_是添加的部分。在继续之前,必须注意此数据库需要一个用户,因此请确保它有一个用户,如下所示:

Make Sure the Host Is Ready

在本例中,contechst数据库现在拥有用户contechj_david,这样,主机站点就几乎可以接收新的 Drupal 网站了。请记住,这些用户名、密码和数据库名称对于站点的配置都很重要,因此请确保不要忘记其中任何一个。如果你陷入困境,请向主人的支持团队寻求帮助;这就是他们在那里的目的。

准备好文件

在执行任何操作之前,您需要在部署之前制作站点的主副本。确保压缩并存储您发送的 drupal目录的确切版本。

目前,Drupal 索引页面的目标 URL 类似于http://www.domain_name.com/drupal/ 。如果你想成为http://www.domain_name.com/ ,然后您需要压缩没有父目录的文件,以便将文件直接解压缩到 live site 上的 public_html文件夹。

在我们讨论这个问题时,您还可以适当地清理 Drupal 文件系统,这样就不会保存错误的文件。

如果您像我一样,那么您可能会创建您在工作时修改的所有文件的备份。就 Windows 计算机而言,它们由 .bak表示,并与原始文件放在同一文件夹中。为了安全起见,在删除任何内容之前,请备份您的 drupal文件夹。然后从 drupal文件夹中删除所有备份文件。

虽然目前这样做似乎有点过分,但有几个很好的理由。首先,在主机文件系统中存在任何未使用的文件都是不安全的做法。第二,为什么要用你不需要的文件把你的全新安装搞得乱七八糟?你会发现,在你前进的过程中,保持一切整洁是一场持续不断的战斗,所以要想继续就开始吧。最后,如果您在开发阶段处理了很多文件,那么您将为上传添加很多不必要的大小。

出于安全考虑,您可能应该将您的 CHANGELOG.txt文件和 update.php文件移动到不同的位置,将它们从网站中取出并保存到其他黑客无法获取的地方。如果您需要使用 update.php脚本,那么您可以将其添加回站点。

接下来,打开配置文件 settings.php,删除用户名和密码。您可以推断,当前数据库名称和密码将更改为您在主机上创建新数据库时设置的名称和密码(如果它们不相同),但是,像这样传输任何类型的敏感信息都没有意义,尤其是因为人们通常更喜欢在各种事情上使用相同的用户名和密码。

完成后,您必须等到下一节再添加一个文件,然后您可以制作 Drupal 站点的主压缩副本,称之为 RTP(向公共发布)或类似的东西,以区别于其他版本。

如果你在 Linux 机器上工作,你可以targzip你的文件,如果你愿意的话,这显然会对上传时间有所帮助。如果您是在 Windows 上开发的,那么您可能需要确保您的主机可以解压 .zip文件,因为它们很可能使用 Linux 服务器,但这不应该是一个问题。在不太可能发生的情况下,最好的办法是在下载并安装适用于 Windows 的 gzip 实用程序 http://www.gzip.org/ ,您可以使用它将文件压缩为 .gz格式。

准备好数据库

目前,数据库可能包含大量用于测试的愚蠢帖子,也可能包含一些重要页面。这里没有硬性规定;只是试着不要转移太多你最终会直接删除的东西。

说到备份,这确实是本节的重点。为了部署数据库,您需要对其进行备份。然后将此备份文件传输到主机站点并用于在那里创建新数据库。由于您已经掌握了有关备份的所有信息,因此我们不需要在此处进一步查看它们。

一旦您创建了整个 Drupal 数据库的备份文件,并将生成的 .sql文件添加到 drupal文件夹的某个位置(只要您能再次找到它,任何地方都可以),您现在就可以开始将文件传输到主机。请注意,一旦您使用了 .sql文件,就应该将其从站点中删除,并将其保存在文档根目录之外的某个位置,以防再次使用。

传输文件

现在,您应该有一个最终的、干净的在线商店版本,以及数据库的副本,所有这些都已压缩并准备就绪。假设站点中有图像和相当多的数据,您可以确定上传的大小相当大。因此,您需要一个合理的高速连接拨号连接在很长一段时间内可能会有点不稳定,因此甚至值得使用朋友的计算机或您的办公室连接将文件发送到主机站点。

到目前为止,最简单的方法是通过快速连接从主机的文件管理器使用本机上载功能。如果您可以使用它,只需使用它将归档文件上传到主机服务器。演示站点具有如下所示的功能:

Transfer the Files

请注意,ZIP 文件正在上载到 public_html文件夹,因为这是该服务器上所有网页的文档根目录。

或者,假设您的站点启用了 FTP 帐户,您可以尝试使用 FTP 拖放,这与在 Windows 中移动 PC 上的文件完全相同,也可以使用 FTP 实用程序。

如果有疑问,只需与主机服务联系,询问他们有关如何传输文件的信息。绝大多数网站的管理界面和文件管理器都很容易使用,上传文件也不会有问题。因此,我们不会浪费时间详细讨论 FTP 实用程序。只需确保 ZIP 文件最终位于主机服务器的文档根目录中。请记住,一旦使用了 zip 文件夹,就不要将其放在文档根目录中。

设置站点

在这个阶段,您应该有一个工作的数据库,并知道在您的实时站点上该数据库的用户名和密码是什么。您还可以将存档文件上载到宿主站点。最后,我们终于从在开发机器上工作转移到在现场工作。第一件事是第一件事;我们需要…

设置文件

您需要将存档文件解压缩到您的 public_html文件夹中,您的主机很可能会为您提供此功能。注意此处所示列表中的第二个选项:

Set Up the Files

提取这些文件后,您现在应该在主机站点上拥有来自开发机器的文件副本。通过浏览实时站点来检查这一点。您还应该发现,如果您尝试从 web 浏览器浏览其中一个页面,您将不再收到页面未找到错误,而是其他类型的错误,很可能是 MySQL 错误,因为我们尚未建立数据库连接:

Set Up the Files

这是一个好消息,因为这意味着我们可以毫无问题地浏览实时站点上的文件。这里有一条 Drupal 错误消息这一事实证实了我们实际上正在浏览 Drupal 页面。请注意,前面的屏幕截图中显示的错误消息提到了一个不正确的用户名和服务器。这里更清楚地说明,我们正在浏览 Drupal,但尚未输入正确的数据库或配置设置。

建立数据库

如果您有权访问主机站点上的 phpMyAdmin,请打开它并继续执行:

  1. 在 phpMyAdmin 主页的左侧面板中,单击先前安装的数据库的名称。(回想一下,对于演示站点,其标题为 contechj_contechst.)
  2. 在打开的新页面中,单击页面顶部的SQL选项卡。
  3. 点击文本文件选项位置下的浏览
  4. 找到要针对数据库运行的文件,然后单击Go

如果一切按计划进行,您将收到一条消息,通知您对数据库的成功修改。然后,您可以查看 phpMyAdmin,以确保数据库具有所需的任何表。

您的主机系统与用于创建备份的主机系统之间可能存在问题。例如,我最初收到以下错误:

Set Up the Database

这是因为不同版本的 MySQL 有时使用略有不同的语法,在一切顺利运行之前,必须删除 .sql文件中的所有 DEFAULT CHARSET=utf8语句。

如果您无法访问 phpMyAdmin,那么您只需使用 .sql文件以适合您特定站点的任何方式安装数据库。回想一下,如果您有权访问 .sql文件,您可以从命令行运行该文件。如果没有访问权限,那么现在是时候与支持团队联系,了解他们建议您如何运行 .sql文件的内容了。

配置站点

数据库就绪后,返回到您的直播站点上 sites/default/文件夹中的 settings.php文件,并根据系统设置对其进行更改。注意确保您将直播数据库所需的名称和密码准确添加到 $db_url中,以及 $base_url if that is required中直播站点的正确 URL。

正确设置配置设置后,保存文件,然后尝试浏览某些页面。如果运气好的话,您将或多或少地看到开发机器上的所有内容。

访问问题?

尝试登录到管理员帐户。我怀疑你们中的很多人都会遇到某种令人不快的惊喜,因为浏览器毫无疑问会告诉你它找不到你要找的页面。如果是这种情况,很可能是因为 .htaccess文件未成功移植到活动站点:

您必须确保 Drupal 的 .htaccess文件存在于现场!Drupal 父文件夹中的 .htaccess包含对站点健康运行至关重要的说明和信息。确保直接传输,或将其内容剪切粘贴到 live 站点的 .htaccess文件中。

在 live 站点上查看 .htaccess文件的内容时(在 Drupal 的父文件夹中,很可能在文档根目录中,具体取决于您的设置方式),您应该看到如下内容:

<IfModule mod_php5.c>
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
</IfModule>
# Reduce the time dynamically generated pages are cache-able.
<IfModule mod_expires.c>
ExpiresByType text/html A1
</IfModule>
# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on
# Modify the RewriteBase if you are using Drupal in a subdirectory and
# the rewrite rules are not working properly.
#RewriteBase /drupal
# Rewrite old-style URLs of the form ‘node.php?id=x'.
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{QUERY_STRING} ^id=([^&]+)$
#RewriteRule node.php index.php?q=node/view/%1 [L] ...

如果是这样的话,那么您应该会发现可以像平常一样浏览实时站点。振作起来,我们快完成了!目前唯一要做的事情是……

测试

在这种情况下测试的目标是什么?从现在到本章结束,我们希望从现在的位置发展到一个功能齐全、最重要的现场和运营现场。为了做到这一点,我们不仅需要确保从客户的角度来看,一切都按预期进行,而且还需要确保站点得到了正确的实施,并且我们可以毫无问题地对其进行管理。

为了给您举一个可能出现这种情况的例子,请看一下我第一次尝试在 live 站点上进行一些管理时收到的以下错误消息:

Testing

你能马上发现问题吗?Drupal 抱怨无法写入本应包含在 C:\apache2triad\temp中的 files目录。这种情况并不奇怪,因为在直播网站上,有没有 C:\apache2triad\temp目录。事实上,这个完全限定路径出现在这里的唯一原因是,我最初想演示私有下载方法,尽管在这里公开访问文件是合适的。

这意味着我们需要重新输入使用开发机器进行的设置,以反映实时系统的具体情况:

Testing

假设您已经设置了必要的权限,Drupal 可以在这些文件夹中进行写和读操作,那么这个问题就解决了。(如果站点上已有文件,则可能需要将其移动到此处指定的目录。)现在,只需测试管理工具中的所有其他内容,以确保其正常工作!

以下是供您使用的检查表,以确保从用户的角度来看,网站运行良好:

提示

现场检查表

| 至少使用两种不同的浏览器。 | 一个浏览器可能实现其他浏览器无法实现的某些功能。您可能会发现,您严重依赖的某些功能在您选择的浏览器上运行,但在其他浏览器上却无法运行。 | Testing | | 调整浏览器大小以适应各种页面。 | 这有助于确定是否有未正确设置的 HTML 元素。例如,某些部分可能使用整页宽度,而其他部分仅扩展到某个限制。 | Testing | | 通过慢速和快速连接访问页面。 | 您可能会发现某些页面在拨号连接上的加载速度非常慢。这可能意味着您需要重新考虑图像和页面大小。 | Testing | | 检查所有链接文本和图像。 | 通常,由于文件路径不同等原因,链接在部署期间中断。你应该:

  • 检查每个页面上的所有链接和按钮
  • 检查块中的所有链接
  • 检查大小图像是否正确显示
  • 检查所有广告链接是否正确

| Testing | | 检查每页的外观。 | 重要信息,因为并非所有浏览器都可以呈现某些样式表设置。 | Testing | | 使用每一页。 | 这对于确保用户能够:

  • 登记帐户
  • 管理他们的帐户
  • 根据权限添加内容
  • 根据角色正确访问内容
  • 使用现场的所有设施

确保:

  • 搜索引擎工作正常
  • 可以正确发送联系电子邮件
  • 隐私和使用条件与任何重要的版权信息一起显示。

| Testing | | 尝试破坏网站(当然是作为受限用户)。 | 尝试破坏网站(当然是作为受限用户)。与确保一切正常工作(如果不是更重要的话)一样重要的是确保任何东西都不能随意打破。 | Testing |

如果你可以在多个浏览器上执行本清单中列出的所有内容,并且没有任何问题,那么你可以合理地确定,当网站上线时,它将保持正常运行。当然,您需要在其运行的前几个月对其进行密切监控,以确保不会出现任何重大问题。如果用户遇到问题,提供网站管理员的电子邮件地址是让用户抱怨的好方法。你和你的用户之间开放的交流渠道将有助于建立牢固的联系,提高网站的质量。

总结

对于像构建一个功能齐全的社区驱动网站这样重要的任务,你有必要花大量时间考虑你的选择,开发和测试你的网站。由于在实时站点上执行此类工作实际上是不可行的,因此需要使用开发机器来帮助您。正因为如此,部署主题在总体方案中是一个重要的主题,因为部署实际上将您完成的开发链接到活动站点。

本章概述了准备部署的坚实流程。在主机站点上建立一个新的数据库也是必要的,但这被证明是相对容易的,因为任何好的主机都可以通过提供类似 phpMyAdmin 的工具来处理数据库,从而使任务变得相当简单。

希望您能够意识到,对于 Drupal 站点来说,部署过程本身并不特别复杂,因为唯一需要完成的真正配置工作是修改 settings.php文件以反映新系统的配置。对于 Drupal 用户来说,将站点部署的复杂性降低到配置单个文件是一个真正的优势。

虽然该站点的实际部署相当简单,但事实表明,有相当多的问题需要处理,其中最重要的是测试。至关重要的是,在任何网站上线之前都要进行一整套测试。任何竞争网站都不需要有价值的用户因为愚蠢的错误而流失。