以前在服务器上架一个网站,都要其一个FTP server来更新代码,还经常出现误删(本博客就被删过一次,嘤嘤嘤)的情况。后来我就一直用Git来部署了,好处是不用到处找FTP客户端了,代码同时存在服务器和家里的电脑上,万一丢了也能找回来。当然,还可以随时回滚到特定的时间。
这里简单说一下通过Git的Hook机制来更新网站代码,这样你只需要在自己电脑上git push,服务器上的代码就更新了。 首先,你要有SSH权限。
apt-get install git
mkdir repo
cd repo
git --bare init
mkdir source
cd source
touch README
git init
git add README
git commit -m 'init'git remote add origin username@servername:/path/to/repogit push origin master
cd /repo/hooks
vim post-receive
然后填入以下内容,记得把web目录的路径替换成你自己的。
#!/bin/shGIT_WORK_TREE=/path/to/www git checkout -f
最后记得
chmod +x post-receive
就大功告成啦。
Hook执行的权限是由你用来往repo push的帐号决定的,如果部署不成功请检查该帐号是否对web目录具有写权限。另外post-receive必须有可执行权限,不然什么都不会发生(我就忘了,检查了好久,这也是为什么要写这篇博客的原因)。
配合GitHub客户端的Revert可以实现版本的回滚发布: