问题描述
我正在寻找一个强大的流线型工作流程想法与 Wordpress 一起工作。
-
想在我自己的服务器内部使用 git 环境,不使用 Github 来处理 repos 。
-
在 git 分支创建时自动创建子域 (development.domain.com,ryan.development.domain.com) – 可能一些 shell 脚本钩子是理想的。
-
Phing PHP /Shell 脚本处理数据库迁移 (类似于此 http://interconnectit.com/products/search-and-replace-for-wordpress-databases/) 来处理序列化的数据库替换
操作可能会这样:
-
获取当前最新的 WordPress 版本并分支出来,分支的名称获取一个子域条目 (branchdevelopment.domain.com)
-
submodule 你想要的主题,如果它可用 (我想自己的 git repo 为此,因为我使用论文,我想有一个空白的论文 git repo 设置从内部抓住已经创建的服务器)
-
检查并进行更改,客户评价一旦被推送到活动中,数据库脚本就会自动将从 localhost(或子域) 的序列化 URL 值更改为实时网址
这可能吗?我听说 Capistrano 也很好用,但不知道 Capistrano 如何完全奏效。
我在自己的服务器上运行了大约 200 个站点,并希望开始将这些站点实施成一个强大的 git 工作流环境,这样我可以简化我的工作。截至目前,我基本上下载了一个网站的图像并在本地工作,然后将更改上传到服务器。这在这个时代非常乏味。
有没有人对这种类型的工作流程有任何解决方案?如果是这样,一些资源/答案将不胜感激。
最佳解决方案
一般问题回答
Nr.1. Would like to have my git environment on my own server internally, not using Github to handle repos.
我会做的第一件事是检查作曲家,以及它如何与 WordPress 合作,这是 Andrey “@Rarst” Savchenko 的一个项目。
Nr.2. Automatic creation of subdomains upon git branch creation (
development.example.com
,ryan.development.example.com
) – Probably some shell script hook would be ideal for this.
这是这个网站超出范围的。请求 StackOverflow 的帮助或向您的主持人询问。一些主持人不允许自己编辑这些条目。
Nr.3. Phing PHP/Shell script Handling of the db migration (something like this http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ ) to handle serialized database replacement upon pushing
我设置了一个多站点/网络安装。这样可以轻松管理所有的表格,将用户保留在中心位置等。
WP Gear – Robert “@Wyck” Ellison 的一个项目 – 具有备用构建脚本的列表。包括自己编写的 WordPhing 。 @TomJNowells /Interconnect.it script 到目前为止还没有列出。
操作问题回答
Nr. 1. getting the current latest wordpress version and branch it out, name of the branch gets a subdomain entry (branchdevelopment.domain.com)
不知道为什么要这样做:每个分支的子域。当您查看同步的 WordPress GitHub repository 和 list of branches 时,您将看到每个分支都命名为 X.Y-branch
。所以你的子域名将被命名为例如。 3.6-branch
。我不知道子域是否允许以数字开始 (应该是但是请求您的主持人),然后出现一个问题,您会得到一个名为 6-branch
的 sub-subdomain,它具有名为 3
的 sub-sub-subdomain,另一个名为 2
。并且猜测在子域中配对 2 和 3 版本的分支不是你想要实现的。
简而言之:只要 checkout 3.6-branch
如果需要切换分支。
Nr.2. submodule the theme you desire if it’s available (i’d like to make my own git repo for this, as I use thesis I’d like to have a blank thesis git repo setup to grab from internally on the server that’s already been created)
Thomas “@toscho” Scholz 已经编写了一个漂亮的插件,允许我们使用一个子域来处理 WordPress 目录外的主题。您可以在 this answer 以及 in this one 中找到它。即使自动更新也将适用于 WP 3.6 以来的主题。
您可以通过在 wp-config.php
文件中设置以下常数来为 MU-Plugins 和插件执行相同操作:
define( 'WP_PLUGIN_DIR', 'path/to/your/plugins.dev/folder/plugins' );
define( 'WP_PLUGIN_URL', 'https://plugins.dev/plugins' );
define( 'WPMU_PLUGIN_DIR', 'path/to/your/plugins.dev/folder/mu-plugins' );
define( 'WPMU_PLUGIN_URL', 'https://plugins.dev/mu-plugins' );
现在只需将所有的插件和主题都放在版本控制下,然后将其推送到您的服务器上。您可以使用 mu-plugins 或网络激活的默认插件轻松地使其可用。
Nr.3 checkout and make changes, client reviews, once it’s pushed to live, the database script will then kick in automatically changing the serialized url values from localhost (or subdomain) to the live url
如果汤姆脚本/插件到目前为止没有帮助,那么请告诉 that he accepts pull request on GitHub 。
次佳解决方案
没有时间写一个完整的功能答案 (我知道跛脚),但可能值得分享 (我可能会编辑这个,因为我也计划一个 blog-post))
-
我正在克隆 WordPress from Github(你甚至可以这样做源码树从这里:tierra/wordpress)
-
然后我通过一个 subtree merge 在我自己的站点 repo(我甚至运行在 git 的错误,但它的解决方案在这里:-X subtree=…) 。
这意味着你可以拥有一些干线/基于 version-branch 的 WP 设置,您可以完全包含在内。主题和插件。
由于这是一个独立的 (本地) 存储库,您可以通过 ssh 将其推送到其他存储库,例如:
-
它位于远程主机上,该站点应部署在 (裸机) 上。
-
这有钩子,使该主机上的另一个存储库实际上合并在刚刚推送的更改中。
这在 A web-focused Git workflow (Nov 2008; by Joe Maller)中概述。
如果您有一个配置切换器,根据运行的系统选择具体的 wp-config.php
,您甚至可以在 repo 内集中配置所有主机 (开发,直播,分段,朋友,…) 。
WP 中的上游更改只会在子树中获取并合并。
您刚刚更新和提交的插件。
部署是一个简单的 $ git push remote
。
在远程主机上运行 git repos,数据库和上传的文件的每日备份,这是便宜的,开发人员友好和灵活。这对于 single-developer 设置以及小团队来说都很好,因为每个人都可以从遥控器上的裸机重新启动。
有一些注意事项:
-
Git 别名
git accept-theirs
和git accept-theirs
有助于在基线更改有冲突的情况下,您明确知道您喜欢处理哪一个。你在这里找到:Simple tool to ‘accept theirs’ or ‘accept mine’ on a whole file using git -
你好,多莉。整个一代的诅咒你需要永远。
现在,您的清单和设置如上所述:
1. Would like to have my git environment on my own server internally, not using Github to handle repos.
Github 只在这里处理上游回馈 (WordPress),而不是你自己的。
2. Automatic creation of subdomains upon git branch creation (development.domain.com , ryan.development.domain.com) – Probably some shell script hook would be ideal for this.
概述的设置是一个模块化的方法,每个站点有一个 repo 。它可以处理尽可能多的开发主机,它可能同样适用于 multi-site 安装来处理多个域,但这将被视为一种 wordpress 设置在这种方法。
3. Phing PHP/Shell script Handling of the db migration (something like this http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ ) to handle serialized database replacement upon pushing
这里不需要这里,因为只有代码在版本控制下,数据库应该是开发 (分期) 和生产之间独立的。
您可能正在寻找一个能够进行域名迁移的安装脚本,但即使使用更好的代码 (可用) 处理序列化数据搜索和替换,在此设置中通常不需要将更改推送到现场对于 test-cases,您可以在开发数据库中快速创建内容,这通常是最小的问题 (根据我的实践经验,您的可能会有所不同,但我也建议在本网站上保留这样的 database-migration 相关主题。 – 但请问他们) 。
I run about 200 sites on my own server and would like to start implementing these sites into a strong git workflow environment so i can streamline my work a lot better.
我无法想象这些网站将如何成为一个字符串 git 工作流环境。也许您在这里管理的配置脚本和配置数据可能会保留在 git 版本控制下。这可能是有道理的。否则,除了大量的网站,我认为把所有这些都放在一个 git repo 中是毫无意义的。也许甚至不是其中之一,因为我上面概述的是您开发的网站 (包括 WP 核心代码),而不仅仅是安装任务。因此,您可能需要首先创建一些这 200 个站点的小图,以及它们如何互相交流,以及这些站点所包含的哪些程序包 (WP 核心,插件,主题) 。第一件事可能是创建一个电子表格/矩阵,并把所有的网站。
然后,您可以将其保存为 CSV,将其置于版本控制下,并使部署脚本根据该文件进行工作。
如果我已经学习了一些自动化任务:遵循 Unix 的理念,使用现有的和很好的工具 (最好花半天时间阅读一些命令,然后尝试搜索替代方案,因为大多数工作都是这样的已经解决了),并专注于命令行工具。他们是最强大的
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。