gitlab安装与配置

参考资料

官方文档 https://docs.gitlab.com/ce/
安装说明 https://about.gitlab.com/install

安装

官方企业版安装文档 https://about.gitlab.com/install/#centos-7?version=ee
官方社区版安装文档 https://about.gitlab.com/install/#centos-7?version=ce
清华大学镜像站 https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/

参照上述官方文档即可安装,其中需要注意以下地方。

  • 如果没有开启firewalld可以不用执行命令行中关于firewalld的指令
  • 如果你想使用其他邮件系统发送邮件通知可以不用安装postfix
  • 注意在执行sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-ee安装时替换地址https://gitlab.example.com 如果你这里使用https,系统会自动给你配置一个证书,也可以使用http。当然你可以安装完毕之后通过修改配置文件/etc/gitlab/gitlab.rb修改
  • 注意选择版本ee企业版,ce社区版

以下为centos7 ce社区版,使用清华大学的镜像的安装示例

  1. 安装依赖包
yum install -y curl policycoreutils-python openssh-server openssh-clients
systemctl enable sshd
systemctl start sshd
  1. 添加清华大学的gitlab-ce镜像 https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/

新建 /etc/yum.repos.d/gitlab-ce.repo,内容为

[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
  1. 安装gitlab-ce
yum makecache
EXTERNAL_URL="http://code.cainiaolexue.com:8090" yum install -y gitlab-ce

服务配置

官方文档 https://docs.gitlab.com/omnibus/README.html#installation-and-configuration-using-omnibus-package

注意:

  • 在gitlab的服务架构中,unicorn是ruby的http server,nginx只是unicorn的反向代理。
  • 配置文件地址 /etc/gitlab/gitlab.rb,配置修改之后执行 gitlab-ctl reconfigure 使配置生效到各个服务的配置中去。
  • 以下为我主要调整的配置项。(因为存在端口占用冲突的情况,主要是修改各种端口)
external_url 'http://code.cainiaolexue.com:8090'

# 优化unicorn服务
unicorn['worker_processes'] = 2

# 调整时区
gitlab_rails['time_zone'] = 'Asia/Shanghai'

gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'service@cainiaolexue.com'
gitlab_rails['gitlab_email_display_name'] = '源码管理系统'
gitlab_rails['gitlab_email_reply_to'] = 'service@cainiaolexue.com'
gitlab_rails['gitlab_email_subject_suffix'] = ''

# 配置邮箱 https://docs.gitlab.com/omnibus/settings/smtp.html

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.ym.163.com"
gitlab_rails['smtp_port'] = 994
gitlab_rails['smtp_user_name'] = "service@cainiaolexue.com"
gitlab_rails['smtp_password'] = "smtp password"
gitlab_rails['smtp_domain'] = "cainiaolexue.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'

# If your SMTP server does not like the default 'From: gitlab@localhost' you
# can change the 'From' with this setting.
gitlab_rails['gitlab_email_from'] = 'gitlab@example.com'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'

查看配置

[root@web37 ~]# grep -v "#" /etc/gitlab/gitlab.rb  | grep -v "^$"
external_url 'http://code.cainiaolexue.com:80090'
unicorn['worker_processes'] = 2
gitlab_rails['time_zone'] = 'Asia/Shanghai'
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'service@cainiaolexue.com'
gitlab_rails['gitlab_email_display_name'] = '源码管理系统'
gitlab_rails['gitlab_email_reply_to'] = 'service@cainiaolexue.com'
gitlab_rails['gitlab_email_subject_suffix'] = ''
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.ym.163.com"
gitlab_rails['smtp_port'] = 994
gitlab_rails['smtp_user_name'] = "service@cainiaolexue.com"
gitlab_rails['smtp_password'] = ""
gitlab_rails['smtp_domain'] = "cainiaolexue.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
[root@web37 ~]# 

因为我的服务器上有另外一个nginx,所以我使用了8090端口作为gitlab的访问,也可以在之前的nginx上使用反向代理。

server {
        listen 80;
        server_name code.cainiaolexue.com;
        access_log  /data/weblog/code_access.log  main;
        error_log  /data/weblog/code_error.log;
        location / {
                proxy_redirect off;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://127.0.0.1:8090;
        }
}

GitLab常用命令

gitlab-ctl start        # 启动所有 gitlab 组件
gitlab-ctl stop         # 停止所有 gitlab 组件
gitlab-ctl restart      # 重启所有 gitlab 组件
gitlab-ctl status       # 查看服务状态
gitlab-ctl reconfigure  # 重新配置服务使配置文件写入到各个服务中
gitlab-ctl tail         # 查看日志
gitlab-ctl show-config  # 显示配置信息
vim /etc/gitlab/gitlab.rb  # 修改默认的配置文件
gitlab-rake gitlab:check SANITIZE=true --trace  # 检查gitlab

汉化包

网址 https://gitlab.com/xhang/gitlab

  • 查看gitlab版本 (一定要下载对应版本的汉化文件)
[root@zhangxiu-test gitlab-rails]# rpm -q gitlab-ce
gitlab-ce-11.9.8-ce.0.el7.x86_64
# 或者
[root@zhangxiu-test gitlab-rails]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
11.9.8
  • 下载并使用中文包
# 使用 wget
wget https://gitlab.com/xhang/gitlab/-/archive/11-9-stable-zh/gitlab-11-9-stable-zh.tar.gz -O /gitlab-11-9-stable-zh.tar.gz

# 或者使用 git clone 然后选择对应的版本分支
git clone https://gitlab.com/xhang/gitlab.git
git branch -r
git branch

# 查看汉化包版本
cat VERSION

# 备份文件gitlab无法使用(注意此处cp 前的\ 是因为我的cp命令使用了别名 alias)
[root@zhangxiu-test gitlab]# 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 -fr ./* /opt/gitlab/embedded/service/gitlab-rails/
gitlab-ctl reconfigure
gitlab-ctl restart 
# 语言包文件位置
cat /opt/gitlab/embedded/service/gitlab-rails/locale/zh_CN/gitlab.po

备份与恢复

# 备份
gitlab-rake gitlab:backup:create
# 恢复(把备份的文件放在备份目录下,然后执行恢复)
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:restore BACKUP=1556156510_2019_04_25_11.9.8

# 注意备份gitlab密钥文件,不然用户无法访问
/etc/gitlab/gitlab-secrets.json

gitlab使用 管理员设置

  • 用户 用户组 项目设置

用户组中的用户会生效到用户组下属的所有项目中


用户 用户组 项目设置.png
  • 广播消息发送
消息广播.png

gitlab使用 个人基础信息设置

  • 设置语言,每周星期几开始
基础设置.png
  • 设置access tokens访问令牌

此令牌可以用于jenkins的触发自动部署等


访问令牌.png
  • 设置邮箱姓名等基础信息
邮箱设置.png
  • 设置 ssh 密钥

添加ssh公钥到gitlab,用来获取代码。


ssh密钥.png

常见问题

  • 服务没有启动
[root@zhangxiu-test gitlab]# gitlab-ctl start
fail: alertmanager: runsv not running
fail: gitaly: runsv not running
fail: gitlab-monitor: runsv not running
fail: gitlab-workhorse: runsv not running
fail: logrotate: runsv not running
fail: nginx: runsv not running
fail: node-exporter: runsv not running
fail: postgres-exporter: runsv not running
fail: postgresql: runsv not running
fail: prometheus: runsv not running
fail: redis: runsv not running
fail: redis-exporter: runsv not running
fail: sidekiq: runsv not running
fail: unicorn: runsv not running

需要手动启动一下gitlab服务

systemctl start gitlab-runsvdir.service
  • 新安装服务的管理员账号为 admin@example.com,首次进入系统需要设置密码
  • admin设置500 gitlab 500 errors in the admin area
Started PATCH "/admin/application_settings" for 58.135.84.38 at 2019-04-24 18:09:58 +0800
Processing by Admin::ApplicationSettingsController#update as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"[FILTERED]", "application_setting"=>{"max_pages_size"=>"100", "pages_domain_verification_enabled"=>"1"}}
Completed 500 Internal Server Error in 34ms (ActiveRecord: 12.3ms)

OpenSSL::Cipher::CipherError ():

lib/gitlab/crypto_helper.rb:27:in `aes256_gcm_decrypt'
app/models/concerns/token_authenticatable_strategies/encrypted.rb:45:in `get_token'
app/models/concerns/token_authenticatable_strategies/base.rb:27:in `ensure_token'
app/models/concerns/token_authenticatable_strategies/encrypted.rb:32:in `ensure_token'

参照 https://stackoverflow.com/questions/54128023/gitlab-500-errors-in-the-admin-area

gitlab-rails console
ApplicationSetting.current.reset_runners_registration_token!
  • 添加了公钥到gitlab无法获取代码

注意gitlab ssh端口的开发,防火墙,iptables,/etc/hosts.allow 配置 等

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

推荐阅读更多精彩内容