CentOS上搭建Git服务器的过程相对简单,主要步骤包括安装必要的软件、创建用户和组、初始化Git仓库以及配置SSH访问权限,以下是详细步骤:
1、安装Git
安装依赖:在CentOS上,首先需要安装Git及其依赖包,可以通过yum命令来安装。
```bash
sudo yum install y curldevel expatdevel gettextdevel openssldevel zlibdevel perldevel
```
安装Git:接着安装Git本身。
```bash
sudo yum install y git
```
2、创建用户和组
创建用户组:为了管理方便,创建一个专门的用户组来运行Git服务。
```bash
sudo groupadd git
```
添加用户到组:创建一个新用户并将其添加到git组。
```bash
sudo adduser phper g git
```
设置用户密码:为新用户设置密码。
```bash
sudo passwd phper
```
3、初始化Git仓库
创建目录:选择一个目录来存放Git仓库,data/git/learngit.git。
```bash
sudo mkdir p /data/git
sudo chown phper:git /data/git
```
初始化裸仓库:裸仓库是没有工作区的仓库,通常用于共享目的。
```bash
sudo u phper git init bare /data/git/learngit.git
```
4、配置SSH访问
生成SSH密钥:在客户端生成SSH密钥对。
```bash
sshkeygen t rsa C "your_email@example.com"
```
上传公钥到服务器:将生成的公钥上传到服务器的authorized_keys文件中。
```bash
cat ~/.ssh/id_rsa.pub | ssh git@your_server 'cat >> ~/.ssh/authorized_keys'
```
设置文件权限:确保.ssh目录及其文件权限正确。
```bash
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
```
5、克隆远程仓库
本地克隆:在本地机器上克隆远程仓库。
```bash
git clone git@your_server:/data/git/learngit.git
```
6、自动同步代码
修改postreceive脚本:为了让服务器自动拉取更新,需要修改钩子脚本。
```bash
#!/bin/sh
unset GIT_DIR
DeployPath="/alidata/www/project"
LogPath="/alidata/gitroot/project.git/hooks"
echo e "
=================date +"%Y%m%d %H:%M:%S"
===============
" >> $LogPath/gitsync.log 2>&1
cd $DeployPath
git pull origin master >> $LogPath/gitsync.log 2>&1
```
应用权限:确保脚本有执行权限。
```bash
chmod +x /path/to/your/postreceive
```
FAQs
1、为什么需要在服务器上禁用git用户的shell登录?
安全性考虑:禁用Shell登录可以防止攻击者通过SSH登录到git用户,从而增强系统的安全性,这是因为git用户的主要用途是运行git命令,而不是提供交互式shell会话。
2、如何解决“Permission denied (publickey)”错误?
检查公钥是否正确上传:确保你的公钥已经正确上传到服务器的authorized_keys文件中。
检查文件权限:确保.ssh目录及其下的authorized_keys文件权限设置正确(~/.ssh为700,authorized_keys为600)。
日志查看:查看/var/log/secure日志,检查是否有关于SSH密钥认证失败的详细信息。