在Linux下搭建Git服务器步骤

  • Post category:Linux

下面是在Linux下搭建Git服务器的完整攻略:

准备工作

在开始之前,需要安装Git软件,以及一个SSH服务。如果您的Linux发行版已经内置了Git和SSH,可以跳过这一步。否则,可以按照以下步骤进行安装:

# Ubuntu/Debian Linux
sudo apt-get install git openssh-server

# CentOS/Fedora Linux
sudo yum install git openssh-server

配置SSH服务

使用Git时,通常需要通过SSH协议进行远程访问。因此,我们需要配置SSH服务,确保它能够正常工作。

  1. 首先,打开SSH配置文件 /etc/ssh/sshd_config。可以使用vim或nano等文本编辑器进行编辑。
sudo vim /etc/ssh/sshd_config
  1. 找到以下这行配置:
# Port 22

如果有注释,将其删掉,并把后面的22改成另一个端口号(比如2222),这是为了提高安全性。

  1. 找到以下这行配置:
# PermitRootLogin yes

将其改为:

PermitRootLogin no

这是为了禁止使用root账户登录SSH。

  1. 执行命令重启SSH服务。
sudo service ssh restart

创建Git库

在设置好SSH服务之后,我们就可以开始创建Git库了。首先,选择一个合适的文件夹作为Git仓库的根目录。

例如,在/home/git目录下创建一个名为test.git的Git仓库,执行以下命令:

sudo mkdir /home/git/test.git
cd /home/git/test.git
sudo git init --bare

其中,–bare选项表示创建一个空的Git仓库,不包含工作目录。

配置访问权限

默认情况下,新创建的仓库只有用户git能够访问。为了允许其他用户访问,我们需要修改仓库的访问权限。假设我们要允许用户james和lucy访问test.git,执行以下命令:

cd /home/git/test.git
sudo chown -R git:git .
sudo chmod -R 755 .
sudo mkdir hooks
sudo chmod -R 777 hooks

以上命令的作用分别是:

  • 将仓库的所有者改为git用户;
  • 修改目录和文件的权限,确保其他用户能够读取和执行(可执行文件及脚本)(一些老师在权限上会因为安全原因禁止使用777权限);
  • 创建hooks目录,这个目录用来存放Git钩子;
  • 修改hooks目录的权限,确保其他用户可以访问。

然后,执行以下命令,将允许用户james和lucy的公钥添加到Git仓库中,以实现SSH公钥认证。

sudo vim /home/git/test.git/authorized_keys

进入vim之后按i开始编辑,将以下两行公钥复制并粘贴到其中:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOwFlaa8ui5j5lwz3ukec9kcJRLdtL/o9s8yJIhHcSayXr5BeGXzue8G3NLPlL5f6y/8chNDWLYzl6lkdjgEr1x6gd5OZ5dLoPHoxA7iwkAuV1KNn+eo4cMeZY+F9Xlh2herNoN77Pd7V6dw2XF6v0A0oQpxx0XgGN/dL97jMQPz/CFBoeM9zbd7lmrTXYtjxhDQ+f2Ya6r97gcAMy+v1IskMZb1hQhxPonPhdpesV30Ir1QcfTgTw8AvYTDbIoF3V+MYNjcOr8A+bRV67g5yFWpNvOdCvD2Yqh/ztEhZJ+bxFzRlGbwhdWzytydUgB5OJ6lK5Q+WVieCPx james@mycomputer
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC7zQb85/uhLhdDsFv6Oec9ajNcvR9gBAueqwVdUQN9Xt1S3rAFeE/MVMy/Z1tyMup4iAjscn9E8u9kAIgEzLcXdGjoyLhMuH7SoEYB2gJtN7+ajlsD88TXUyKTm11pLpcpzt3Eh6QvmKC/ElwEGC2L7ZLKJ8WrbflvO3KBA/bJpC8bSKcxU3/nmRMQNB+UbJfUVamnQZmsS4JXu/fNdU9/YjHhxHY1PQwI9Kg81N+4S0eV6tcmjMqVUQizVmYj2uwU9naTe3V6kX4ddc+eFZT3zOPf+PjmBtLieN5BmUA/4S/r14tkHTJlCfjfGPR3v4F3LLY9rSAbD9mNdQa9mWXyCAxL4ZSwgo4F+P2NBb+pTQXr9NIPZYttByNJQKFuy1Jv9JzZZFPbjUj/8/v3Z8dl7+fD7hj3bZCD2PUzeGuhkGs3ob+86ttQGWh3+yTYODLrF5YLFi8Bs1SFLCbHmZtY+OYj+0L6wGbg+NDWRDELL/kcD89LbA+E5Yz0/3hMkZB91qDBe0D5PmJVRQa3I3haBV/A8HphAQBezEGBAkskAk9AsNTV8OcM8QOT+H1hRYef1ZVzXWlwZ7/JcG7c/eHtSbUnnMOB4+Oi06M7wL1P+TKw/pTmnffJvE/4EAsAPF1g7nLYCZtrpzl9YG2DQ== lucy@mycomputer

选择保存并退出vim,按ESC:wq回车。这时候authorized_keys文件中已经写入两个用户的公钥。

测试Git服务器

现在,我们已经创建好了Git库,并配置了访问权限,接下来可以测试Git服务器是否正常工作。

  1. 在本地,执行以下命令,将本地的代码库推送到Git服务器上。在这里我们以test为例子。
git remote add origin git@yourserver:/home/git/test.git
git push -u origin master

其中yourserver替换为你SSH服务器的IP地址或主机名。

  1. 在服务器端,执行以下命令,查看test.git是否有新的提交记录。
cd /home/git/test.git
sudo git log

如果成功,应该可以看到之前推送的所有提交记录。

以上是在Linux下搭建Git服务器的完整攻略。如果您遇到了问题,可以参考以上步骤进行排查。同时,还可以参考其他资料,了解更多高级功能和使用方法。

示例1:

例如,在/home/git目录下创建一个名为test.git的Git仓库,执行以下命令:

sudo mkdir /home/git/test.git
cd /home/git/test.git
sudo git init --bare

示例2:

假设我们要允许用户james和lucy访问test.git,执行以下命令:

cd /home/git/test.git
sudo chown -R git:git .
sudo chmod -R 755 .
sudo mkdir hooks
sudo chmod -R 777 hooks

其中,–bare选项表示创建一个空的Git仓库,不包含工作目录。