服务端
1、查看是否安装git git --version
可以看到我的版本比较新,如果版本过低的话,可以执行下面命令,卸载旧版本 yum remove git
2、安装依赖库
# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
# yum install gcc perl-ExtUtils-MakeMaker
3、下载解压git的源码包 (https://mirrors.edge.kernel.org/pub/software/scm/git/ 有各个版本,我选择了2.9.2版本下载)
# wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.3.tar.gz
#tar -xzvf git-2.9.3.tar.gz
4、安装git 编译安装大概几分钟就可搞定。
# cd git-2.9.3
# make prefix=/usr/local/git all //编译安装到/usr/local/git 目录下面
# make prefix=/usr/local/git install
5、第4步如果报 undefined reference to `libiconv' 错误请看,如果没报错,请跳过此步骤
5.1 查看是否存在 /usr/local/lib/libiconv.so 文件,如果没有,则需要安装 libiconv(安装请参考网上教程)
5.2 如果存在文件,或者已经安装完libiconv库,创建一个软链到/usr/lib
# ln -s /usr/local/lib/libiconv.so /usr/lib
# ln -s /usr/local/lib/libiconv.so.2 /usr/lib
5.3 然后回到刚才编译安装git的目录继续编译
# cd 到你刚才解压git的目录下面
# make configure
# ./configure --prefix=/usr/local --with-iconv=/usr/local/libiconv
# make && make install
6、检查是否安装成功
# git --version
git安装完毕
7、创建一个git 用户组合用户 用来运行git服务
# groupadd git //创建组
# useradd git -g git //创建git用户,并加入刚才创建的git组里面
# passwd git //为git 用户添加密码
8、创建证书,免密登录
8.1 客户的生成秘钥
# git config --global user.name "Timi" // " " 里面是你要创建的用户名
# git config --global user.email "Timi@qq.com"
8.2 查看公钥私钥
window 用户在 C盘/用户/当前所登录的用户文件夹/.ssh/
linux 用户 默认情况下, SSH 密钥存储在其 ~/.ssh 目录下
其中*.pub 为公钥,可以随便透漏给别人8.3 收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
# cd /home/git/ (如果没有git目录,请删除git用户组合用户重新创建git用户组合git用户)
# mkdir.ssh
# chmod700.ssh
# touch.ssh/authorized_keys
# 将公钥复制到 authorized_keys
8.4 Git服务器打开RSA认证 。在Git服务器上首先需要将/etc/ssh/sshd_config中将RSA认证打开,
即:将配置文件修改
.RSAAuthentication yes
.PubkeyAuthentication yes
.AuthorizedKeysFile .ssh/authorized_keys
9、初始化Git仓库,并将现有的项目加入到git
9.1 创建一个空仓库
# cd /data
# git init --bare test.git //服务器上的Git仓库通常都以.git结尾。
# chown -Rf git:git test.git
9.2 将现有的项目加入git
# cd /home/www/tp5
# git init
# git add .
# git commit -m '将现有的项目加入git'
# git remote add origin git@114.215.214.1:/home/data/test.git
# git push origin master
9.3,其他开发者就可以使用git clone 将项目克隆到本地,如果需要免密克隆提交,请参考 第8步
# git clone git@114.215.214.1:/home/data/test.git
10、将git仓库的内容同步到web开发目录
我的git仓库为 /home/data/test.git
web目录为 /home/www
10.1 添加钩子
# cd /home/data/test.git/hooks
# vim post-receive
#!/bin/bash
git --work-tree=/home/wwwroot/test checkout -f
sudo chown -Rf www:www /home/www/test
//注释
添加第二行是因为我的git 仓库所属是git,而开发目录所属为www,所以更改了一下目录所属,当然你也可以不添加,没有添加第二行,直接可以跳到10.2步
如果添加了第二行,还要执行一下动作,使git普用户可以使用 chown命令,否则会报错
# visudo
添加一行 %git ALL=NOPASSWD:/bin/chown10.2 给钩子添加可执行权限
# chmod +x post-receive
然后就可以开始从本地开发了,在本地版本库工作区里开发,然后使用git push指令推送到远程裸版本库,钩子会post-receive自动生效,将文件检出到--work-tree目录里,实现同步
写到最后
1》为了安全起见,可以将git用户禁止shell 登录
# vim /etc/passwd
将 git: x :1001:1001:,,,:/home/git:/bin/bash
改为:
git: x :1001:1001:,,,:/home/git:/usr/bin/git-shell
2》》如果发现已经添加了公钥到服务器,但是还提示输入密码。
可尝试 chmod 700 /home/git/.ssh chmod 644 /home/git/.ssh/authorized_keys
网友评论