我目前希望使用裸git仓库以在生产服务器上进行部署,我有一个“后接收”钩子,可以使用git checkout来更新生产文件夹。该应用程序是一个PHP网站。
事实上,我想知道当有人使用Web应用程序时,使用git推送到生产服务器是否绝对安全,git是否通过锁定每个更新文件以类似于事务的方式更新文件,或者他按文件工作吗?用户是否可以加载页面并拥有旧提交的CSS而不是新提交的PHP? (如果他很倒霉)
TL; DR:人们使用该网站时是否存在任何推动风险?
对不起,我的英语! 谢谢您的帮助!
答案 0 :(得分:1)
Git只是复制文件。
您可能需要手动重新启动Web服务器才能接听 更改后的php程序。如果您混合使用以下内容,请小心 技术,某些软件会立即选择更改的文件,而其他软件 可能要等待重启。
在您的情况下,您需要检查php.ini文件中的内容 opcache.revalidate_freq =和oapache.enable设置可以控制 apache查找更改的源文件的频率和频率。
对于生产服务器,关闭它们可能更安全, 重新启动服务器以获取更改的文件。
答案 1 :(得分:0)
这完全取决于使用什么文件以及文件是否已打开以及文件是否已打开将在某个时候重新读取它们。
在某些系统上,您可以就地更新文件,但是在重新启动应用程序和/或服务之前,它们将被忽略。
在其他系统上,更改会立即被提取。
在其他系统上,文件是打开的,您无法覆盖它们。
简而言之,这与git无关,而与使用文件的内容有很大关系。
此外,您需要了解版本之间会发生什么。如果各个版本之间的字段发生了变化,则需要确保可以处理正在接收表单发布的页面将接收与预期不同的数据的情况。
git通过锁定每个更新文件来以类似于事务的方式更新文件
AFAIK,git在逐个文件的基础上工作,如果一个或另一个文件失败,则不会回滚。