第二章 1-3 GitLab介绍与安装配置管理
- 一、GitLab介绍
- 二、GitLab的工作流程
- 三、GitLab安装配置管理
一、GitLab介绍
1.1、什么是GitLab
1.2、GitLab和GitHub的不同
1.3、GitLab的优势和应用场景
1.4、GitLab主要服务构成
二、GitLab的工作流程
三、GitLab安装配置管理
注:测试环境为一台Centos7.3的虚拟机;
3.1、GitLab预安装环境准备
3.1.1、关闭防火墙并禁用开机启动
# 1.查看当前的防火墙状态
firewall-cmd --state
# 2.禁用防火墙
systemctl stop firewalld
# 3.警用防火墙开机启动
systemctl disable firewalld
# 永久关闭后,开启防火墙(开机自动启用)
systemctl enable firewalld
3.1.2、关闭selinux强制访问策略
关闭该策略防止该策略影响GitLab的正常运行。
# 使用vim编辑器打开selinux配置文件
vim /etc/sysconfig/selinux
将该配置文件下的SELINUX=enforcing修改为SELINUX=disabled
# 执行reboot命令使上面的配置生效
reboot
执行后出现下面的界面;
使用ssh [email protected]命令重新登录下Linux系统;
# 查看selinux是否被禁用
getenforce
3.2、GitLab安装(ce社区版)
3.2.1、安装GitLab的依赖包
# 安装GitLab的依赖包
yum install curl policycoreutils openssh-server openssh-clients postfixs
3.2.2、安装GitLab的依赖包
# 安装gitLab包的仓库地址
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
# 启动postfix服务
systemctl start postfix
# 开启启动postfix服务
systemctl enable postfix
开始启动GitLab安装向导
# 开始启动GitLab安装向导
yum -y install gitlab-ce
3.2.3、创建证书
3.2.3.1、创建私有密钥
# 创建ssl目录
mkdir -p /etc/gitlab/ssl
# 创建本地私有密钥
openssl genrsa -out "/etc/gitlab/ssl/gitlab.example.com.key" 2048
3.2.3.2、使用上面创建的私有密钥创建csr证书
# 创建csr证书
openssl req -new -key "/etc/gitlab/ssl/gitlab.example.com.key" -out "/etc/gitlab/ssl/gitlab.example.com.csr"
使用ll命令查看,可以看到我们的密钥和csr证书都已经创建了
3.2.3.3、使用私有密钥和csr证书创建crt证书
openssl x509 -req -days 365 -in "/etc/gitlab/ssl/gitlab.example.com.csr" -signkey "/etc/gitlab/ssl/gitlab.example.com.key" -out "/etc/gitlab/ssl/gitlab.example.com.crt"
# 509 -req: 代表签署证书的格式
# -days 365:代表签署证书的有效时限
# -in:引入csr证书
# -signkey:使用密钥
# -out:输出crt证书
3.2.3.4、创建pem证书
openssl dhparam -out /etc/gitlab/ssl/dhparams.pem 2048
使用ll命令查看可以看到dhparams.pem文件已经创建完成
3.2.4、更改证书的权限
3.2.4.1、Linux文件权限简单说明
如上图文件的权限分三块:
【文件或文件夹】【owner权限】【group权限】【others权限】
【文件是-,文件夹是d】【r/w/x相加】【r/w/x相加】【r/w/x相加】
rwx说明如下:
r 读权限read 4
w 写权限write 2
x 操作权限execute 1
3.2.4.2、修改证书的权限
# 将生成的四个证书文件的权限改为仅root用户可以查看和修改
chmod 600 *
3.2.5、将上面生成的证书配置到GitLab的配置文件中
# 编辑gitlab的配置文件
vim /etc/gitlab/gitlab.rb
修改配置文件中的external_url将原来的http修改为https
退出编辑模式后搜索redirect_http_to_https,将该行取消注释,并将false修改为true;并修改下图红色框部分的证书路径配置。
修改完后保存退出。
重启GitLab的配置
# 重启GitLab的配置
gitlab-ctl reconfigure
经过漫长等待至此配置重启成功
3.2.6、更改GitLab的Http配置文件
# 打开GitLab的配置文件
vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
搜索server_name字段,在下面添加下图中红色框中的内容
# 重启http配置
gitlab-ctl restart
3.2.7、更改本机的hosts文件,使得可以用gitlab.example.com域名访问
本人使用的是win10系统,修改win10的hosts文件还会有权限不足的问题;(此处找度娘解决)
C:\WINDOWS\system32\drivers\etc;编辑hosts文件
保存后打开本机的浏览器使用gitlab.example.com访问
But error~~ 如图我的虚拟机中已经用Linux部署了一个应用,所以使用这个域名访问不能访问到gitlab
3.2.8、遇到的问题
在浏览器中通过IP+端口的方式访问,发现浏览器返回如下界面。
3.2.8.1、由于8080端口已部署了一个应用,导致端口冲突
在看到如上图错误后,首先百度了下。很多说的都是8080端口冲突的问题;
# 查看错误日志
cat /var/log/gitlab/unicorn/unicorn_stderr.log
从上图我们可以看到是由于我们的8080端口已被占用导致的。
# 打开配置文件
vim /etc/gitlab/gitlab.rb
修改端口,在这里有一个坑!!!!,从百度查询到的方法都说了是端口的问题,也给出了方案是修改这两个地方,但是给出的示例中上下两个参数的端口是同一个,重启配置后发现还是报502。修改成别的不被占用的端口也报端口占用。于是就把上下两个端口修改成了不同的端口。重启后发现是可以的。
注意:在前面的配置中,我们还需要去修改一个GitLab的Http配置文件即3.2.6小节中提到的,但是如果在这里配置了之后,我们在执行下面的两行代码重启配置和gitlab之后
gitlab-ctl reconfigure
gitlab-ctl restart
打开gitlab-http.conf这个配置文件会发现,这个文件中的属性被自动更新了。
3.2.8.2、GitLab启动需要的内存不足
GitLab需要的内存最小为2G左右,如果用1G的Linux系统启动是启动不起来的。
3.2.9、登录GitLab修改密码
终于久违地见到了这个GitLab界面,然后我们需要设置我们地登录密码
使用账户名:root;密码:刚才设置的密码;登录系统
3.2.10、修改GitLab的数据存储仓库地址
3.2.10.1、创建保存GitLab的数据存储仓库文件夹
此处我的服务器上做了一个4T的机械硬盘的的挂载,挂载到了data下。如下图所示
# 创建保存GitLab的数据存储仓库文件夹
mkdir -pv /data/gitlab-data
# 查看data文件夹下的文件情况
ls -al
3.2.10.2、配置GitLab的的仓库地址
# 打开gitlab的配置文件
vim /etc/gitlab/gitlab.rb
git_data_dirs({
"default" => {
"path" => "/data/gitlab-data"
}
})
3.2.10.3、重新读取GitLab的配置
# 重新读取GitLab的配置
gitlab-ctl reconfigure
# 重启GitLab服务
gitlab-ctl restart
重启之后可以看到,在我们自己创建的仓库下有了repositories文件夹;
3.3、使用GitLab
3.3.1、创建一个test-repo仓库
点击下图
3.3.2、test-repo仓库下载到本机桌面的repo文件夹
首先我们在本机创建一个repo的测试文件夹
双击打开桌面上安装的git工具,打开Git Bash
# 查看当前所在的目录路劲
pwd
# 进入到桌面文件夹
cd Desktop/
下载
git -c http.sslverify=false clone http://192.168.2.200:8091/root/test-repo.git
# -c http.sslverify=false 用来避免本地证书无法进行克隆操作
回车后跳出弹框,输入之前的账号和密码
输入后提示下载完成
3.3.3、在test-repo仓库下编写代码测试提交
进入test-repo文件夹并编写一个test.py的文件
将文件先add到git管理中,并且commit到本地仓库
如果出现这个界面则需要设置一下全局的git的邮箱和姓名
# 提交到远程分支
git -c http.sslverify=false push origin master
但是如图,本机未加参数也可以提交
查看页面后,可以看到提交的内容已经可以在界面上看到了。