草依山的Javascript世界

一个Javascript程序猿的学习纪录剩地,不仅仅是JS,还有Linux、Mac、nodeJs、吃、玩!

利用git快速部署远程服务器

本地开发完成后,通常会在服务器上部署,有人会使用ftp,有人会使用scpftpscp的时候为了方便我们通过还要tar或者zip一下, 这些做法也很不错,但是它有一些问题

  • 全部更新,不管某些文件是否修改,都要重新传一下服务器,浪费时间与流量
  • 多台服务器的重复上传
  • 代码更新后,后续的一些操作不够自动化

上面的问题可以通过ssh直接远程执行命令来解决,但是需要写一些shell脚本, 有没有更简单更高效的方法呢?有,那就是使用版本版本管理工具的hook!

这里我说是版本管理工具而不是git,是因为svngithg都是有相应的hook的, 原理大同小异。下面是Git详细的思路

服务器端操作

首先创建一个裸库,为什么是裸库?因为这个库不是真正用来修改的,我们也不允许在服务器上修改代码,我们只是把它当作一个代码中转的地方

cd gitroot
mkdir projectname
cd projectname
git init --bare

添加我们的hook

cd /hooks
touch post-receive

编辑post-receive的内容为下面的,其中sites/projectname,是我们存放网站代码地方

env -i git archive master | tar -x -C /sites/projectname 
echo "远程更新完毕" 

本地git的操作

本地我们只需要添加一个远程库,在需要部署的时候push到远程库就行了,下面我们添加了一个名为publish的远程库

git remote add publish username@xx.xx.xx.xx:/home/gitroot/projectname
git push publish master

可以强化的地方

这里演示的是一个简单的小网站的部署过程,复杂的情况下我们还可以添加静态资源版本更新,服务器重启等等,举一反三, 最大程序自动化我们的工作

文章地址: 利用git快速部署远程服务器
欢迎关注我的微博与我交流:@草依山
Github上也有一些东西:[Github]
所有文章坚决抵制jb51.net的转载!
标签: git 3
2013-12-29

相关文章

2016-09-29 [翻译]bash的各种文件载入执行顺序
2016-05-31 phantomjs在linux下截图中文字体问题
2016-04-24 Promise的错误处理
2016-02-23 URL里的+
2016-02-11 N个数中第K大的数

文章修改纪录

加载中...
Copyright © 2013. Create By 草依山, Fork