GitLab安装-centos7.6

一、简介

GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

二、Gitlib和Github区别

相同点

两个都是基于web的Git仓库,而且GitLab在使用方式上和GitHub基本上是一样的,都提供了存储、分享、发布和合作开发项目的中心化云存储场所

不同点

GitHUb同时提供公共仓库和私有仓库,但如果需要使用私有仓库,是需要收费的.GitLab让开发团队对他们的代码仓库拥有更多的控制,相比于GitHub,它有不少的特色:
允许免费设置仓库权限;允许用户选择分享一个project的部分代码;允许用户设置project的获取权限,进一步的提升安全性;可以设置获取到团队整体的改进进度;通过innersourcing让不在权限范围内的人访问不到该资源。
所以根据业务使用场景来看,私密性的话,gitlib权限管制无疑是最好的选择;而面对于开源的话,github则是最好的选择。这个我们根据实际情况而定。

安装Gitlib

  • 环境 centos7.6 关闭防火墙及seliunx设置(不再介绍)
  • 依赖
sudo yum install -y curl policycoreutils-python openssh-server
  • 安装postfix来实现邮件通知功能
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
  • 配置Gitlib官网的安装脚本地址并下载安装,详情可见官网介绍 这里强调一下版本问题 我们使用CE社区版本免费 企业版本则为EE版本,若其他操作平台,请参考相对应操作系统
#添加仓库地址,根据实际情况选择
#ee版本
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
#ce版本
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
  • 安装
