1、GitLab程序的介绍
- gitlab是一个开源分布式版本控制系统
- 开发语言:Ruby
- 功能:管理项目源代码、版本控制、代码复用与查找
2、GitLab与Github的不同
- Github分布式在线代码托管仓库,个人版本可直接在线免费使用,企业版本收费且需要服务器安装
- GitLab分布式在线代码仓库托管仓库软件,分社区免费版和企业
原文链接:https://www.dqzboy.com 收费版本,都需要服务器安装
3、GitLab优势与应用场景
- 开源免费,适合中小型公司将代码放置在该系统中
- 差异化的版本管理,离线同步以及强大单独分支管理功能
- 便捷的GUI操作界面以及强大的账户权限管理功能
- 集成度很高,能够集成绝大多数的开发工具
- 支持内置HA,保证在高并发下仍旧实现高可用性
4、GitLab主要服务过程
- Nginx静态web服务器
- GitLab-workhorse轻量级反向代理服务器
- GitLab-shell用于处理Git命令和修改authorized keys列表
- Logrotate日志文件管理工具
- Postgresql数据库
- Redis缓存服务器
5文章来源(Source):浅时光博客 、GitLab工程流程
- 创建并克隆项目
- 创建项目某Featuer分支
- 编写代码并提交至该分支
- 推送该项目分支至远程GitLab服务器
- 进行代码检查并提交master主分支进行合并申请
- 项目领导审查代码并确认合并申请
6、GitLab安装部署
6.1、环境准备
6.1.1:主机名更改
[root@localhost ~]# hostnamectl set-hostname gitlab
6.1.2:防火墙配置
#放开端口
[root@gitlab ~]# firewall-cmd --permanent --add-service=http
#查看放开的端口
[root@gitlab ~]# firewall-cmd --zone=public --list-ports
#放开端口
[root@gitlab ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
#使其规则生效
[root@gitlab ~]# firewall-cmd --reload
#查看服务是否存在
[root@gitlab ~]# firewall-cmd --list-services
6.1.3:关闭SELINUX
[root@gitlab ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
[root@gitlab ~]# setenforce 0
[root@gitlab ~]# getenforce
Permissive
6.1.4:设置epel源、安装基本操作命令
[root@gitlab ~]# yum -y install wget
[root@gitlab ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@gitlab ~]# yum install -y net-tools vim lrzsz tree screen lsof tcpdump ntpdate
6.1.5:时间同步
[root@gitlab ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@gitlab ~]# echo "*/5 * * * * ntpdate time1.aliyun.com &> /dev/null && hwclock -w" >> /var/spool/cron/root
[root@gitlab ~]# systemctl restart crond
6.2、下载原文链接:https://www.dqzboy.com 软件
- ce为社区办,ee为企业版
6.3、安装部署
[root@gitlab ~]# mkdir /soft
[root@gitlab ~]# cd /soft/
[root@gitlab soft]# rz -E
#先安装依赖
[root@gitlab soft]# yum install -y curl policycoreutils-python openssh-server
[root@gitlab soft]# rpm -ivh gitlab-ce-12.0.3-ce.0.el7.x86_64.rpm

6.3.1:目录说明
/opt/gitlab #默认gitlab程序安装路径
/var/opt/gitlab/ #gitlab数据目录
/var/opt/gitlab/git-data/ #项目存储目录
/var/opt/gitlab/git-data/repositories #代码存放路径
6.3.2:常用命令
gitlab-ctl status #查看目前gitlab所有服务
gitlab-ctl stop #停止gitlab服务
gitlab-ctl stop nginx #单独停止某一个服务
gitlab-ctl tail #查看所有服务日志
6.4、修改配置
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb

#重载配置,需要等待
[root@gitlab ~]# gitlab-ctl reconfigure

6.5、检查服务
#默认端口80
[root@gitlab ~]# ss -tnlp | grep 80
[root@gitlab ~]# gitlab-ctl status

6.6、GitLab汉化
说明:最新版本的GitLab默认已经支持中文!具体设置如下图所示:


6.6.1:下载汉化补丁
[root@gitlab ~]# git clone https://gitlab.com/xhang/gitlab.git
- 如果克隆下载很慢,那么直接gitlab下载安装包上传至服务器

6.6.2:解压备份
[root@gitlab soft]# tar -xf gitlab-12-0-stable-zh.tar.gz
#查看版本
[root@gitlab soft]# cat gitlab-12-0-stable-zh/VERSION
12.0.3
#备份原文件,汉化失败可及时恢复
[root@gitlab ~]# mkdir /gitlab_bak
[root@gitlab ~]# cp -r /opt/gitlab/embedded/service/gitlab-rails/* /gitlab_bak/
6.6.3:修改别名
- 默认cp -i
- 拷贝完汉化包之后去掉注释
# 注释掉
[root@gitlab ~]# vim /root/.bashrc

# 切换下用户
[root@gitlab ~]# su
6.6.4:停止服务
[root@gitlab ~]# gitlab-ctl stop
6.6.5:拷贝汉化包
# 拷贝汉化包文件
[root@gitlab ~]# cp -rf /soft/gitlab-12-0-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
6.6.6:重新配置GitLab
[root@gitlab ~]# gitlab-ctl reconfigure
# 需要等待一会
6.6.7:重启GitLab
[root@gitlab ~]# gitlab-ctl restart
6.7、访问页面
- 直接输入IP即可
- 首次访问时,您将被重定向到密码重置页面。提供初始管理员帐户的密码,您将被重定向回登录页面。使用默认帐户的用户名登录。root
- 汉化后的页面如下图
- 注:gitlab访问监听端口为80,如果访问gitlab一直未502错误码,先检查80端口是否被占
文章来源(Source):https://www.dqzboy.com 用
7、GitLab操作使用
7.1、创建代码库组
- 先创建组方便后面进行管理
7.1.1:点击创建一个群组

7.1.2:定义组
7.2、在该组创建项目
7.3、添加ssh公钥

7.3.1:创建密钥对
[root@dev-host1 ~]# ssh-keygen -t rsa
[root@dev-host1 ~]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEP4cs5ypik4xAdTgJqROTO0Qgm43wY90hXoBXAvN/LMGGB3gSvPJjMIkrx9j+lZyiFxdHqV3SV2j+3G83ve+DLPzuGVdqNgE86i7h6+ybWsAhA+5EvlSuUQFBfDtEyEyF9QUViCnn2iTT5A6VHT64Ly43KCQSdQDmCdMOVJyekH117b6jXVKinLHROVKtO58i2GtsSJb8M5xyBd9MuF5TtVNKtY1ZFaHE3qbwnfpTFch3F/7Yw7kbiy9Y9r+OGQL2BhNzdKjGtMs1pIoj97xwVoitVcBNuA5+rIqFOFrD3O9KbE8vfuznUOKkYGaVdTF/Nz/iEYJEyX4WJaAqOdJv root@dev-node1
7.3.2:添加公钥至gitlab


- 将上面服务器生成的密钥对中公钥添加至如下图所示的位置
7.3.3:返回项目
7.4:命令行说明
- 您还可以使用以下说明从计算机上载现有文件。
Git 全局设置
# 第一次使用Git
git config --global user.name "Administrator" #配置用户名
git config --global user.email "admin@example.com" #配置用户邮箱
# 示例:
[root@dev-host1 ~]# git config --global user.name "dqz"
[root@dev-host1 ~]# git config --global user.email "1981xxx@qq.com"
创建新存储库
git clone git@192.168.66.30:webapp/webapp.git #克隆当前服务器上的仓库到本地
cd webapp #进入到该仓库
touch README.md #创建代码
git add README.md #添加到缓冲区
git commit -m "add README" #提交到仓库
git push -u origin master # 推送当前分支到远端仓库
# 示例:
[root@gitlab ~]# git clone git@192.168.66.30:webapp/webapp.git
正克隆到 'webapp'...
The authenticity of host '192.168.66.30 (192.168.66.30)' can't be established.
ECDSA key fingerprint is SHA256:GekNYo0EMfZmAbn4DNBgmlQuHIi9lnRzDOyblNHZGv0.
ECDSA key fingerprint is MD5:93:8f:0c:56:33:af:e8:8b:91:05:8b:77:ed:bd:c2:a7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.66.30' (ECDSA) to the list of known hosts.
warning: 您似乎克隆了一个空版本库。
[root@gitlab ~]# cd webapp/
[root@gitlab webapp]# touch README.md
[root@gitlab webapp]# git add README.md
[root@gitlab webapp]# git commit -m "add README"
[master(根提交) 0b4c1c1] add README
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md
[root@gitlab webapp]# git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 209 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.66.30:webapp/webapp.git
* [new branch] master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。
推送现有文件夹
cd existing_folder #进入到一个目录下
git init #将该目录作为新的git仓库
git remote add origin git@192.168.66.30:webapp/webapp.git #添加远程仓库,并取一个简短的名称
git add . #提交工作区所有文件到暂存区
git commit -m "Initial commit" #将暂存区中的文件提交到本地仓库中,即打上新版本
git push -u origin master # 推送当前分支到远端仓库
推送现有的 Git 存储库
cd existing_repo
git remote rename origin old-origin
git remote add origin git@192.168.66.30:webapp/webapp.git
git push -u origin --all
git push -u origin --tags
8、GitLab外观配置
- 图表仅支持1MB大小的
.png
.ico
文件
- 预览
- 注册限制

9、GitLab与LDAP认证
9.1:前提工作
- LDAP管理员账号创建
9.2:配置GitLab
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
289 gitlab_rails['ldap_enabled'] = true
290
291 ###! **remember to close this block with 'EOS' below**
292 gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
293 main: # 'main' is the GitLab 'provider ID' of this LDAP server
294 label: 'LDAP'
295 host: 'LDAP服务器IP'
296 port: 389
297 uid: 'sAMAccountName'
298 bind_dn: 'LDAP账号'
299 password: 'LDAP密码'
300 encryption: 'plain' # "start_tls" or "simple_tls" or "plain"
301 # verify_certificates: true
302 # smartcard_auth: false
303 active_directory: true
304 allow_username_or_email_login: true
305 # lowercase_usernames: false
306 block_auto_created_users: false
307 base: 'dc=LDAP_dc地址,dc=com'
308 user_filter: ''
- 配置参数说明:
host
:ldap服务器地址
port
:ldap服务端口
uid
:以哪个属性作为验证属性,可以为uid、cn等,我们使用uid
method
:如果开启了tls或ssl则填写对应的tls或ssl,都没有就填写plain
bind_dn
:search搜索账号信息的用户完整bind(需要一个有read权限的账号验证通过后搜索用户输入的用户名是否存在)
password
:bind_dn用户的密码,bind_dn和password两个参数登录ldap服务器搜索用户
active_directory
:LDAP服务是否是windows的AD,如果是AD这里配置为true
,如果是其他的如openLDAP
那么这里配置false
allow_username_or_email_login
:是否允许用户名或者邮箱认证,如果是则用户输入用户名或邮箱都可
base
:从哪个位置搜索用户,例如允许登录gitlab的用户都在ou gitlab里,name这里可以写ou=gitlab,dc=domain,dc=com
filter
:添加过滤属性,例如只过滤employeeType
为developer
的用户进行认证(employeeType=developer)
9.3:重载Git文章来源(Source):浅时光博客 Lab配置
[root@gitlab ~]# gitlab-ctl reconfigure
9.4:获取用户列表
[root@gitlab ~]# gitlab-rake gitlab:ldap:check
9.5:重启GitLab
[root@gitlab ~]# gitlab-ctl restart
必须 注册 为本站用户, 登录 后才可以发表评论!