前言

GitLab Community Edition 新版本已经集成了CI/CD的支持,从某种程度上来说可以告别对于Jenkins的依赖,我本来计划是写基于Docker部署GitLab但感觉还是有点重,对于内网离线环境来说基于容器部署也未必是合理的方案,这里沿用传统的部署方式介绍简单且长期有效的GitLab部署方案供大家参考,或许未来会增加基于容器的部署方案和CI/CD的分享,因需而变。

RHEL7/CentOS7在线和离线安装GitLab配置实践,GitLab汉化配置使用小结

更新记录

2018年04月10日 - 初稿

阅读原文 - https://wsgzao.github.io/post...

扩展阅读

GitLab Installation - https://about.gitlab.com/inst...

GitLab简介

GitLab是利用Ruby On Rails开发的一个开源版本管理系统,实现了一个自托管的Git项目仓库,是集代码托管,测试,部署于一体的开源git仓库管理软件,可通过web界面来进行访问公开的或私人项目。与Github类似,GitLab能够浏览代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本,并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后需要的时候查找。

Git的家族成员

  • Git:是一种版本控制系统,是一个命令,是一种工具。
  • Gitlib:是用于实现Git功能的开发库。
  • Github:是一个基于Git实现的在线代码托管仓库,公开项目是免费的,也可以付费创建私人项目。
  • GitLab:是一个基于Git实现的在线代码仓库托管软件,可以用GitLab搭建一套类似Github的系统。

GitLab对硬件还是有一定要求的,1核心的CPU基本上可以满足需求,大概支撑100个左右的用户,不过在运行GitLab网站的同时还需要运行多个后台job,就会显得有点捉襟见肘了。需要至少4GB的可寻址内存(RAM交换)来安装和使用GitLab,操作系统和任何其他正在运行的应用程序也将使用内存,因此请记住,在运行GitLab之前,您至少需要4GB的可用空间。如果使用更少的内存,GitLab将在重新配置运行期间给出奇怪的错误,我用虚拟机来分别新建1G,2G内存的CentOS系统来装GitLab,确实非常捉襟见肘啊,伤不起。

Gitlab的服务构成

  • Nginx:静态web服务器
  • gitlab-shell:用于处理Git命令和修改authorized keys列表
  • gitlab-workhorse: 轻量级的反向代理服务器
  • logrotate:日志文件管理工具
  • postgresql:数据库
  • redis:缓存数据库
  • sidekiq:用于在后台执行队列任务(异步执行)
  • unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的

GitLab工作流程

GitLab安装

在线安装gitlab-ce

