「我的CICD之旅」- 首先要搭建起Git服务。
首先准备两个虚拟机,一个作为server端,一个作为client端。「Git服务本身没有服务端和客户端的区别,只是方便理解」
平常一直在用CentOS,所以这次以CentOS系统为例。其他Linux系统方法与此大同小异。
服务端:CentOS 8
客户端:CentOS 8
首先打开终端命令行并切到root权限进行操作:
sudo -s
通过yum安装:
yum install -y git
可以通过运行如下命令判断git是否已经安装:
git --version
同时需要检查是否安装openssh-server
和openssh-client
这两个软件。
yum list installed | grep openssh*
创建一个新用户,用于执行Git服务相关命令。
sudo adduser git
sudo passwd git
下面开始新建git仓库,位置随意,我选地仓库存放目录为/srv
下面,仓库名为gitrepo.git
:
git init --bare /srv/gitrepo.git
因为当前用户是root,为了让后面git专用账户能够操作仓库目录,我们需要把仓库目录授权给git:
chown -R git:git /srv/gitrepo.git
同服务端操作一样,不在阐述。
git clone git@10.211.55.10:/srv/gitrepo.git
此时代表客户端可与服务端正常交流。
为例客户端进行后续的提交操作,我们还需要注明当前机器的用户信息,命令如下:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
配置完成后,我们就进入实际使用环节了。
首先我们在gitrepo
目录先创建几个文件:
touch a.txt b.txt
然后提交到服务端:
git add .
git commit -m "test push"
git push
因为git账户只用于执行Git相关命令,不应该有别的权限。如果遭受黑客攻击,这将是一场灾难。此时为了安全考虑,需要禁用git账户的shell。可以通过修改/etc/passwd
文件:
把其中的
git/:x/:1001:1001::/home/git:/bin/bash
修改为
git/:x/:1001:1001::/home/git:/usr/bin/git-shell
其中 /usr/bin/git-shell
的路径可以通过命令 which git-shell
获得。
上面我们使用的过程中每次都需要输入git用户的密码才能和服务端交互,这样会很麻烦,这时候我们可以配置公私钥来实现免密。
首先,在客户端生成公钥:
ssh-keygen -t rsa
回车后会提示输入私匙的密码,如果要免密就直接回车,否则自定义一个密码(如果自定义了密码,则每次 push 和 pull 时填入的是设置的密码)。
命令执行成功后,会在当前用户目录的.ssh文件夹生成文件id_rsa
和id_rsa.pub
,其中 .pub
文件就是公匙,另一个是私匙。
把文件id_rsa.pub
拷贝到服务端:
ssh-copy-id git@10.211.55.10
通过ssh-copy-id
命令为最简单的方法,如果服务端已经更改git账户为git-shell
的话,要么先临时改回来,要么用另一种方法:
全部配置完毕后,试试效果:
$ git pull
Already up-to-date.
基于Nginx+Supervisord+uWSGI+Django1.11.1+Python3.6.5构建