记一次基于 Ubuntu 18.04 系统下的 gitlab 搭建
转自:https://shawchen08.github.io/2019/03/21/gitlab-local-build/
准备工作
事先装好
vim
是明智的选择很多包都依赖ruby,先安装好少踩坑:
sudo apt-get install ruby
并且改变 gems 和 bundler 默认源1
2gem sources --add https://mirrors.tuna.tsinghua.edu.cn/rubygems/ --remove https://rubygems.org/
bundle config mirror.https://rubygems.org https://mirrors.tuna.tsinghua.edu.cn/rubygems利用清华大学镜像更新
/etc/apt/sources.list
,避免初相“无法定位软件包”的问题
安装 gitlab
步骤
安装依赖包
1
2
3
4sudo apt-get install curl openssh-server ca-certificates
# 如需使用 postfix 就安装,我使用的是 smtp 服务,故没有装
# sudo apt-get install postfix
注:执行完成后,出现邮件配置,按需选择
安装 gitlab-ce
官方的建议是使用脚本直接执行安装
1
2
3sudo 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'] = '[email protected]' # 系统邮箱发件人
gitlab_rails['gitlab_email_display_name'] = 'Gitlab' # 显示的发件人名称,默认GitLab
gitlab_rails['gitlab_email_reply_to'] = '[email protected]' # 收件邮箱
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'] = "[email protected]"
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
4sudo 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
14run: 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为你设置的那个)
帐号:
root
密码:
5iveL!fe
测试邮件发送功能
1
2
3
4sudo gitlab-rails console
# 进入控制台,然后发送邮件
Notify.test_email('[email protected]', '邮件标题', '邮件正文').deliver_now
一般来说,若出现类似如下结果,则说明配置成功,可以去查看有没有收到邮件
若是报错: EOFError: end of file reached
,基本上是因为配置端口和是否使用 ssl 配置不匹配导致的:
使用25端口, 就不要配置 ssl 相关项目
使用465,应该将以下设置好
1
2
3
4gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'none'
设置开机启动
1
2
3
4
5# 开机启动
sudo systemctl enable gitlab-runsvdir.service
# 禁止开机启动
sudo systemctl disable gitlab-runsvdir.service汉化(仅供参考)
常用 gitlab 命令
重新配置:
gitlab-ctl reconfigure
启动:
gitlab-ctl start
重新启动:
gitlab-ctl restart
停止:
gitlab-ctl stop
查看状态:
gitlab-ctl status
实时日志查看:
gitlab-ctl tail
检查报错:
gitlab-rake gitlab:check
完全卸载删除 gitlab
停止 gitlab
1
gitlab-ctl stop
卸载 gitlab(注意这里写的是 gitlab-ce)
1
2
3
4
5# Debian/Ubuntu
sudo dpkg -r gitlab-ce
# Redhat/Centos
rpm -e gitlab-ce查看 gitlab 进程
1
ps aux | grep gitlab
杀掉第一个进程(就是带有好多………….的进程,18777 是进程 id)
1
kill -9 18777
杀掉后,在 ps aux | grep gitlab
确认一遍,还有没有 gitlab 的进程,如有,重复第 4 步
删除所有包含 gitlab 文件
1
find / -name gitlab | xargs rm -rf
常用 Linux 命令
压缩解压缩
压缩:
tar -zcvf archive_name.tar.gz directory_to_compress
解压缩到当前目录:
tar -zxvf archive_name.tar.gz
解压缩到指定目录:
tar -zxvf archive_name.tar.gz -C /tmp/extract_here/
查找内容中带有关键字的文件
在根目录中找:
find / -type f -name "*" | xargs grep "keyword"
在当前目录中找:
find . -type f -name "*" | xargs grep "keyword"
查看包的版本
查询你的机器安装了哪些版本:
dpkg -l '包名'
查询远程库存在哪些版本:
apt-cache madison "包名"
安装指定某个版本:
sudo apt-get install 包名=版本号
apt-get update相关
忽略指定包:apt-mark hold xxx
取消忽略指定包:apt-mark unhold xxx
tips
linux 使用命令 find / -name ***
查找文件的时候会遇到以下报错
find: '/run/user/1000/gvfs': Permission denied
明明用的是 root 用户,为什么权限不足呢?
官方说这是一个 bug——bug#615848. 原因是 FUSE 文件系统和权限不配的问题,全局搜索时碰到它就会退出报错。
其实这个目录是空的,查不查都没关系。所以,以下解决方式比较简直暴
1
2
3umount /run/user/1000/gvfs
rm -rf /run/user/1000/gvfs
注: 在卸载 gitlab 然后再次安装执行sudo gitlab-ctl reconfigure
的时候往往会出现:ruby_block[supervise_redis_sleep] action run
,会一直卡无法往下进行!
解决方案:
按住
CTRL+C
强制结束运行:
sudo systemctl restart gitlab-runsvdir
再次执行:
sudo gitlab-ctl reconfigure
解决方案来源:https://gitlab.com/gitlab-org/omnibus-gitlab/issues/160#note_24078285
或者直接另起一个命令行执行sudo systemctl restart gitlab-runsvdir
发表评论