zoukankan      html  css  js  c++  java
  • GIT自动更新操作说明

    一、安装GIT

    1、下载GIT源码并安装

    $ git --version  #先查看GIT是否已经安装,已经安装则不需要重新安装

    $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel

    $ wget http://git-core.googlecode.com/files/git-1.9.0.tar.gz   或者  wget https://www.kernel.org/pub/software/scm/git/git-1.9.0.tar.gz tar

    $ tar zxvf git-1.9.0.tar.gz

    $ cd git-1.9.0

    $ make prefix=/usr/local/git all

    $ make prefix=/usr/local/git install #root用户运行

     如果编译时提示错误:
    LINK git-credential-store
    libgit.a(utf8.o): In function `reencode_string_iconv’:
    /opt/git-master/utf8.c:530: undefined reference to `libiconv’
    libgit.a(utf8.o): In function `reencode_string_len’:
    /opt/git-master/utf8.c:569: undefined reference to `libiconv_open’
    /opt/git-master/utf8.c:588: undefined reference to `libiconv_close’
    /opt/git-master/utf8.c:582: undefined reference to `libiconv_open’
    collect2: ld 返回 1
    make: *** [git-credential-store] 错误 1

    $ cd /usr/local/src/

    $ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

    $ tar -zxvf libiconv-1.14.tar.gz

    $ cd libiconv-1.14

    $ ./configure --prefix=/usr/local/libiconv && make && make install

    重新安装GIT

    $ cd /usr/local/src/git-1.9.0

    $ ./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv

    $ make

    $ make install

    2安装完成,查看GIT的版本

    $ /usr/local/git/bin/git --versiongit version 1.9.0

    GIT命令添加到全局变量中

    $ vi /etc/profile在最后添加 export PATH=$PATH:/usr/local/git/bin

    $ source /etc/profile  #修改使其生效


    查看GIT版本

    $ git --versiongit version 1.9.0

    OKGIT软件安装成功。 

    二、安装Gitolite

    1、添加git用户

    $ useradd git

    $ passwd git

    2、切换用户并生成密钥

     $ su git

    $ ssh-keygen -t rsa

    一路按回车即可 

    3、下载并安装Gitolite

    $ git clone http://github.com/sitaramc/gitolite.git 

    $ cd gitolite

    $ pwd  

    /home/git/gitolite

    $ ./install

    use the following full path for gitolite:
        /home/gitadmin/gitolite/src/gitolite

    $ /home/gitadmin/gitolite/src/gitolite

    $ /home/gitadmin/gitolite/src/gitolite setup

    出错:

    Initialized empty Git repository in /home/gitadmin/repositories/gitolite-admin.git/
    Initialized empty Git repository in /home/gitadmin/repositories/testing.git/
    WARNING: /home/gitadmin/.ssh/authorized_keys missing; creating a new one

    解决

    $ cd src

    $ ./gitolite setup -pk /home/git/.ssh/id_rsa.pub

    Initialized empty Git repository in /home/gitadmin/repositories/gitolite-admin.git/
    Initialized empty Git repository in /home/gitadmin/repositories/testing.git/
    WARNING: /home/gitadmin/.ssh/authorized_keys missing; creating a new one

    表示安装成功,并且初始化了基本git库

    4、增加用户与版本库

    $ git config –global user.name “yourname”

    $ git config –global user.email “youremail@localdomain.com”

    $ cd ~

    $ git clone git@127.0.0.1:gitolite-admin

    $ cd gitolite-admin

    进入 gitolite-admin 目录,其中的 keydir 目录是用来放置用户公钥的,而 conf/gitolite.conf 则是用来配置用户和版本库

    编辑 $vi conf/gitolite.conf配置成如下:

    @web_rw           = lisi
    @web_r            = zhangsan

    repo gitolite-admin    

    RW+      =   id_rsa

    #repo testing

    #RW+     =   @all

    repo webapp   

    RW+      = @web_rw    

    RW       = @web_rw    

    R        = @web_r

    其中所有用户名的公钥文件应该放在keydir文件夹下面

     

    5、使修改的配置文件生效

    $ git add .

    $ git commit -am “add web repo”

    $ git push 

    OK,配置文件生效,也会生成了线上webapp空的GIT库

    GIT地址为:git@10.11.121.9:webapp.git

    三、设置GIT钩子自动更新代码

    $ cd /home/www/php/web.com  #当前是在git用户下操作

    $ git clone git@10.11.121.9:webapp.git  #拉取GIT库代码

    $ cd ~

    $ cd /home/git/repositories/webapp.git/hooks

    $ cp post-update.sample post-update #添加GITa添加钩子文件

    $ vim post-update  #编辑如下,保存退出

    #!/bin/sh

    #

    # An example hook script to prepare a packed repository for use over

    # dumb transports.

    #

    # To enable this hook, rename this file to "post-update".

    unset $(git rev-parse --local-env-vars)

    cd /home/www/php/web.com/webapp

    sudo /usr/local/bin/git pull

    sudo chown -R www:www .

    注释:post-update这个脚本在提交文件到git仓库时,会运行文件内的代码,所以通过这样的方法,我们在客户端push提交代码后,就能自动更新网站的文件了。

    $ su root

    $ vi /etc/sudoers

    1、注释掉:

    #Defaults    requiretty

    解决错误:sudo:抱歉,您必须拥有一个终端来执行 sudo

    2、配置git拥有超级权限执行chown命令,同时设置sudo不用输入密码的方法

    root    ALL=(ALL)       ALL

    git     ALL=(ALL) NOPASSWD: NOPASSWD: ALL   #添加左配置

    四、使用TortoiseGit推送线上代码操作说明

    1、在本地开发环境新增一个与线上代码同步的GIT库:web_online,对应地址为git@192.168.0.111:web_online.git,并设置好权限,只能管理员读写。

    2、web_online克隆与主库web相同的代码。

    3、修改web_online配置文件与线上的一致,并提交。

    4、然后把web_online代码推送到线上的代码库,即git@10.11.121.9:webapp.git

    5、根据代码对应位置设置好虚拟主机或者通过软链接来设置。

    五、关于公钥私钥配置的操作说明

    1、在linux下,用户默认公钥和私钥的位置

    /用户目录/.ssh/id_rsa       #用户的私钥

    /用户目录/.ssh/id_rsa.pub   #用户的公钥

    2、生成其他用户公钥密钥

    $ ssh-keygen -t rsa   #下一步输入公钥密钥的名称,例如zhangsan,往下全部按Enter

    3、设置会话管理配置

    $ vi  /用户目录/.ssh/config 配置成如下:

    Host 192.168.0.111   ##别名,可以随意命名,链接时使用这个名字

      HostName 192.168.0.111    ##主机名

      User zhangsan             ##用户名

      Port 22                   ##端口

      IdentityFile ~/.ssh/zhangsan  ##密钥文件的路径

    4、把公钥文件放置到gitolite服务端的keydir文件下,然后使修改添加的配置文件生效即可 (查看上面安装Gitolite5点说明

  • 相关阅读:
    【贪心 堆】luoguP2672 推销员
    【贪心 思维题】[USACO13MAR]扑克牌型Poker Hands
    「整理」[图论]最短路系列
    收集到的小玩意儿
    初遇构造函数
    在2440开发板液晶上显示两行字
    error: converting to execution character set: Invalid or incomplete multibyte or wide character
    宽字节
    宽字符wchar_t和窄字符char区别和相互转换
    linux获取文件大小的函数
  • 原文地址:https://www.cnblogs.com/gxldan/p/4547020.html
Copyright © 2011-2022 走看看