0%

Ubuntu命令行搭建git服务器并开启pages

  1. 概述
  2. 在服务器创建用户
  3. 创建证书登录
  4. 创建一个仓库

搭建Git服务器 - 廖雪峰的官方网站 (liaoxuefeng.com)

概述

使用Ubuntu系统存放git裸仓库和文件镜像,前者用来作为git仓库的远程存储库,后者作为预览或者开启pages的内容呈现。初步的需求较为简单,就是作为一个博客发布页的存放位置,可以提供pages服务以供浏览。

服务器准备:首先需要在ubuntu中创建名为git的系统用户,远程仓库地址为ssh链接:git@[address]:[username]/[repo_name].git;接着为该用户分配管理员权限,便于执行一些文件操作;最后出于安全考虑禁用该用户的远程shell登录,保证其功能唯一性。

创建远程存储库:创建两个文件夹——git仓库(/home/git/whuls/sample.git)和文件镜像(/home/git/whuls/sample),在git仓库中创建推送后钩子(post-receive),用于更新文件镜像;接着将钩子的文件权限设置为可执行;最后将两个文件夹的所属权设置为git用户。

在服务器创建用户

创建用户git

1
sudo adduser git

git分配管理员权限:在/etc/sudoers中添加一行

1
git ALL=(ALL:ALL) ALL

禁用git的远程登录:在/etc/passwd中,找到git:x:1001:1002:,,,:/home/git:/bin/bash,将其改为:

1
git:x:1001:1002:,,,:/home/git:/usr/bin/git-shell

/etc/passwd每条记录的格式为:account:password:用户ID:组ID:一般信息;目录;终端

这是将终端设备改为git-shell,该终端每次一登录就自动退出,避免登录;但可以正常通过ssh使用git。

创建证书登录

找到/home/git/.ssh/authorized_keys,若不存在则创建,客户端的将~/.ssh/id_rsa.pub中的公钥拷贝进去,一行一个。

客户端配置~/.ssh/config,写入远程的主机的name和ip(name可以与ip相同,也可以自定义字符串)

1
2
3
4
5
Host [name]
HostName [ip]
User git
ForwardAgent yes
IdentityFile ~/.ssh/id_rsa

创建一个仓库

创建镜像

1
sudo mkdir /home/git/whuls/sample

初始化裸仓库

1
sudo git init --bare /home/git/whuls/sample.git

先把所有权改为当前执行的用户

1
sudo chown -R whurs:whurs /home/git/whuls/sample.git

创建推送后钩子

1
sudo echo "git --work-tree=/home/git/whuls/sample --git-dir=/home/git/whuls/sample.git checkout -f" > /home/git/whuls/sample.git/hooks/post-receive

设置钩子可执行

1
sudo chmod u+x /home/git/whuls/sample.git/hooks/post-receive

最后改回所有权

1
2
sudo chown -R git:git /home/git/whuls/sample.git
sudo chown -R git:git /home/git/whuls/sample

创建完成后将git@[ip]:whuls/sample.git添加到git的远程地址中,就可以使用该地址了;将/home/git/whuls/sample作为静态页面,即可实现pages。