跳到主要内容

部署git服务器

一、环境

  • CentOS7
  • git
提示

git的版本要大于2.0,安装2.0以上的版本可以参考:安装git

二、配置ssh访问git

1. 创建git用户

创建git用户和组

groupadd git
useradd git -g git

2. 创建证书登录

把客户端id_rsa.pub文件中的公钥导入到/home/git/.ssh/authorized_keys文件里,从而使客户端可以免密登录

cd /home/git/
mkdir .ssh
chmod 755 .ssh
touch .ssh/authorized_keys
chmod 644 .ssh/authorized_keys
vim .ssh/authorized_keys
提示

若远程登录测试需要输入密码,可以检测服务器上的SSH配置允许公钥认证是否打开

ssh git@yuhaiyuan.asia     # 测试

vim /etc/ssh/sshd_config # 编辑sshd的配置文件
...
PubkeyAuthentication yes # 取消注释,注意:这个不是必然条件,但是可以尝试

systemctl restart sshd # 重启,使配置生效

3. 初始化仓库

git init /home/git/仓库名
提示
  • git init:初始化仓库
  • git init --bare:初始化裸仓库,相当于git init的.git

4. 授权git用户访问

chown git:git -R /home/git/

5. 通过ssh连接git

git clone git@IP:/home/git/仓库名
提示

若报如下错误,是因为git没有安装在默认目录:/usr/bin,那怕给git添加了环境变量也不行,这时需要创建一个链接,把git-upload-pack放进去。

# 报错
bash: git-upload-pack: command not found
fatal: Could not read from remote repository.

# 解决方案
ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack

其实还有另外一个解决方案,就是安装依赖gettext-devel,但是会同时安装git1.8,无法分开,故放弃此方案。

6. 设置ssh代理

找到ssh客户端的配置文件,以Windows为例,添加如下内容:

C:\Users\用户名\AppData\Local\Programs\Git\etc\ssh\ssh_config

Host ip
User git
ProxyCommand connect -H 代理ip:端口 %h %p # http代理
ProxyCommand connect -S 代理ip:端口 %h %p # socks代理
提示

若在内网环境下,可以设置ssh代理连接git仓库,否则,不需要设置代理。

三、配置http访问git

1. 安装Apache

yum install -y httpd

2. 修改Apache的配置文件

配置文件:/etc/httpd/conf/httpd.conf

vim /etc/httpd/conf/httpd.conf

# 1,修改用户和组
User git
Group git

# 2,添加如下内容
<VirtualHost *:80>
ServerName IP/域名 # 主机名或IP
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv GIT_PROJECT_ROOT 仓库地址 # 设置git仓库地址
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/ # 将以/git/开头的访问路径映射至git的CGI程序git-http-backend,从而访问到git仓库的内容
</VirtualHost>

3. 重启Apache

每次修改完配置后,都需要重启Apache,才能让设置生效

systemctl restart httpd

4. 通过http访问git

git clone http://IP/git/仓库名

5. 设置http代理

git config --system http.proxy http://ip:端口                          # 设置所有网址走代理                     
git config --system http.https://github.com.proxy http://ip:端口 # 设置特定网址走代理

提示

http代理需要设置在系统配置才生效。

四、配置git仓库

1. 启用master分支

cd /home/git/仓库名

git config user.name "用户名" # 设置用户名
git config user.email 邮箱地址 # 设置邮箱
git add 文件名
git commit -m '备注'
git branch # 列出分支,确认master起来
提示

新建git仓库需要完成commit才能使master分支生效,否则会提示找不到分支。

2. 设置允许合并分支

git config receive.denyCurrentBranch updateInstead