从零开始搭建个人网站(4) 搭建git服务器

  建一个类似博客之类的网站,项目代码文件和之后你更新的博文文件都存储在服务器上,文件的交互虽然可以通过带ui的文件传输工具或者命令行的scp等命令方便的实现,但笔者想搭建一个git服务器,实现本地与远程项目更方便的同步。

前言

  github的仓库虽然可以提供稳定的服务,但是如果你不想公开你的源码又不想交保护费的话,就可以用自己的服务器搭建一个Git私有仓库。

搭建git服务器

  如果不特殊说明,笔者在服务器端的命令都是通过ssh到服务器主机的拥有sudo权限的用户执行。

服务器端安装git

$ sudo apt install git

服务器端添加git用户

$ sudo adduser git

  git用户需要自己的home目录,方便起见我们用adduser命令添加(linux下用户管理戳这里)。

创建git用户

本地创建密钥对

  如果本地的~/.ssh/文件夹下有曾经生成过的密钥对id_rsa 和 id_rsa.pub文件,可直接使用,否则运行以下命令:

$ ssh-keygen

  方便起见,配置时一直回车,按默认选项配置。

创建密钥对

本地公钥导入服务器

  本地运行

$ scp ~/.ssh/id_rsa.pub 用户名@主机名:~/

  将本地公钥复制到服务器可以通过ssh访问的用户的home目录下。
scp上传公钥
  注意,如果用户名为git会提示:

Permission denied (publickey).

  因为git用户的~/.ssh/authorized_keys里并没有本地主机的公钥,无法使用ssh和scp操作,暂时把公钥文件放到web用户(上篇博文创建)的home目录下。
  通过ssh登录,并将刚才的id_rsa.pub文件添加到~/.ssh/authorized_keys里。

$ su - git
$ mkdir .ssh
$ cat /home/web/id_rsa.pub >> authorized_keys

  此时可以在本地主机通过ssh命令登录git用户了。

禁用git用户的shell登录

  为了安全,需要禁用git用户的shell登录,编辑服务器的/etc/passwd文件:

  找到

git:x:1001:1001:,,,:/home/git:/bin/bash

  改为

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

初始化git仓库

  通过ssh登录服务器,在一个合适的位置建立一个空仓库,先假设建立在某个用户的home目录下,名字为example。

$ cd /home/用户名/
$ sudo git init --bare example.git

  Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。

  将仓库的拥有者改为git。

$ sudo chown -R git:git example.git

测试仓库

  本地运行

$ git clone git@主机名或主机IP:/home/用户名/example.git

git测试

管理公钥

  重复将不同主机的公钥添加到git服务器的~/.ssh/authorized_keys

  如果团队人多的话,可以使用Gitosis。
  github链接:Gitosis

结语

  在服务器上添加git用户并搭建git服务器,以后网站的代码文件可以直接push到服务器上,免去了git clone的麻烦,静态文件也更方便同步。

参考链接

  1. 搭建git服务器-廖雪峰

猜你喜欢

转载自blog.csdn.net/zuimrs/article/details/78946762