Centos搭建Git服务器

系统环境

系统:Linux : Centos 7.3.1611
查看系统命令:lsb_release -a
查看 ssh 版本: ssh -V
输出以下表示没问题,可以继续。 版本可能不一致,能用即可。

OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013

安装配置 Git

建议以下操作都切换到 root

安装

# 请确保您切换到了root账户
$ su root
$ yum install -y git

# 验证是否安装成功
$ git --version

# 输出如下内容表示成功:
git version x.x.x.x

添加git的管理的账户和设置密码

设置专门管理 git 的账号非必须,但是建议这么操作。

# 添加git账户
$ adduser git

# 修改git的密码
$ passwd git

# 把git用户添加到sudo用户组中
$ sudo vi /etc/sudoers
#添加以下代码后 :wq! 强制保存退出vi
git ALL=(ALL) ALL

# 然后两次输入git的密码确认后。

# 查看git是否安装成功
$ cd /home && ls -al
# 如果已经有了git,那么表示成,参考如下:
drwxr-xr-x.  5 root root 4096 Apr  4 15:03 .
dr-xr-xr-x. 19 root root 4096 Apr  4 15:05 ..
drwx------  10 git  git  4096 Apr  4 00:26 git

# 默认还给我们分配一个名字叫git的组。

git的手动权限管理

经过以上步骤,其实服务器的基本已经配置好,但是需要设置权限和配置远程访问 git 仓库的方式。我们只介绍 ssh 的方式,https不做介绍。

配置服务端的ssh访问

切换到 git 账号,并创建 ssh 的默认目录和校验公钥的配置文件

# 切换到git账号
$ su git

# 进入 git账户的主目录
$ cd /home/git

# 创建.ssh的配置,如果此文件夹已经存在请忽略此步。
$ mkdir .ssh

# 进入刚创建的.ssh目录并创建authorized_keys文件,此文件存放客户端远程访问的 ssh的公钥。
$ cd /home/git/.ssh
$ touch authorized_keys

# 设置权限,此步骤不能省略,而且权限值也不要改,不然会报错。
$ chmod 700 /home/git/.ssh/
$ chmod 600 /home/git/.ssh/authorized_keys

此时,服务端的配置基本完成。接下需要把客户端的公钥拷贝到 authorized_keys 文件中。

配置客户端的ssh私钥并上传服务器

进入用户主目录的 .ssh 文件夹下

.ssh
├── id_rsa
└── id_rsa.pub  # 我们要用的私钥

拷贝私钥到 git 的服务器,把 id_rsa.pub 的内容复制粘贴到刚才创建的authorized_keys 文件中。
到此为止,您配置的客户端应该可以 ssh 的方式直接用 git 账号登录服务器。

# 在客户端用ssh测试连接远程服务器,请将域名xxxx换成你的ip地址或者域名
$ ssh git@xxxx

# 第一次连接有警告,输入yes继续即可。如果可以连接上,那么你的ssh配置已经可以了。

以部署hexo博客为例来创建git仓库

创建博客存放目录并将博客发布目录的属主属组改为git

进入服务器的终端,在网站根目录新建一个 blog 文件夹,用于客户端上传文件,并且把该文件授权给 git 用户。代码如下:

# 使用sudo指令,需要输入git用户的密码
sudo mkdir -p /usr/share/nginx/html/blog
sudo chown -R git:git /usr/share/nginx/html/blog

修改nginx配置文件

进入 /etc/nginx/conf.d 目录,打开配置文件,输入以下代码:

server {
    listen 443;
    server_name blog.anzhongyu.top;
    ssl on;
    ssl_certificate  /etc/nginx/cert/2499913_blog.anzhongyu.top.pem;
    ssl_certificate_key /etc/nginx/cert/2499913_blog.anzhongyu.top.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    location / {
        root /usr/share/nginx/html/blog;
        index index.html;
    }

    error_page 401 /error.html;
    location = /error.html {
        root /etc/nginx/html;
    }

}
server {
    listen 80;
    server_name blog.anzhongyu.top;
    rewrite ^(.*)$ https://$host$1 permanent;
}

只需要注意 location / 里面的博客存放目录就可以了。

# 查看配置是否正确
nginx -t

# 重启nginx
systemctl restart nginx.service

在服务器上初始化一个git裸库

# 切换到git账号
$ su git

# 进入git账号的用户主目录。
$ cd /home/git

# 在用户主目录下创建 blog.git仓库的文件夹
$ mkdir blog.git  && cd blog.git

# blog.git目录下初始化git仓库
$ git init --bare

# 输出如下内容,表示成功
Initialized empty Git repository in /home/git/blog.git/
git init --bare 是在当前目录创建一个裸仓库,也就是说没有工作区的文件,直接把 git 仓库隐藏的文件放在当前目录下,此目录仅用于存储仓库的历史版本等数据。

配置git hooks

vim ~/blog.git/hooks/post-receive

然后在该文件中输入以下内容:

#!/bin/sh
git --work-tree=/usr/share/nginx/html/blog --git-dir=/home/git/blog.git checkout -f

保存退出之后,再输入以下代码,赋予该文件可执行权限。

chmod +x ~/blog.git/hooks/post-receive

配置hexo deploy 地址

返回客户端,设置博客根目录下的 _config.yml 文件。

deploy:
    type: git
    repo: git@SERVER:/home/git/blog.git       #此处的SERVER需改为你自己服务器的ip
    branch: master                            #这里填写分支
    message:                                  #提交的信息

保存后,在博客根目录打开 Git Bash,输入以下命令:

hexo clean
hexo g
hexo d

部署完毕之后,即可在浏览器输入你的服务器 ip 进行访问你的博客了。

至此,Centos 上搭建并使用 Git 服务器结束。

参考

https://www.jianshu.com/p/a0eb79fa5b8d
https://segmentfault.com/a/1190000012907499


  转载请注明: ANZHONGYU Centos搭建Git服务器

 上一篇
Java使用ZXing生成二维码(带logo) Java使用ZXing生成二维码(带logo)
ZXing 是谷歌开源的一个 Java 类库用于解析多种格式的 1D/2D 条形码。目标是能够对 QR 编码、Data Matrix、UPC 的 1D 条形码进行解码。 其提供了多种平台下的客户端包括:J2ME、J2SE 和 Android
2019-07-24
下一篇 
生成指定范围的随机数(Java&JS) 生成指定范围的随机数(Java&JS)
需求有时,在我们的开发中可能会需要生成 [min,max] 的随机数,这里提供 Java 和 JS 版本的公式。 Java前提Math.random() : 返回带有正号的 double 值,大于或等于 0.0 且小于 1.0。返回值是伪随
2019-07-11
  目录