搭建git私有服务器及同步更新自己网站的文件 一、搭建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.把你的公钥放服务器上

放在这个.ssh目录的authorized_keys文件,没有就自己创建,有多个每个公钥空一行就可以了

/home/git/.ssh/authorized_keys


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

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

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

若不是默认端口,比如5022端口(注意那么git用户就要改成可登录的了,比如/bin/sh)

 git clone ssh://git@ip:5022/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已经更新.

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