zoukankan      html  css  js  c++  java
  • 搭建git服务器及利用git hook自动布署代码

    注意:服务器:Ubuntu Server 14.04,我的项目比较小,所有操作都使用root,建议最好新建一个用户(需要有管理员权限,否则在后面使用hooks自动部署代码时会出现各种权限问题,很蛋疼的)。

    一、搭建GIT服务器

    1. 安装GIT

    1.1 安装前最好先更新apt-get,同时需要事先安装好openssh,对应的两条命令如下:

    apt-get update
    apt-get install openssh
    

    1.2 通过apt-get安装git

    apt-get install git

    2. 初始化一个仓库

    1.进入一个目录,选择该目录做为GIT仓库

    cd /opt

    2.初始化一个仓库,名称为 test.git

    git init --bare test.git
    此刻,仓库的路径就是

    /opt/test.git

    3.我们通过ssh命令来操作git仓库,为了避免每次输入密码,先在本地生成一个公钥,命令如下

    ssh-keygen

    提示:一路回车下来以后在 ~/.ssh 目录下可以看到一个id_rsa.pub的文件,将其中的内容复制到服务器的 /root/.ssh/authorized_keys文件中,如果是多个伙伴协同开发,只需要在该同伴的电脑上生成私钥对,将id_rsa.pub的内容复制到authorized_keys文件中,每一个用户的私钥各占一行,中间不能有空格,回车等字符

    3. 本地克隆远程仓库

    git clone root@123.123.123.123:/opt/test.git

    将123.123.123.123替换为你的服务器ip

    至此,一个git仓库就完成了,你可以本地提交、推送,接下来我们来实现通过git hooks实现代码的自动部署

    二、实现代码自动部署

    1. 服务器作为客户端访问git仓库

    要获取GIT仓库的代码,服务器此时需要作为一个客户端访问GIT仓库,所以首先要将服务器root(记住用户必须是同一个用户)用户的公钥加入/root/.ssh/authorized_keys文件中,生成公钥的方法参考步骤

    二、2.3

    2. 为服务器开发目录克隆GIT仓库

    将该服务器上的git代码库克隆一份到服务器开发目录,假设目录是/var/www/

    git clone root@123.123.123.123:/opt/test.git

    3. 修改post-uodate

    修改git仓库下hooks下的 post-update.sample (本例子的路径:/opt/test.git)修改为 post-update ,并写入以下脚本:

    #!/bin/sh
    #
    DEPLOY_DIR=/var/www/test/
    echo "start git pull var/www/test/"
    cd $DEPLOY_DIR
    env -i git reset --hard
    env -i git pull
    echo "end"
    

    注意post-update的权限,如果不放心,直接改权限为 777,最好的做法就是跟hooks下的其他文件权限一致。

    保存文件,当每次客户端有推送时,服务器端的post-update会自动从git仓库中pull一份到服务器上指定的开发目录

    这里需要注意开发目录的权限,以及开发目录的正确性,本人比较懒,项目比较小,就直接root用户了。

    陈朔同学第一次认真的写博文(第一次,很烂,将就看,转载请注明出处)

  • 相关阅读:
    练习44-继承和组合
    CF 1329B Dreamoon Likes Sequences
    CF 1362C Johnny and Another Rating Drop
    CF 1391D 505
    CF 1383B GameGame
    CF1360F Spy-string(暴力)
    Java 之 关键字与标识符
    Java 之 Java 注释与 API
    Java 之 第一个Java程序
    Java 之 Java开发环境
  • 原文地址:https://www.cnblogs.com/chenshuo/p/5091013.html
Copyright © 2011-2022 走看看