您的位置:首页 > 运维架构 > 网站架构

搭建git私有服务器及同步更新自己网站的文件

2016-03-29 19:06 706 查看

一、搭建git私有服务器

下面以ubuntu为例

1.安装git(如果没有安装的话)

sudo apt-get install git


2.新建一个git用户组

sudo groupadd git


3.新建git用户

-m, --create-home:创建家目录

-s, --shell:指定一个shell,下面是不能登录的

-d, --home-dir:指定具体家目录在哪

-g, --gid GROUP:指定组名或者写组的ID

sudo useradd git -m -s /sbin/nologin -d /home/git -g git


4.创建裸仓库

你想把他放在哪就在哪敲(就cd进去敲下面的命令),这个他不会保存具体的代码,只会和客户端的.git目录一致,或者加密压缩在里面了

sudo git init --bare yourweb.git


还要改一下拥有者

sudo chown -R git:git yourweb.git

5.把你的公钥放服务器上

不会生成公钥的请看/article/9449654.html
放在这个.ssh目录的authorized_keys文件,没有就自己创建,有多个每个公钥空一行就可以了

/home/git/.ssh/authorized_keys


6.客户端测试(上面都是服务器敲的命令)【ip那里可以换成域名】

git clone git@ip:/具体目录/yourweb.git
如:

git clone git@ip:/home/ubuntu/yourweb.git

二、同步更新自己网站的文件

1.进入yourweb.git的hooks目录

想想windows的hook就应该很好理解了
说明:
钩子(hooks)是一些在$GIT-DIR/hooks目录的脚本, 在被特定的事件(certain points)触发后被调用。

post-receive:这个hook由远程资源库的'git-receive-pack'触发,此时,本地资源库的'git push'已经完成,且所有ref已经更新.

更详细请看http://www.360doc.com/content/12/0606/23/10140166_216510889.shtml

post-receive一般是不存在的

cd yourweb.git/hooks
sudo vim post-receive


2.在post-receive加入下面代码

git checkout :检出代码
-f/--force:强制
#!/bin/sh
GIT_WORK_TREE=/XXXX/XXXX  git checkout -f
其中/XXXX/XXXX为你的网站的目录

3.修改该文件权限,增加执行权限

sudo chmod +x post-receive


4.递归修改网站目录所有者

这个我暂时不知道还有更好办法,有肯定有,知道的可以告诉我,因为不这样 post-receive没权限把代码放在这网站根目录
/XXXX/XXXX 为网站的网站目录

sudo chown  -R git:git /XXXX/XXXX
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: