Git实现服务器搭建和自动化部署
发布时间:2018-11-13编辑:windydeng浏览(6739)评论览(0)
之前自己也是在慢慢探索进行服务器LNMP环境搭建以及PHP项目的部署问题,现在遇到了如何进行本地修改实现同步网站项目的问题。研究了很久,把问题算是理的清清楚楚了,坑很多,不过还是学习了一下整个git搭建过程以及利用hook实现自动化部署问题。
1.首先是GIT安装搭建问题,安装(centos系统):
yum install git
查看是否安装成功
Git --version
2.搭建:
创建一个git用户 adduser git
设置密码 passwd git ,然后就会接着输入你想要定义的密码
然后我们就可以创建一个裸仓库了,至于为什么是创建裸仓库而不是含有工作区域的仓库呢,据我理解是这里只是供本地克隆。
进入/home/data,创建一个git目录专门来存放git仓库的,然后创建一个裸仓库
git init --bare gittest.git , 这里声明下,非裸仓库不需要加--bare
此时这个裸仓库就在/home/data/git/gittest.git了,至于创建的用户会在/home生成一个git文件夹
直接上图:
然后就是给git用户授权访问gittest.git,输入
chown -R git:git gittest.git
chmod 777 gittest.git
接着就可以在本地进行克隆了,本地也要先安装好Git,至于怎么安装不详细讲了,
git clone git@你的IP:/home/data/git/gittest.git
接着输入密码就OK了,上图:
好了,基本完成,但是有一个问题,我是不是每次克隆或者推送都要输入密码呢?
答案是可以利用公钥解决,在本地的Git Bash Here 输入 :
ssh-keygen -t rsa -C "你的邮箱"
就会在
这个下面生成两个文件,一个私钥一个公钥
现在复制公钥id_rsa.pub里面的内容
接着在服务器的/home/git里面新建一个.ssh目录,输入:
mkdir .ssh
cd .ssh ,进入到了.ssh创建一个authorized_keys文件
接着就是vi authorized_keys文件把在本地复制的id_rsa.pub里面的内容粘贴到authorized_keys
里面来,保存结束.
然后就是授权问题,返回到git层,输入:
chmod 755 .ssh
注意这里不能用777权限,不然配置无效
进入到.ssh里面输入:
chmod 600 authorized_keys 上图:这里同样需要600权限
注意这里的git路径是在/home/git的路径,与/home/data/git存放仓库的地方是不同的
好了 我们继续在本地克隆下,上图:
好了完成了,接下来就实现自动化部署问题了~
3.利用hooks实现自动化部署
我在网站根目录有一个gitHook项目目录,里面有两个字目录,并且包含文件,这要是为了测试所需
我的项目在/www/wwwroot/gitHook
首先在这里面进行一个非裸仓库的初始化,即上面提到的不用--bare的初始化,输入:
git init 上图:
然后把目前的文件写入到git缓存区进行提交,输入:
git add *
git commit -m "git init commit"
直接上图:
本人经验证,需要把 gittest.git 删除重新建立一个裸仓库,输入:
rm -rf gittest.git
接着从项目根目录克隆过来一个仓库,输入:
git clone --bare /www/wwwroot/gitHook gittest.git
接着进入到/home/data/git/gittest.git里面来,进入到hooks里面
cd hooks
创建一个钩子文件
vi post-receive
把下面这段复制进入保存退出
#!/bin/bash
git --work-tree=/www/wwwroot/gitHook checkout -f
具体定位项目目录还是按照你自己的情况来~
然后就是授权
chown -R git:git post-receive
chmod 777 post-receive
必要的话重新删除本地的gittest重新克隆下来,现在我添加一个文件推送上去,
然后提交推送上去,结果线上的项目显示我刚创建的test.txt成功推送上去了
好了,接下来就可以去自己测试了~
踩坑说明
期间遇到的坑大多是 权限 问题导致的,用 chown 和 chmod 修改所有权和操作权限即可。
关键字词:Git实现服务器搭建和自动化部署
暂无评论