ccl*_*eve 15 git atomic web-deployment
我想以原子方式更新实时网站.如果我们对页面,图像和javascript进行了多处更改,则所有更改应同时显示,不会出现停机,不一致或404.
如果我只是将更改的文件复制到网站目录中,那么至少有少数请求会看到不一致的网站.如果我将新站点复制到一个单独的目录,然后重命名旧目录以使其退出生产并重命名新目录以使其生效,那么在短暂的一刻我们将得到404.
我真的有两个问题:
如何以原子方式更新文件目录?
我怎样才能与Git协调?我们想使用git pull(或者可能是push)进行部署.git repo中站点的路径与服务器上的路径不同,因此需要使用git命令或OS命令进行一些移动/重命名.
Jas*_*wen 22
你可以使用符号链接做你想象的事情.将一个符号链接移动到另一个符号链接是原子操作,因此您应该能够避免任何404错误.
您的钩子会将您的站点部署到一个目录,可能以提交哈希命名.然后它会创建一个符号链接,也许称为分段.然后它会在生产符号链接上移动该符号链接.
hash=`git rev-parse HEAD`
git checkout-index -a -f --prefix=/srv/www/$hash/
ln -s /srv/www/$hash /srv/www/staging
mv -T /srv/www/staging /srv/www/production
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1690 次 |
| 最近记录: |