月度归档:2017年12月

搭建git服务端同步部署代码到web目录

本文是在cneots7 下执行,本地是mac os

#在服务器上创建git用户

groupadd git
useradd git -g git
passwd yourpwd

#开放服务端用户免密码登录
vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
#指定公钥存放位置
AuthorizedKeysFile .ssh/authorized_keys

#切换用户 确保执行权限
su git

#创建相关免验证
cd /home/git/
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys

#mac os本地操作

目录下查看, id_rsa 、id_rsa.pub,若没有

cd ~/.ssh

一路回车

ssh-keygen -t rsa

就可以生成文件 id_rsa 、id_rsa.pub

#把id_rsa.pub内容写入到服务端文件authorized_keys
/home/git/.ssh/authorized_keys

#服务端防止git以ssh shell形式登录
vi /etc/passwd
#找到类似下面一行
git:x:1000:1000::/home/git:/bin/bash //原来的
git:x:1000:1000::/home/git:/usr/bin/git-shell //改为现在的

#创建git仓库目录

mkdir -p /home/git/sj/h5.git

#初始化git仓库
git init --bare /home/git/sj/h5.git

#让仓库接收远程提交代码
cd /home/git/sj/h5.git
git config receive.denyCurrentBranch ignore

#赋予写入权限
chmod -R 777 /home/git/sj/h5.git

#创建同步代码脚本
vi /home/git/sj/h5.git/hooks/post-receive


#!/bin/sh echo "=====================start server===========================" unset GIT_DIR DeployPath="/code/h5" cd $DeployPath echo "deploying the test web" git fetch --all git reset --hard origin/dev git stash git pull origin dev time=`date` echo "web server pull at webserver at time: $time." echo "=====================end server==========================="

#设置执行权限
chmod +x /home/git/sj/h5.git/hooks/post-receive

#服务端创建git同步代码目录
cd /code

git clone /home/git/sj/h5.git
#赋予目标权限读写权限
chmod -R 777 /code/h5

#服务端更新参考
git update-server-info

git checkout -f

#本地创建代码仓库

git clone git@you in ip:sj/h5.git
#添加多个仓库
git remote add dev git@you in ip:sj/h5.git

#切换权限
su root
#git赋予到nginx组
usermod -a -G git nginx

#设置代码目录权限
chown -R git:nginx /code
chmod -R 777 /code

#搭建参考 http://www.jianshu.com/p/11b380b6aa4d
#多仓库使用参考 http://wonux.tech/git-remote.html