这可能是一个相当基本的问题,但我并不是100%熟悉最好的Git实践。我正在开发一个定期推送更新的Web应用程序。我的本地机器上有文件,这是我编辑/开发的大部分内容。我有一个删除测试服务器,我在开发期间将文件推送到。
然后我有一个实时远程生产服务器,其中包含实时应用程序。所有文件都是相同的(期望测试服务器上的新功能),但有一个例外。我有一个config.php文件,它有各种设置,如数据库连接设置,路径,API密钥等。
我在两台远程服务器上都添加了一个.gitignore
文件,告诉Git忽略config.php文件。如果我添加任何内容,我可以稍后手动覆盖它。
我根据需要将文件上传到测试服务器,一旦一切顺利,我将文件从github(存储所有内容)拉到实时服务器以启动文件。
这听起来对吗?我错过了什么或做错了什么。感谢您的帮助。
答案 0 :(得分:0)
对于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 hooks,根据你推送到的特定分支进行自动更新,如testing
和production
。
钩子将允许您进行类似于此的过程:
POST
提交服务器的数据(分支名称等)此方法仅适用于生产服务器,同时仍然使用测试服务器的其他方法,通常只有一个盒子。您在网上找到的大多数小脚本都没有分支检测功能。
以下是一些可以帮助您入门的资源
请注意,自动部署的方法各不相同。
如果您有一些生产服务器等,这种方法很有用,并且还可以消除SSH进入服务器以执行拉动的麻烦(尽管您可以为此编写脚本)。