部署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