git自动更新网站代码

1.实现过程
在linux上安装git服务、创建源版本库、从源版本库克隆得到网站目录,然后利用git中的hooks机制,在git push推送代码到源版本库的时候,触发编写的shell脚本,更新网站目录下的代码。

2.安装git服务

[root@xxx ~]# cd /usr/local/src
[root@xxx src]# wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.15.2.tar.gz
[root@xxx src]# tar -zxvf git-2.15.2.tar.gz
[root@xxx src]# cd git-2.15.2
[root@xxx git-2.15.2]# ./configure --prefix=/usr/local/git
[root@xxx git-2.15.2]# make && make install
对git config进行配置,表明当前是哪个用户进行的git操作
[root@xxx git-2.15.2]# git config --global user.name xincanzhe
[root@xxx git-2.15.2]# git config --glocal user.email [email protected]
[root@xxx git-2.15.2]# git config --list


3.创建源版本库

创建git管理的用户和组,对git服务进行管理。因为该git账号会被很多人使用进行版本库的克隆,为了安全,禁止使用git用户进行ssh登录
[root@xxx git-2.15.2]# groupadd git
[root@xxx git-2.15.2]# useradd git -g git
[root@xxx git-2.15.2]# passwd git
[root@xxx git-2.15.2]# vim /etc/passwd


git:x:1001:1001::/home/git:/bin/bash
改为
git:x:1001:1001::/home/git:/bin/git-shell
自定义的总版本库目录:/home/git/gitrepos
测试项目的版本库目录:/home/git/gitrepos/test
[root@xxx git-2.15.2]# cd /home/git/gitrepos/test
[root@xxx test]# git init --bare                #源版本库应该为裸版本库,即需要加参数--bare
[root@xxx test]# chown -R git:git /home/git/gitrepos    #修改版本库所属用户和组,即git


3.从源版本库克隆得到网站目录

自定义网站目录:/data/wwwroot/test
[root@xxx wwwroot]# git clone git@48.107.56.223:/home/git/gitrepos/test   #格式 git clone 用户@IP:源版本库目录
[root@xxx wwwroot]# chown -R git:git /data/wwwroot/test            #修改网站所属用户和组,即git

4.hooks机制

[root@xxx wwwroot]# vim /home/git/gitrepos/test/hooks/post-receive
[root@xxx wwwroot]# chmod +x /home/git/gitrepos/test/hooks/post-receive

post-receive文件内容为:
#!/bin/bash
DIR=/data/wwwroot/test
git --work-tree=${DIR} clean -fd
git --work-tree=${DIR} checkout --force


5.测试
在window环境下,安装对应的git服务(同样需要配置git config),然后创建git库。创建git库有三种方式:
a.从源版本库克隆;
  $    git clone [email protected]:/home/git/gitrepos/test;
b.在本地新建空目录,创建空的git库,然后与源版本库进行关联;
  $    mkdir test;
  $    git init;
  $    git remote add origin [email protected]:/home/git/gitrepos/test;
c.将本地已存在的git库与源版本库进行关联,假设已存在的git库为oldtest;
  $    cd oldtest;
  $    git remote add origin [email protected]:/home/git/gitrepos/test;

这边仅举例从源版本库克隆的方式:
$ cd test
$ touch readme.txt
$ git add readme.txt
$ git commit -m "add readme.txt file"
$ git status
$ git push -u origin master
查看48.107.56.223服务器网站目录是否同步更新
[root@xxx ~]# ls /data/wwwroot/test


6.其他git相关命令
版本库放在github官网,需要ssh方式连接,生成公钥:ssh-keygen  -t  rsa  -C  "github账号"
拉取远程版本库代码:git  pull  origin  master

 

猜你喜欢

转载自www.cnblogs.com/xincanzhe/p/10693514.html