yum intall gitlab-ce
  • RPM包安装试,国内清华源镜像下载[RPM]包相对要快很多(https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
    包自行安装
    此时文件量比较大 所以需要时间来下载 请耐心等待直到 compete完成安装
  • 访问 正常来说,执行完这步之后,会帮我们安装和自动配置GitLab相关的信息的.如果没有启动GitLab可以再执行一下这句命令。 请初始化配置,如下命令,自动创建服务及数据
gitlab-ctl reconfigure

直接初始完成


  • 502报错,如图,此时请重启服务
sudo gitlab-ctl restart

查看gitlab启动状态,gitlab-ctl status查看状态,如果没有报错,那么请查看内存使用情况,如有变动说明gitlab仍在启动中,请耐心等候

[root@k8s ~]# gitlab-ctl status
run: alertmanager: (pid 7017) 115s; run: log: (pid 7013) 115s
run: gitaly: (pid 6956) 116s; run: log: (pid 6955) 116s
run: gitlab-monitor: (pid 6993) 115s; run: log: (pid 6992) 115s
run: gitlab-workhorse: (pid 6980) 115s; run: log: (pid 6979) 115s
run: grafana: (pid 7018) 115s; run: log: (pid 7016) 115s
run: logrotate: (pid 7009) 115s; run: log: (pid 7008) 115s
run: nginx: (pid 7010) 115s; run: log: (pid 6982) 115s
run: node-exporter: (pid 6986) 115s; run: log: (pid 6981) 115s
run: postgres-exporter: (pid 7015) 115s; run: log: (pid 7012) 115s
run: postgresql: (pid 6966) 116s; run: log: (pid 6965) 116s
run: prometheus: (pid 7014) 115s; run: log: (pid 7011) 115s
run: redis: (pid 6985) 115s; run: log: (pid 6984) 115s
run: redis-exporter: (pid 6987) 115s; run: log: (pid 6983) 115s
run: sidekiq: (pid 6958) 116s; run: log: (pid 6957) 116s
run: unicorn: (pid 14764) 1s; run: log: (pid 6994) 115s
[root@k8s ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           5699        1723        2817          72        1158        3621
Swap:             0           0           0
[root@k8s ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           5699        1920        2620          72        1158        3424
Swap:             0           0           0
[root@k8s ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           5699        1943        2597          72        1158        3401
Swap:             0           0           0

稍等片刻 设置密码后 以root用户登陆


系统邮件配置

目的,系统配置邮箱使用stmp发送创建帐号信息等,如:创建帐号后发送用户密码初始设置页面到用户或用户有变更时会出现类似情况
SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol) 若报错则为ssl配置问题,因本次我们未使用https域名所以此项则不配置,具体操作如下

vim /etc/gitlab/gitlab.rb
找到如下设置
### Email Settings
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.XXX.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "XXX@XXX.com"
gitlab_rails['smtp_password'] = "your password"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false #这里是否使用ssl协议,本次因未配置ssl域名,这里我们设置为false
gitlab_rails['smtp_openssl_verify_mode'] = 'none'  #如上同理
gitlab_rails['smtp_domain'] = "mail.XXX.com"
gitlab_rails['gitlab_email_from'] = 'XXX@XXX.com'
保存后
gitlab-ctl reconfigure #重启配置
gitlab-ctl restart 
gitlab-rails console #测试邮件
Notify.test_email(‘接收方邮件地址’,‘邮件标题’,‘邮件内容’).deliver_now
Notify.test_email('xxx@XXX.com','hello','hello').deliver_now
  • 当创建用户或用户信息变更时,系统邮件将会发送邮件通知用户




汉化

请注意对应版本信息 如不清楚gitlab版本以及git,请不要操作,否则gitlab瘫痪!

[root@k8s ~]# sudo cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
12.2.4
  • 下载汉化包 注意补丁包版本一定要与gitlab的版本一致,以下直接下载的是gitlab-12-2稳定版的。
wget https://gitlab.com/xhang/gitlab/repository/12-2-stable-zh/archive.tar.bz2 -O gitlab-12-2-stable-zh.tar.bz2

git clone https://gitlab.com/xhang/gitlab.git
-rw-r--r-- 1 root root 2231640 Sep  4 14:33 gitlab-12-2-stable-zh.tar.bz2
  • 解压
[root@k8s ~]# tar xf gitlab-12-2-stable-zh.tar.bz2
[root@k8s home]# mv gitlab-12-2-stable-zh-d492132c9775663063d2438cbc674e14cda3bd25/ gitlab-12-2-stable-zh
[root@k8s home]# cat gitlab-12-2-stable-zh/VERSION 
12.2.0
  • 备份原有配置
[root@k8s home]# cp -r /opt/gitlab/embedded/service/gitlab-rails{,.ori}
  • 复制并覆盖配置文件
[root@k8s home]# cp -rf gitlab-12-2-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
cp: overwrite ‘/opt/gitlab/embedded/service/gitlab-rails/app/controllers/abuse_reports_controller.rb’? yes
cp: overwrite ‘/opt/gitlab/embedded/service/gitlab-rails/app/controllers/acme_challenges_controller.rb’? yes

这里仍提示是否覆盖 发现这是别名引起的

[root@k8s home]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

发现每次执行cp命令,其实是执行了cp -i命令的别名,因此无论怎么输入都提示是否覆盖。
修改~/.bashrc,在“alias cp='cp -i'”前添加#号注释后即可。

[root@k8s home]#  vi ~/.bashrc 
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
# alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
~    

刷新

[root@k8s home]# source ~/.bashrc

仍不生效的话,请在命令前加上“\”

[root@k8s home]# \cp -rf gitlab-12-2-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/log’ with directory ‘gitlab-12-2-stable-zh/log’
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/tmp’ with directory ‘gitlab-12-2-stable-zh/tmp’

这里的错误,忽略,因为之前已经设置gitlab的root密码了

  • 重新配置gitlab
[root@k8s home]# gitlab-ctl reconfigure
  • 重置gitlab
[root@k8s home]# gitlab-ctl restart 
ok: run: alertmanager: (pid 26363) 0s
ok: run: gitaly: (pid 26378) 0s
ok: run: gitlab-monitor: (pid 26400) 0s
ok: run: gitlab-workhorse: (pid 26417) 1s
ok: run: grafana: (pid 26426) 0s
ok: run: logrotate: (pid 26443) 1s
ok: run: nginx: (pid 26451) 0s
ok: run: node-exporter: (pid 26537) 0s
ok: run: postgres-exporter: (pid 26547) 1s
ok: run: postgresql: (pid 26561) 0s
ok: run: prometheus: (pid 26571) 1s
ok: run: redis: (pid 26584) 0s
ok: run: redis-exporter: (pid 26589) 1s
ok: run: sidekiq: (pid 26597) 0s
ok: run: unicorn: (pid 26609) 1s
[root@k8s home]# 
  • 进入界面,请耐心等待,仍会出502错误提示。此时界面已不再是英文,可见汉化成功,耶~~~


Gitlab基本命令

sudo gitlab-ctl start    # 启动所有 gitlab 组件;并加入开机启动项里面:/etc/rc.local
sudo gitlab-ctl stop     # 停止所有 gitlab 组件;
sudo gitlab-ctl restart   # 重启所有 gitlab 组件;
sudo gitlab-ctl status    # 查看服务状态;
sudo gitlab-ctl tail       # 查看日志;

安装GitLab服务器配置注意事项,502很大程度上是因为CPU、内存耗尽导致

安装硬件需求

CPU
1 核心CPU最多支持100个用户,所有的workers和后台任务都在同一个核心工作这将导致GitLab服务响应会有点缓慢。
2核心 支持500用户,这也是官方推荐的最低标准。
4 核心支持2,000用户。
8 核心支持5,000用户。
16 核心支持10,000用户。
32 核心支持20,000用户。
64 核心支持40,000用户。
如果想支持更多用户,可以使用 集群式架构
Memory
安装使用GitLab需要至少4GB可用内存(RAM + Swap)! 由于操作系统和其他正在运行的应用也会使用内存, 所以安装GitLab前一定要注意当前服务器至少有4GB的可用内存. 少于4GB内存会导致在reconfigure的时候出现各种诡异的问题, 而且在使用过程中也经常会出现500错误.
1GB 物理内存 + 3GB 交换分区 是最低的要求,但我们 强烈反对 使用这样的配置。 查看下面unicorn worker章节获取更多建议。
2GB 物理内存 + 2GB 交换分区 支持100用户,但服务响应会很慢。
4GB 物理内存 支持100用户,也是 官方推荐 的配置。
8GB 物理内存 支持 1,000 用户。
16GB 物理内存 支持 2,000 用户。
32GB 物理内存 支持 4,000 用户。
64GB 物理内存 支持 8,000 用户。
128GB 物理内存 支持 16,000 用户。
256GB 物理内存 支持 32,000 用户。
如果想支持更多用户,可以使用 集群式架构
即使你服务器有足够多的RAM, 也要给服务器至少分配2GB的交换分区。 因为使用交换分区可以在你的可用内存波动的时候降低GitLab出错的几率。

注意: Sidekiq的25个workers在查看进程(top或者htop)的时候会发现它会单独显示每个worker,但是它们是共享内存分配的,这是因为Sidekiq是一个多线程的程序。 详细内容查看下面关于Unicorn workers 的介绍。

注意事项

一、首先看看配置文件/etc/gitlab/gitlab.rb 中的端口号是否被占用
二、另外一个原因是gitlab占用内存太多,导致服务器崩溃
内存问题 解决办法,启用swap分区,步骤如下:

cat /proc/swaps 查看swap分区是否启动(无)
创建 :
dd if=/dev/zero of=/data/swap bs=512 count=8388616

创建swap大小为bs*count=4294971392(4G);

通过mkswap命令将上面新建出的文件做成swap分区

mkswap /data/swap

查看内核参数vm.swappiness中的数值是否为0,如果为0则根据实际需要调整成60

查看: cat /proc/sys/vm/swappiness
设置: sysctl -w vm.swappiness=60
若想永久修改,则编辑/etc/sysctl.conf文件,改文件中有vm.swappiness变量配置,默认为0
启用分区

swapon /data/swap

echo “/data/swap swap swap defaults 0 0” >> /etc/fstab

再次使用cat /proc/swaps 查看swap分区是否启动

重启gitlab。

卸载gitlab

  • 清理命令
sudo gitlab-ctl uninstall
sudo gitlab-ctl cleanse
sudo gitlab-ctl remove-accounts
  • 停止gitlab
gitlab-ctl stop
  • 卸载gitlab
rpm -e gitlab-ce
  • 查看进程
ps aux | grep gitlab
kill -9 xxx
杀掉守护进程
  • 清理残余文件
find / -name gitlab | xargs rm -rf
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容