一年多以前,我曾问过这个问题,在那段时间里,我们向团队中增加了更多人,并在WordPress中开发了更多的网站。我想逐步完成我们的过程,以防它可能对其他人有所帮助。
吉特的一切
即使我问了这个问题,我也正在做这件事,但是指出这一点是很好的。使用Git不仅帮助我们提高了工作效率,而且还多次节省了我们的集体资产。
您是否曾经需要对站点进行重大的结构翻新,需要获得客户的批准才能进行翻新,同时又对未翻新的版本进行较小的更新?我们有,Git让我们做到这一点。描述此设置可能会花费很多时间,但基础知识是我们创建了一个新分支,将该分支拉到服务器上,并将子域附加到该分支。
我们也被Git保存了。当然,它允许我们回滚更改,这很棒,但是也允许我们带回旧版本的文件。这意味着,如果客户问:“还记得一年前网站的这一部分如何工作吗?我们能把它带回来吗?”,答案是肯定的,即使被问询的人不在该项目上一年也是如此。前。
除了这些要点之外,这还意味着我们永远不会缺少所需的文件。我们始终可以从任何计算机上下载该站点的最新版本并开始进行更改。
使用Git进行部署
我们在Media Temple上进行WordPress托管,我们真的很喜欢它们。他们不是最便宜的提供商,但是他们的服务非常出色,并且服务器的设置确实很好。默认情况下,也提供Git。这意味着我们可以将服务器设置为Git存储库,并以这种方式提取更改,而不是使用SFTP。这也意味着在服务器上进行工作不存在被覆盖的危险(因为这些更改可以合并并推回)。
因为我们使用BitBucket作为我们的Git主机,所以这里需要做一些额外的工作。首先,我们使用.ssh / config文件,以便我们可以键入类似于ssh sitename
登录服务器的内容(我们还使用了无密码的SSH,这使超级简单)。我们还确保始终使用ssh密码短语(Mac OS X通过允许您将密码短语存储在Keychain.app中使此操作非常容易)。最后,在要从中提取主机的.ssh / config条目中添加一个ForwardAgent行。这意味着我们只需要BitBucket中每个人的SSH公钥,而无需每个服务器的公钥。我们还确保将.git
目录保留在公共HTML目录上方一个目录。
自动数据库转储
服务器进入生产模式后,请确保自动备份数据库,以防万一。
每个人都有自己的wp-config
因为我们都有自己的本地数据库用户名和密码,并且因为我们可以使用不同的名称和服务机制,所以我们每个人都有自己的wp-config文件。其中每一个都以类似的名称存储在Git中wp-config-gavin.php
,当我们要使用该配置时,我们将其符号链接到wp-config.php
(Git使用.gitignore忽略)。
这也使我们可以覆盖数据库表中的siteurl
选项,如下wp_options
所示:
define('WP_SITEURL', 'http://sitename.localhost');
define('WP_HOME', 'http://sitename.localhost');
这样可以防止WordPress在数据库中查找服务器位置,这意味着本地安装和服务器安装之间不会出现奇怪的位置差异。
关于wp-config.php文件的最后一点说明:确保将它们存储在公共HTML目录上方,并使权限仅对Web用户只读。这在保护WordPress方面具有巨大的不同。
数据库问题
最后,事情的实质。
我必须接受的是,在使用WordPress时,没有“合并”数据库更改的好方法。相反,我们需要制定行为准则来解决这一问题。规则相当简单,到目前为止已经为我们服务良好。
在开发过程中,只有一个人“拥有”该网站。该人员通常进行设置(将托管程序包放在一起,启动Basecamp项目,对设计进行切片,诸如此类)。一旦该人达到合理的程度,就转储数据库以进行WordPress安装并将其放入Git。从那时起,进行开发的每个人都使用该数据库转储,并且所有者是唯一对数据库进行更改的人。
一旦站点构建进一步发展,该站点就会放置在服务器上。从那时起,服务器的数据库是规范的。每个人(包括所有者)都必须在服务器上进行所有数据库更改,并下拉这些更改以进行本地开发和测试。
这个过程并不完美。仍然有可能有人在开发过程中需要在WordPress后端中进行更改,然后必须在生产中再次进行这些更改。但是,我们发现这种事情很少见,并且此过程对我们来说效果很好。