centos 搭建git自动部署web应用
由于经常要搭建一些web服务器应用,而且我用的最熟的就是centos 7 了,但工作又是做开发,所以记录一下操作方法以便后期查阅(不适合linux小白)。
一、安装最新版本的git
官方地址:https://mirrors.edge.kernel.org/pub/software/scm/git/
编译安装:
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.16.2.tar.gz tar -zxvf git-2.16.2.tar.gz cd git-2.16.2 ./configure make & make install
有安装错误具体解决,安装完成后,添加git命令:
建立软连接:ln -s /usr/local/bin/git /etc/bin/git
检查是否正常安装: git --version
二、添加git用户组及用户
用户组 : groupadd git
用户: useradd git -g git
设置用户密码: passwd git
禁止git用户ssh登录(这一步骤可以等后面配置完成后再操作),参考http://blog.csdn.net/lgyaxx/article/details/72954121
查看git-shell所在目录:which git-shell #一般会是/usr/local/git-shell。
添加git-shell为git用户登录的运行脚本:
①vim /etc/shells ,在文件最后添加上 /usr/local/git-shell
②usermod -s /usr/local/git-shell
三、初始化仓库
cd /home/git
mkdir repos
mkdir repos/test
cd /repos/test
git --bare init
修改目录所有者为git
cd /home/git
chown -R git:git repos
四、自动部署设置
定位到仓库目录下面的hooks目录:/home/git/test/git/hooks
修改编辑(post-receive文件最好不要在window创建):vim post-receive
填入以下内容
#!/bin/sh DEPLOY_PATH=/home/www/xxx/ #网站应用的部署目录,应该先在该目录下面克隆一下仓库,以便能够执行下面的仓库更新 unset GIT_DIR cd $DEPLOY_PATH git reset --hard git pull chown xxx:xxxx -R $DEPLOY_PATH #重新修改网站目录的有属用户
(切换登录用户为git( su git),生成对应的密钥)
定位到/home/git/.ssh
生成登录密钥:ssh-keygen -t rsa -C "xxxx@xxx.com"
生成文件位置选择在当前位置 /home/git/.ssh
新建文件authorized_keys并写入公钥:cat /home/git/.ssh/id_rsa.pub > authorized_keys
使用git账号登录服务器,在/home/www/xxx/目录下面进行代码的初始化:
git clone git@xxx.xxx.xx.x:/home/git/repos/test
注意: /home/git/.ssh目录的权限必须是700, /home/git/.ssh/authorized_keys权限是644
四、远程克隆提交
git clone git@xxx.xxx.xx.x:/home/git/repos/test