我知道这个问题有点老,但由于我在这里没有看到这个答案,我想分享一下我通常对基于git的单站点设置和部署所做的工作,它工作得非常好,还可以从多个设备、地点和多个开发人员处工作(所有人都有自己的本地repos,因为这对于git来说很常见)。
我可以诚恳地建议以下设置:
中也有概述(如果您需要第二个资源来了解它):
它基本上通过以下方式起作用(至少有三次回购):
将网站放在git下的实时主机上,创建一个新的bare git repository 在实时主机上然后从裸存储库转移到您当地的开发git repo当工作完成后,您将推动从中克隆的远程裸机回购。裸回购有挂钩与实时回购同步(在上述代码中称为prime)。
作为repo中Wordpress的特定设置,我有以下内容.gitignore
:
# uploads are data, excluded from source tree
wp-content/uploads/
其余部分包括插件和主题配置,我将其置于版本/配置控制之下。这使我能够轻松跟踪更改并在使用它之前查看代码。我还可以通过自己的更改更容易地与远程树合并。这对于
Wordpress core which is available on Github.
这对我的大多数Wordpress需求都很有效。裸回购协议可防止您推动相互冲突的更改。它还可以在更新实时站点之前先同步到远程副本。这意味着,更新实时站点通常相当快。由于这些挂钩,如果您愿意,您甚至可以在以后调用Wordpress更新挂钩。
如果我没有试验过使用Github挂钩可以改进多少,但我通常不需要它们,因为代码是在本地版本控制下的,而不是在Github下。
要首次设置这样的系统,您应该花一些时间来评估远程主机上是否有所有可用的工具:
SSH访问GIT是一个私有目录,您可以将文件和子目录放在其中(例如,对于您的裸GIT repo),第一次安装时间应在一到两个小时内,包括整个环境和您的首次发布推送。
根据主机的不同,您可能还希望屏蔽.git
web access中的目录。下面是一些示例.htaccess
甚至将Wordpress放在子目录中这样做的代码,这会在repo中留下未在线发布的空间(有用):
Options -Indexes
# fix trailing slash for .git / make it disappear + .gitignore and similar files.
RedirectMatch 404 ^/\\.git(.*)$
# mask 403 on .ht* as 404
<Files ~ "^\\.ht">
Order Deny,Allow
Allow from all
Satisfy All
Redirect 404 /
</Files>
RewriteEngine On
RewriteBase /
# map everything into public and set environment var
# to tag the request being valid
RewriteCond %{ENV:REDIRECT_sitealias} !set
RewriteRule ^(.*)$ /public/$1 [E=sitealias:set,L]
简而言之,不在public目录下的所有内容都不会联机。在public目录中可以是wordpress代码库,例如
.htaccess
然后您需要:
RewriteEngine On
# mask as 404 if directly accessed
RewriteCond %{ENV:REDIRECT_sitealias} !set
RewriteRule .* - [L,R=404]
这会阻止直接访问公共资源。这是其中的一部分。htaccess-您可以在这里找到概述:
Requests to .htaccess should return 404 instead of 403. 对于环境变量,您需要测试它是否在您的环境中工作。您还需要决定是否将其置于版本控制之下。
如果你对托管有更多的控制权,你可以在这里做更多的事情(并且不同/更优化),上面的例子针对的是典型的共享托管环境(提供GIT的,一些用户说你也可以轻松地自己安装,我通常会要求我的托管者提供这样的服务,因为我更希望他们能注意,这是我付钱给他们的)。
从消极的方面来看,这有一些常见的问题,在其他答案中也有概述。有一件事我并不自豪,但有效的方法是让开发主机更改其主机文件,使数据库服务器指向开发副本。因此,您可以保留一个数据库配置。不是很酷,尤其是因为证书。
自动备份
然而,我通常不太关心这里的情况,而是在远程系统上运行每日备份,这些系统以增量的方式运行,而这些系统本身则存储在另一个远程位置。这既简单又便宜,允许您恢复Wordpress安装以及文件上传、数据库和git repo。此外,对于我的备份命令,我可能并不完全正确,但这些命令对我很有用:
mysql: mysqldump --host=%s -u %s --password=%s %s| gzip > %s
git : git gc
git bundle
files: tar --force-local -czf %s %s
我建议您不要使用Wordpress安装过程中的程序。它们需要在特定系统上运行,因此通常应用程序中没有它们(例如,应用程序可能会停止运行,但您需要让它们继续工作)。
支持团队合作另一个好处是您的站点已经支持团队合作。由于额外的裸回购,您不会犯太多错误,甚至可以与同事共享主分支或活动分支之外的远程分支。