这可能是
一个相当基本的问题,但我不是100%熟悉最好的Git实践。我正在开发一个 Web 应用程序,该应用程序将定期推送更新。我的本地计算机上有文件,这是我进行大部分编辑/开发的地方。我有一个删除测试服务器,我在开发过程中将文件推送到该服务器。
然后,我有一个实时远程生产服务器,其中包含实时应用程序。所有文件都相同(期望测试服务器上有新功能(,但有一个例外。我有一个配置.php文件,其中包含各种设置,例如数据库连接设置,路径,API密钥等。
我在两个远程服务器上都添加了一个.gitignore
文件,告诉 Git 忽略 config.php 文件。如果我对它进行任何添加,我可以稍后手动覆盖它。
我根据需要将文件上传到测试服务器,一旦一切正常,我就将文件从 github(存储所有内容的地方(拉到实时服务器以启动文件。
这听起来对吗?我是否错过了什么或做错了什么。感谢您的帮助。
对于您的config.php
文件问题,请查看此方法,而不是将其从VCS中排除。
if ($_SERVER['SERVER_ADDR'] === 'test-machine-ip') {
// config here
$config = array();
} else {
// production or other config, you get the idea
$config = array();
}
关于测试/实时服务器的更新;如果你有一个独立的服务器,你提到的方法应该可以做得很好,否则你应该实现 git 钩子,根据你推送到的特定分支(如 testing
和 production
(进行自动更新。
钩子将允许您拥有类似于以下内容的过程:
- 推送到远程源(BitBucket 等(
- BitBucket 有一个钩子设置,
POST
提交数据到服务器(分支名称等( - 脚本将读取提交并根据提交数据采取相应的操作。
此方法仅适用于生产服务器,同时仍对通常只有一个盒子的测试服务器使用另一种方法。您在网上找到的大多数小脚本都没有分支检测功能。
以下是一些帮助您入门的资源
- https://gist.github.com/oodavid/1809044
- 使用 Git 推送部署项目
- http://www.saintsjd.com/2011/03/automated-deployment-of-wordpress-using-git/
请注意,自动部署的完成方式各不相同。
如果您有几个生产服务器等,此方法很有用,并且还消除了SSH进入服务器以执行拉取的麻烦(尽管您可以为此编写脚本(。