阅读时间7分钟 (1339字)

自动化组件演示网站

Automating Your Component Demo Site

如今,几乎所有的Joomla!开发人员都有一个用于测试组件的演示网站。无论是免费提供组件还是提供购买,大多数用户都希望能够在购买或浪费时间下载并安装到自己的网站上之前,测试其功能并“看到它的工作情况”。这意味着作为一个组件开发人员,您必须始终保持演示网站运行,并使用您组件的最新版本。

有几种不同的方法可以实现这一点。我想介绍我们的商店在www.crmery.com找到的最成功的方法。我并不暗示这是运行演示网站的唯一方法(甚至不是最好的方法——我们似乎总是在调整事物),但这已经证明对我们来说非常高效。我认为这也许对其他人也有帮助。

我们使用GitHub来管理我们的软件版本,因此我们有一些非常强大的工具可以利用,使我们的演示网站始终保持同步。您可以以多种方式配置您的存储库,在另一篇文章中我将详细介绍Joomla!如何处理其存储库以及我们如何选择处理我们的存储库。关键是您需要一个主分支或生产分支。这个分支只包含稳定的代码。您应该能够从这个分支下载您的代码,并且它可以没有问题地安装和运行。这是我们希望引用演示网站的分枝。

GitHub为各种应用程序和函数提供了钩子。您可以通过访问存储库的管理部分来找到这些钩子。一旦进入管理部分,您将在左侧菜单中找到“服务钩子”,如图下所示。



点击服务钩子将会显示你可以参考的服务列表。GitHub钩子提供了一种方便的方式,可以接收有关每次提交到你的仓库的提交信息。你定义的任何钩子都会在你提交到你的仓库时被触发。不要感到不知所措。我们只会查看一个,那就是非常第一个选项,Web钩子URL。我们将要做的就是在我们的服务器上输入一个特殊git文件夹的路径。你需要以标准浏览器可访问的格式输入URL。

例如:http://demo.crmery.com/gitrepo/git.php

保存你的更改,你现在在GitHub上的操作就完成了。我们稍后会重新访问这里来测试服务钩子并添加SSH密钥。现在你需要在你的服务器上设置这个特殊的git文件夹。这需要几个步骤。你可能首先需要确保git在你的服务器上已启用并正在运行。你可以通过打开一个终端窗口并简单地输入以下命令来完成此操作:

git --version

你应该看到以下类似的结果

git version 1.8.0

如果你得到一个命令未找到的错误,那么你需要在继续之前设置git。一旦你知道git已安装在你的服务器上,你就可以进行下一步了。你需要创建你在GitHub上输入的目录和文件。在我们的例子中,我们需要创建一个名为gitrepo的文件夹,然后添加一个名为git.php的文件。

对于git.php文件的内容,我们添加以下内容

<?php
if($_REQUEST['payload']) {        shell_exec('/usr/local/bin/git fetch --all &&
        /usr/local/bin/git reset --hard origin/master');
}
?>

这是每次GitHub钩子被触发时将运行的文件和代码。GitHub会传递一组post变量,其中一个叫做payload。它包含提交的详细信息。如果你有一个有效的payload,则此文件运行一个git命令来解析payload。

在测试你的钩子和脚本之前,我们还需要设置一些其他的事情。不要放弃,我们几乎完成了。

你的GitHub在远程进行任何拉取操作之前都需要进行身份验证,所以你需要配置你的GitHub和你的服务器以使用SSH密钥进行无声和自动的身份验证。GitHub有一个关于配置SSH密钥的很好的文章,所以我不会详细介绍这个过程,只需说,遵循他们的步骤很简单。

注意这里的一件事 - 确保你创建id_rsa密钥时使用的用户与运行上面git.php文件中的git命令的用户相同!在大多数情况下,这是apache用户。这对于认证至关重要。

配置完SSH密钥后,你需要通过作为此用户运行git命令来测试它,并确保你的GitHub连接可以正确地完成身份验证。由于我们无论如何都需要从仓库复制一个起始副本,我们可以同时测试我们的身份验证。导航到之前创建的gitrepo文件夹,并运行以下命令:

git -clone This email address is being protected from spambots. You need JavaScript enabled to view it./your_repo_path/repo.git
git -fetch --all origin/master

你应该看到与github建立了连接,并且你的仓库克隆已经开始。你现在已经将所有文件从你的仓库复制到了你的gitrepo文件夹中。恭喜!你的git设置和SSH密钥正在正确工作。现在你可以通过向你的仓库提交一个commit来测试你的GitHub钩子,并检查服务器上gitrepo文件夹中的文件。你应该几乎立即看到你的更改。如果你做到了,那么你只剩下一个小步骤了,你的自动演示网站更新配置就完成了。如果你没有做到,那么你需要回退并查看在哪个点上过程失败了。你始终可以使用GitHub指南来回答任何具体问题。

设置自动组件演示的最后一个步骤是确保您的Joomla!网站使用位于您的gitrepo文件夹中的那些文件。完成此任务的最简单方法是设置几个符号链接。通过设置符号链接,您可以在服务器上的gitrepo文件夹内保持与GitHub仓库相同的目录结构。如果您需要一个示例,这里有一种可能的方式:

/gitrepo/
git.php
manifest.xml
/package/
/component_folder/
install.php
component.xml
/admin/
/site/

只需在前端Joomla!组件文件夹中创建一个符号链接,指向上述结构中的站点文件夹。

ln -sv /home/yourpath/public_html/components/com_component 
/home/yourpath/public_html/gitrepo/package/component_folder/site

然后在Joomla!管理员的另一侧创建第二个符号链接,您就完成了。现在,每次您将新版本推送到GitHub仓库的主分支时,您的演示网站都会自动更新为最新代码。

还有一个数据库配置的小问题需要处理,但您可以通过运行install.php脚本作为git.php文件的一部分来处理更新。

如果您想看到关于这些步骤以及如何通过GitHub始终同步数据库的后续文章,请留下评论。

我希望这篇文章能帮助您了解一种通过自动更新组件演示网站来减少您工作量的方法。显然,这种方法也适用于模块和插件。请务必关注我关于如何简化从桌面到会员专用文件存储库的部署流程的下一篇文章。

在Joomla社区杂志上发表的一些文章代表作者对特定主题的个人意见或经验,可能不代表Joomla项目的官方立场。

0
一种新的保护并加速您网站的方法
第二部分 - 检查9个高级Web托管服务...
 

评论

已经注册? 登录这里
尚未发表评论。成为第一个发表评论的人

通过接受,您将访问https://magazine.joomla.net.cn/外部第三方提供的服务