gitlab集成度很高,能够集成绝大多数的开发工具
支持内置HA,保证高并发下仍旧实现高可用性,无论gitlab服务宕机或者异常导致网络中断,仍然保证24小时不间断使用服务,无序搭建第三方高可用服务,打开内置HA工具使用它即可。
GitLab主要服务构成
1、nginx静态web服务器
作为gitlab的proxy服务器,处理所有https静态请求
2、gitlib-workhorse轻量级的反向代理服务器
处理一些较大的文件上传下载以及git push操作
3、gitlab-shell用于处理git命令和修改authorized keys列表
4、logrotate日志文件管理
5、postgresql数据库
6、redis缓存服务器
gitlab的工作流程
需要在gitlab 的web前台界面创建我们的仓库,然后再本地clone我们的项目,这里要主要的是我们在完成了前台项目仓库的创建之后,需要在我们的本地pc下安装我们的git客户端工具,保证我们可以使用git命令执行
我们的本地clone项目操作。进行分支代码操作之后,推送该项目分支至远程gitlab服务器,进行代码检查并提交至master分支合并申请,项目领导审查代码并确认合并申请,这样我们就完成了一个需求开发到项目当中,从而完成了gitlab的工作流程。
安装工作(centos7)
一、关闭firewalld防火墙,保证pc可以访问该服务器下所有资源
#systemctl stop firewalld //关闭防火墙
#systemctl disable firewalld //禁用防火墙开机启动
二、关闭SELINUX强制访问安全策略,不影响gitlab的正常运行并重启系统
vi /etc/sysconfig/selinux
SELINUX=disabled //修改后
reboot
[root@wtCentos7 ~]# getenforce //查看是否被禁用
Disabled
三、安装Omnibus Gitlab-ce package
因为gitlab本身包括很多依赖组件,手动安装比较费时间,所以gitlab公司为了方便尽快上手,推出了Omnibus Gitlab-ce package一键安装包,可以快速完成依赖以及组件完成安装。并使用内置的shell配置工具,自动配置gitlab的相关组件以及配置,简化了初学者的安装成本。
1、安装Gitlab依赖组件包
# yum -y install curl policycoreutils openssh-server openssh-clients postfix
2、配置gitlab的YUM仓库源
#curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
3、启动postfix邮件服务
让gitlab与postfix集成,发送相关任务通知给我们的管理账户
//启动邮件服务,并开机加载
#systemctl start postfix
#systemctl enable postfix
4、安装Gitlab-ce社区版本一键安装包
#yum install -y gitlab-ce
5、使用OPEN SSL命令配置相关证书,并配置config加载该证书
①首先需要手动创建一个ssl目录
mkdir -p /etc/gitlab/ssl //创建目录
②使用openssl命令创建本地私有密钥
openssl genrsa -out "/etc/gitlab/ssl/gitlab.example.com.key" 2048
③使用②生成的私有密钥创建SSL证书
openssl req -new -key "/etc/gitlab/ssl/gitlab.example.com.key" -out "/etc/gitlab/ssl/gitlab.example.com.csr"
输入:cn
Country Name (2 letter code) [XX]:
输入:bj
State or Province Name (full name) []:
输入:bj
Locality Name (eg, city) [Default City]:
输入:空格
Organization Name (eg, company) [Default Company Ltd]:
输入:空格
Organizational Unit Name (eg, section) []:
输入:gitlab.example.com
Common Name (eg, your name or your server’s hostname) []:gitlab.example.com
输入:admin@example.com
Email Address []:admin@example.com
。。。
输入:123456
A challenge password []:123456
输入:直接回车
An optional company name []:
完成安装!!!
私有密钥和ssl证书已经创建成功
[root@wtCentos7 ssl]# pwd
/etc/gitlab/ssl
[root@wtCentos7 ssl]# ll
总用量 8
-rw-r--r-- 1 root root 1066 3月 27 15:13 gitlab.example.com.csr
-rw-r--r-- 1 root root 1675 3月 27 15:09 gitlab.example.com.key
⑤根据私有密钥和ssl证书创建签署证书
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"
Signature ok
subject=/C=cn/ST=bj/L=bj/O= /OU= /CN=gitlab.example.com/emailAddress=admin@example.com
Getting Private key
[root@wtCentos7 ssl]# ll
总用量 12
-rw-r--r-- 1 root root 1265 3月 27 15:17 gitlab.example.com.crt
-rw-r--r-- 1 root root 1066 3月 27 15:13 gitlab.example.com.csr
-rw-r--r-- 1 root root 1675 3月 27 15:09 gitlab.example.com.key
⑥数用openssl输出pem证书
openssl dhparam -out /etc/gitlab/ssl/dhparams.pem 2048
[root@wtCentos7 ssl]# ll
总用量 16
-rw-r--r-- 1 root root 424 3月 27 15:20 dhparams.pem
-rw-r--r-- 1 root root 1265 3月 27 15:17 gitlab.example.com.crt
-rw-r--r-- 1 root root 1066 3月 27 15:13 gitlab.example.com.csr
-rw-r--r-- 1 root root 1675 3月 27 15:09 gitlab.example.com.key
到此为止所有证书创建完成
⑦chmod更改文件夹为600权限
cd /etc/gitlab/ssl
chmod 600 *
⑧编辑gitlab配置文件,将所有生成的证书配置到gitlab的配置文件中
vi /etc/gitlab/gitlab.rb
查找external_url 'http://gitlab.example.com' ,可以改为自己的域名,或者ip,'http://gitlab.xxx.com'
----------------------------以下内容我是跟着视频里写的,不过可以不略过---start------------
搜索redirect_http_to_https把这行注释去掉,并且改为ture
# nginx['redirect_http_to_https'] = false //改为 nginx['redirect_http_to_https'] = true
查找ssl_certificate(这里有点不理解,明明是注释了的,视频里提示要更改,反正我就跟着改了,其实也可以忽略)
# nginx['ssl_certificate'] = "/etc/gitlab/ssl/#{node['fqdn']}.crt"
//改为# nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt"
# nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/#{node['fqdn']}.key"
//改为 # nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key"
查找ssl_dhparam
# nginx['ssl_dhparam'] = nil # Path to dhparams.pem, eg. /etc/gitlab/ssl/dhparams.pem
//改为# nginx['ssl_dhparam'] = /etc/gitlab/ssl/dhparams.pem # Path to dhparams.pem, eg. /etc/gitlab/ssl/dhparams.pem
----------------------------以上内容我是跟着视频里写的,不过可以不略过---end------------
保存退出
⑨加载配置并重启gitlab
gitlab-ctl reconfigure
等待完成,不要终止。
⑩启动gitlab
gitlab-ctl restart
找到gitlab下nginx代理工具(此处可不修改,假如有需要跳转,那么可修改)
# vi /var/opt/gitlab/nginx/conf/gitlab-http.conf
server_name gitlab.example.com;
rewrite ^(.*)$ https://$host$1 permanent;
然后配置host指向虚拟机ip
192.168.63.137 gitlab.example.com
登录操作的默认密码在初始化文件里
vim /etc/gitlab/initial_root_password
账号默认是root或者admin@example.com,参考官方https://about.gitlab.cn/install/
https://docs.gitlab.cn/omnibus/installation/