嘿,你忘记写博客了~

盛年不重来,一日难再晨,及时宜自勉,岁月不待人....

Git实现服务器搭建和自动化部署

发布时间:2018-11-13编辑:windydeng浏览(479)评论览(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文件夹

    直接上图:

                    

    QQ图片20181113154255.png

    然后就是给git用户授权访问gittest.git,输入 

    chown -R git:git gittest.git

    chmod 777 gittest.git


    接着就可以在本地进行克隆了,本地也要先安装好Git,至于怎么安装不详细讲了,

    git clone git@你的IP:/home/data/git/gittest.git 

    接着输入密码就OK了,上图:

                    

    QQ图片20181113154839.png

                    

    好了,基本完成,但是有一个问题,我是不是每次克隆或者推送都要输入密码呢?

    答案是可以利用公钥解决,在本地的Git Bash Here 输入 :

    ssh-keygen -t rsa -C "你的邮箱"

    就会在

    QQ图片20181113155501.png

    这个下面生成两个文件,一个私钥一个公钥

    现在复制公钥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权限

                    

    QQ图片20181113160333.png

    注意这里的git路径是在/home/git的路径,与/home/data/git存放仓库的地方是不同的

    好了 我们继续在本地克隆下,上图:

                    

    QQ图片20181113160959.png

    好了完成了,接下来就实现自动化部署问题了~


    3.利用hooks实现自动化部署

    我在网站根目录有一个gitHook项目目录,里面有两个字目录,并且包含文件,这要是为了测试所需

    我的项目在/www/wwwroot/gitHook

    首先在这里面进行一个非裸仓库的初始化,即上面提到的不用--bare的初始化,输入:

    git init   上图:

                    

    QQ图片20181113161626.png

    然后把目前的文件写入到git缓存区进行提交,输入:

    git add *

    git commit -m "git init commit"

    直接上图:

                    

    QQ图片20181113161847.png


    本人经验证,需要把 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

    具体定位项目目录还是按照你自己的情况来~

                   

    QQ图片20181113162334.png

    然后就是授权

    chown -R git:git post-receive

    chmod 777 post-receive

    必要的话重新删除本地的gittest重新克隆下来,现在我添加一个文件推送上去,

    QQ图片20181113171510.png

    然后提交推送上去,结果线上的项目显示我刚创建的test.txt成功推送上去了

    QQ图片20181113171637.png

    好了,接下来就可以去自己测试了~

                    

    踩坑说明

    期间遇到的坑大多是 权限 问题导致的,用 chownchmod 修改所有权和操作权限即可。

                            


关键字词:Git实现服务器搭建和自动化部署

上一篇: Socket通信原理