记一次基于 Ubuntu 18.04 系统下的 gitlab 搭建

转自:https://shawchen08.github.io/2019/03/21/gitlab-local-build/


准备工作

安装 gitlab

步骤

安装依赖包

1
2
3
4
sudo apt-get install curl openssh-server ca-certificates

# 如需使用 postfix 就安装,我使用的是 smtp 服务,故没有装
# sudo apt-get install postfix

注:执行完成后,出现邮件配置,按需选择

安装 gitlab-ce

官方的建议是使用脚本直接执行安装

1
2
3
sudo curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
# 加上 = 及后面的版本号是为了安装指定版本
sudo apt-get install gitlab-ce=10.1.1-ce.0


若官方版不行,利用清华大学镜像来进行主程序的安装

修改相关配置

1
sudo vim /etc/gitlab/gitlab.rb

其他的基本上不需要修改,主要是配置邮件(阿里云企业邮箱为例,yourdomain 表示你的企业邮箱域名, yourname 表示你的邮箱名)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 邮箱设置

gitlab_rails['gitlab_email_enabled'] = true # 是否开启系统邮箱,默认开启
gitlab_rails['gitlab_email_from'] = 'yourname@yourdomain.com' # 系统邮箱发件人
gitlab_rails['gitlab_email_display_name'] = 'Gitlab' # 显示的发件人名称,默认GitLab
gitlab_rails['gitlab_email_reply_to'] = 'yourname@yourdomain.com' # 收件邮箱
gitlab_rails['gitlab_email_subject_suffix'] = 'gitlab' # 邮件标题后缀


gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.yourdomain.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "yourname@yourdomain.com"
gitlab_rails['smtp_password'] = "your password" # 就是邮箱密码
gitlab_rails['smtp_domain'] = "smtp.yourdomain.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true


gitlab_rails['smtp_openssl_verify_mode'] = 'none'

启动sshd和postfix服务

1
2
3
4
sudo service sshd start

# 使用 smtp 服务发邮件就可跳过这一步
# sudo service postfix start

添加防火墙规则

这里使用的是80端口,可以是其他端口

1
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT


重新配置并启动各项服务

1
sudo gitlab-ctl reconfigure

检查GitLab是否安装好并且已经正确运行

1
sudo gitlab-ctl status

如果得到类似下面的结果,则说明GitLab运行正常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
run: alertmanager: (pid 18343) 15s; run: log: (pid 18080) 28s
run: gitaly: (pid 18152) 18s; run: log: (pid 17353) 95s
run: gitlab-monitor: (pid 18212) 17s; run: log: (pid 17953) 42s
run: gitlab-workhorse: (pid 18185) 17s; run: log: (pid 17717) 60s
run: logrotate: (pid 17831) 53s; run: log: (pid 17876) 52s
run: nginx: (pid 17720) 59s; run: log: (pid 17780) 56s
run: node-exporter: (pid 18200) 17s; run: log: (pid 17916) 48s
run: postgres-exporter: (pid 18362) 15s; run: log: (pid 18118) 24s
run: postgresql: (pid 17359) 90s; run: log: (pid 17521) 87s
run: prometheus: (pid 18313) 16s; run: log: (pid 18030) 34s
run: redis: (pid 17148) 97s; run: log: (pid 17184) 96s
run: redis-exporter: (pid 18300) 16s; run: log: (pid 17985) 38s
run: sidekiq: (pid 17651) 67s; run: log: (pid 17682) 64s
run: unicorn: (pid 17599) 69s; run: log: (pid 17648) 68s

浏览web页面并设置密码

访问https://10.10.28.100/ (ip为你设置的那个)

测试邮件发送功能

1
2
3
4
sudo gitlab-rails console

# 进入控制台,然后发送邮件
Notify.test_email('xxxx@xxx.com', '邮件标题', '邮件正文').deliver_now

一般来说,若出现类似如下结果,则说明配置成功,可以去查看有没有收到邮件

若是报错: EOFError: end of file reached,基本上是因为配置端口和是否使用 ssl 配置不匹配导致的:

设置开机启动

1
2
3
4
5
# 开机启动
sudo systemctl enable gitlab-runsvdir.service

# 禁止开机启动
sudo systemctl disable gitlab-runsvdir.service
汉化(仅供参考)

常用 gitlab 命令

完全卸载删除 gitlab

  1. 停止 gitlab

    1
    gitlab-ctl stop
  2. 卸载 gitlab(注意这里写的是 gitlab-ce)

    1
    2
    3
    4
    5
    # Debian/Ubuntu
    sudo dpkg -r gitlab-ce

    # Redhat/Centos
    rpm -e gitlab-ce
  3. 查看 gitlab 进程

    1
    ps aux | grep gitlab
  4. 杀掉第一个进程(就是带有好多………….的进程,18777 是进程 id)

    1
    kill -9 18777

杀掉后,在 ps aux | grep gitlab 确认一遍,还有没有 gitlab 的进程,如有,重复第 4 步

  1. 删除所有包含 gitlab 文件

    1
    find / -name gitlab | xargs rm -rf

常用 Linux 命令

压缩解压缩

查找内容中带有关键字的文件

查看包的版本

apt-get update相关

tips

linux 使用命令 find / -name *** 查找文件的时候会遇到以下报错

find: '/run/user/1000/gvfs': Permission denied

明明用的是 root 用户,为什么权限不足呢?

官方说这是一个 bug——bug#615848. 原因是 FUSE 文件系统和权限不配的问题,全局搜索时碰到它就会退出报错。

其实这个目录是空的,查不查都没关系。所以,以下解决方式比较简直暴

1
2
3
umount /run/user/1000/gvfs

rm -rf /run/user/1000/gvfs


: 在卸载 gitlab 然后再次安装执行sudo gitlab-ctl reconfigure的时候往往会出现:ruby_block[supervise_redis_sleep] action run,会一直卡无法往下进行!

解决方案:

  1. 按住 CTRL+C 强制结束

  2. 运行:sudo systemctl restart gitlab-runsvdir

  3. 再次执行:sudo gitlab-ctl reconfigure

解决方案来源:https://gitlab.com/gitlab-org/omnibus-gitlab/issues/160#note_24078285

或者直接另起一个命令行执行sudo systemctl restart gitlab-runsvdir

参考资料


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。