# 安装必要的依赖包,如果不需要可以考虑跳过
yum install pygpgme yum-utils
# On CentOS 7 (and RedHat/Oracle/Scientific Linux 7), the commands below will also open HTTP and SSH access in the system firewall.
sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld
# Next, install Postfix to send notification emails. If you want to use another solution to send emails please skip this step and configure an external SMTP server after GitLab has been installed.
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix# 使用阿里云作加速
cd /etc/yum.repos.d/ && rm -f *.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo# 添加GitLab镜像源并安装,建议切换国内资源加速访问
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash# 创建gitlab-ce的repo,使用清华大学加速
vim /etc/yum.repos.d/gitlab_gitlab-ce.repo[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key#配置并启动 GitLab
gitlab-ctl reconfigure# 第一次访问GitLab,系统会重定向页面到重定向到重置密码页面,你需要输入初始化管理员账号的密码,管理员的用户名为root,重置密码后新密码即为刚输入的密码。
0.0.0.0:80

离线安装gitlab-ce

# 使用阿里云作加速
cd /etc/yum.repos.d/ && rm -f *.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo# 添加GitLab镜像源并安装,建议切换国内资源加速访问
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash# 创建gitlab-ce的repo,使用清华大学加速
vim /etc/yum.repos.d/gitlab_gitlab-ce.repo[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key#安装yum-plugin-downloadonly插件
yum install -y yum-plugin-downloadonly# 下载gitlab-ce相关rpm到指定目录
mkdir -p /tmp/repo/gitlab-ce/
yum install --downloadonly --downloaddir=/tmp/repo/gitlab-ce/ gitlab-ce# 拷贝文件至内网离线安装
rpm -ivh /tmp/repo/gitlab-ce/*#配置并启动 GitLab
gitlab-ctl reconfigure# 第一次访问GitLab,系统会重定向页面到重定向到重置密码页面,你需要输入初始化管理员账号的密码,管理员的用户名为root,重置密码后新密码即为刚输入的密码。
0.0.0.0:80

GitLab汉化

如果团队里英文水平都不错的话,是没必要汉化的,我个人的建议是坚持使用原版不做汉化

GitLab中文社区的项目,v7-v8.8是由Larry Li发起的“GitLab中文社区版项目”
https://gitlab.com/larryli/gi...

从v8.9之后由@xhang开始继续汉化项目
https://gitlab.com/xhang/gitlab

# 如没安装git,需提前安装
yum install -y git# 创建gitlba汉化包下载目录
mkdir -p /tmp/gitlab
cd /tmp/gitlab# 下载最新的汉化包
git clone https://gitlab.com/xhang/gitlab.git# 如果是要下载老版本的汉化包,需要加上老版本的分支,如果想下载10.0.2,可以运行如下语句
git clone https://gitlab.com/xhang/gitlab.git -b v10.0.2-zh# 停止GitLab并执行如下语句
gitlab-ctl stop
cp /tmp/gitlab/gitlab/* /opt/gitlab/embedded/service/gitlab-rails/ -rf# 复制时可能不断提示是否要覆盖,这时可能是系统每次执行cp命令时,其实是执行了cp -i命令的别名。出现这种情况可以修改~/.bashrc,在“alias cp=’cp-i’”前加#注释即可。使用命令或者注销登录即可
source ~/.bashrc# 接下来可以重新配置和启动
gitlab-ctl reconfigure
gitlab-ctl restart

GitLab命令

# 语法
gitlab-ctl command (subcommand)Service Management Commandsstart # 启动所有服务
stop # 关闭所有服务
restart # 重启所有服务
status # 查看所有服务状态
tail # 查看日志信息
service-list # 列举所有启动服务
graceful-kill # 平稳停止一个服务# 启动所有服务
gitlab-ctl start
# 启动单独一个服务
gitlab-ctl start nginx
#查看日志,查看所有日志
gitlab-ctl tail
#查看具体一个日志,类似tail -f
gitlab-ctl tail nginxGeneral Commandshelp # 帮助
reconfigure # 修改配置文件之后,需要重新加载下
show-config # 查看所有服务配置文件信息
uninstall # 卸载这个软件
cleanse # 删除gitlab数据,重新白手起家# 显示所有服务配置文件
gitlab-ctl show-config# 卸载gitlab
gitlab-ctl uninstall

QQ邮箱配置

默认情况下,GitLab用qq邮箱注册是发不出确认邮件的。查看了网上很多邮箱配置的教程,大部分都是误导的。像这类软件,归根到底总结为一句话:一切以官网文档为准。QQ邮箱最好用企业邮箱,本人用个人邮箱进行测试是有些小问题的,正确配置如下:

# 编辑gitlab.rb
vim /etc/gitlab/gitlab.rbgitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "xxxx@xx.com"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'

GitLab使用

登录GitLab

  1. 在浏览器的地址栏中输入IP即可登录GitLab的界面,老版本第一次登录使用的用户名和密码为 root5iveL!fe
  2. 首次登录会强制用户修改密码。密码修改成功后,输入新密码进行登录

创建Project

1.安装Git工具linux:安装Git,使用自带的源安装

yum install git

2.生成密钥文件:使用ssh-keygen生成密钥文件.ssh/id_rsa.pub。

ssh-keygen -t rsa

3.在GitLab的主页中新建一个Project

4.添加ssh key导入步骤2中生成的密钥文件内容:

Profile Settings => SSH Keys => Add SSH key

简单配置

# 配置使用Git仓库的人员姓名
git config --global user.name "wangao"
# 配置使用Git仓库的人员email,填写自己的公司邮箱
git config --global user.email "wangao@test.com"
# 克隆项目,在本地生成同名目录,并且目录中会有所有的项目文件
git clone git@172.28.70.126:root/test.git
# 进入到项目目录
cd test/
# 创建需要上传到GitLab中的目标文件
echo "test" > test.sh
# 将test.sh文件加入到索引中
git add test.sh
# 将test.sh提交到本地仓库
git commit -m "test.sh"
# 将文件同步到GitLab服务器上
git push -u origin master
# 在网页中查看上传的test.sh文件已经同步到GitLab中

RHEL7/CentOS7在线和离线安装GitLab配置使用实践相关推荐

  1. linux centos7 在线和离线安装字体

    一. 安装分为在线和离线方式 1.在线安装 1.1 安装字体库 在CentOS 4.x开始用fontconfig来安装字体库 yum -y install fontconfig 这时在/usr/sha ...

  2. Centos7.7之离线安装kubectl

    Centos7.7之离线安装kubectl https://my.oschina.net/u/2518341/blog/3128922 Centos7.7,kubernates-1.13.5. 我的C ...

  3. nginx--如何基于rpm包进行离线安装及配置(Linux)

    [背景说明] 1.很多情况下,公司的生产环境一般都是内网,而大多数的内网Linux环境,一般都是无法直接在线安装nginx等工具的,此时就可以通过rpm安装包进行离线安装及配置. 2.安装nginx一 ...

  4. Ubuntu离线安装Gitlab

    如果对gitlab版本无要求可参照此链接:https://blog.csdn.net/longgeaisisi/article/details/100667239 目的:因为gitlab代码迁移的原因 ...

  5. python如何离线安装第三方库_Python在线和离线安装第三方库的方法

    Python在线和离线安装第三方库的方法 Windows环境: (1)离线安装 首先在线搜索并下载你需要的第三方库:网址https://pypi.org/project/ 安装whl包: pip in ...

  6. OceanBase 在线与离线安装方式详解

    各位好,今天给大家带来一篇有关 OceanBase 在线与离线安装方式的解读.首先我们来讨论一下一日常工作中的一些场景,大家经常会遇到以下几种情况: 公司网络条件很不错,在线下载速度很快,安装软件直接 ...

  7. VIM插件离线安装与配置(taglist,airliner,gutentags,LeaderF,gtags,AutoComplPop,omnicppcomplete,fzf,Rg)

    VIM插件离线安装与配置 1.VIM 插件离线安装与配置 1.1 离线包 2.vim8安装 2.1.查看vim版本 2.2.vim下载 2.3 vim安装步骤 3. vimrc通用配置 4.插件管理( ...

  8. nginx在线与离线安装

    1.场景描述 项目要部署到新的服务器上,需要安装nginx,刚好安全部门通知了nginx存在安全漏洞(Nginx整数溢出漏洞,nginx1.13.2之后的版本无问题),就下载最新的nginx进行了安装 ...

  9. centos7php自启动,centos7系统下nginx安装并配置开机自启动操作

    这篇文章主要介绍了centos7系统下nginx安装并配置开机自启动操作方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下 这篇文章主要介绍了centos7系统下nginx安装并配置开机自启动操作 ...

最新文章

  1. 《统一沟通-微软-技巧》-14-Exchange 2010 With SP1 OWA Integration
  2. WSE3.0构建Web服务安全(3):WSE3.0策略配置、证书、签名、与实例开发
  3. python语言的数字类型_基本数据类型数字
  4. 构造方法与重载:定义一个网络用户类,信息有用户 ID、用户密码、 email 地址。在建立类的实例时把以上三个信息都作为构造函数的参数输入
  5. POJ 2312Battle City(BFS-priority_queue 或者是建图spfa)
  6. MATLAB教程(1) MATLAB 基础知识(1)
  7. 多点Dmall发布系统Mini OS 宣称要五年覆盖百万门店
  8. Linux的shell编程(一)
  9. [题解]NOI 2001 食物链
  10. 云计算遇上区块链,会产生怎样的能量和火花?
  11. 网络监听Network Daemon(Android Netd)架构和源码分析网络监听
  12. 爱情指数测试脸型软件,心理测试:你和谁的脸型最像?测出你的幸运指数是多少!...
  13. H264/AVC协议基本概况
  14. java虚拟机假死怎么办_虚拟机假死解决方法
  15. Windows 10 2018年四月更新版官方正式版
  16. matlab指派问题求法,MATLAB实例:Munkres指派算法
  17. 建筑建材行业SaaS多租户用户管理系统:高度整合企业资源,探索数字化转型新路径
  18. Matlab保留工作区变量教程
  19. 【Excel】工作中会用到的excel操作和技巧
  20. Python3处理HTTP请求

热门文章

  1. 加密芯片在水电气表行业内的应用
  2. 如何使用自动化与分析工具库创建 Excel 直方图
  3. 如何评价百度新目标:Everyone can AI ?| 在现场
  4. 旷视科技Face++进军机器人业务
  5. AI产品开发指南:5大核心环节搞定机器学习工作流
  6. Waymo乘客交互系统亮相,还带西方记者试乘了没司机的真·无人车
  7. ES6 类继承 和 super的使用
  8. shedlock源码解析
  9. 图解Team Foundation Server 2013系列
  10. 萨纳斯耿文强:光伏管控智能化亟待统一标准