参考官方文档:https://about.gitlab.com/install/
一、安装和配置依赖环境
最少需要 4G 内存
1 关闭防火墙和 SELinux
2 安装依赖包
yum install -y curl policycoreutils-python openssh-server perl
二、添加GitLab软件包存储库并安装软件包
1 添加 GitLab 仓库文件
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
2 配置服务器的 FQDN
external_url
的值,将用于与 GitLab实例进行交互的地址。通过SSH / HTTP / HTTPS克隆将使用此地址。访问Web UI将引用此DNS条目。
下面我们声明一个变量,一般安装工具使用此变量部署 GitLab Server
EXTERNAL_URL="https://gitlab.sharkyun.com"
注意: gitlab.sharkyun.com
需要能被正常解析为 GitLab Server 的 IP
安装 Git ce (社区版)
Git ee 是企业版,收费
yum install -y gitlab-ee
三、配置 Gitlab Server
gitlab的配置文件 /etc/gitlab/gitlab.rb
1 配置时区
gitlab_rails['time_zone'] = 'Asia/Shanghai'
2 绑定监听的域名或IP
external_url 'http://192.168.60.119'
此地址用于访问 GitLab 服务器。
3 使用非默认的 80 端口
如果需要手工修改nginx的port ,可以在gitlab.rb中设置 nginx[‘listen_port’] = 8000 ,然后再次 gitlab-ctl reconfigure即可
4 配置发送邮件通知
假如你想让互联网的邮箱服务提供商,帮你的 gitlab
发送邮件,就需要在配置文件中设置,并且需要在邮件服务提供商那里开通 SMTP
和POP3
功能。
关于 SMTP 和 POP3 的区别,访问 https://www.zhihu.com/question/24605584
这里简单说一下, SMTP
用于发邮件, POP3
用于收邮件。
这里我以 126
邮箱为例,演示一下
- 首先我们在邮箱服务提供商那里开通
SMTP
。
- 配置系统使用的SMTP 服务器设置
在配置文件: /etc/gitlab/gitlab.rb 中做如下修改
这部分,不管是使用postmail或者SMTP都需要做如下的配置。
# 是否开启系统邮箱,默认开启
gitlab_rails['gitlab_email_enabled'] = true
# 用这个账号去发送邮件,也就是开通了 SMTP 服务的账户
gitlab_rails['gitlab_email_from'] = 'my@126.cn'
# 发送邮件中要显示的发件人名称
gitlab_rails['gitlab_email_display_name'] = 'Gitlab Server Admin'
# 邮件的标题后缀,如下图
gitlab_rails['gitlab_email_subject_suffix'] = '[gitlab]'
-
配置完系统的发件信息,接下来设置邮件服务提供商的账户登录验证信息。
要想使用邮件服务商为 gitlab 系统发送邮件,是需要进行登录, 登录就需要先验证的。
所以要填写相关用于登录验证的信息
值的注意的是,上面
gitlab_email_from
的账户必须和这里的用户名(smtp_user_name
)一致。# 是否开启系统邮箱,默认开启 gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.126.com" gitlab_rails['smtp_port'] = 465 # 用这个账号去发送邮件,也就是开通了 SMTP 服务的账户 gitlab_rails['smtp_user_name'] = "my@126.com" gitlab_rails['smtp_password'] = "xxx" # 授权码,非登录密码 gitlab_rails['smtp_domain'] = "126.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' # 更多查看下方网址 # https://docs.gitlab.com/omnibus/settings/smtp.html # 如果你不配置发件人, 有些邮件服务器会发送失败, # 所以我们最好把账号和发件人都配置了, 并且保持一致, 这样保证兼容问题
SMTP 客户端授权码
- 重启相关服务,使最新的配置文件生效
先启动服务
gitlab-ctl start
[root@vm1 ~]# gitlab-ctl reconfigure
# 再重启一下
[root@vm1 ~]# gitlab-ctl restart
使用gitlab-rails console命令进行发送邮件测试,如下所示:
irb(main):003:0> Notify.test_email('收件人邮箱', '邮件标题', '邮件正文').deliver_now
示例
[root@prodgitlab ~]# gitlab-rails console
--------------------------------------------------------------------------------
Ruby: ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]
GitLab: 13.8.2 (643958d42f2) FOSS
GitLab Shell: 13.15.0
PostgreSQL: 12.5
--------------------------------------------------------------------------------
Loading production environment (Rails 6.0.3.4)
irb(main):001:0> Notify.test_email('86000153@qq.com', 'Message Subject', 'Messa
ge Body').deliver_now
Notify#test_email: processed outbound mail in 2.3ms
Delivered mail 60b4b7bd615ee_43ac544c8634e@prodgitlab.mail (6172.2ms)
Date: Mon, 31 May 2021 18:17:33 +0800
From: GitLab Server <sharkyunops@126.com>
Reply-To: GitLab Server <noreply@gitlab.sharkyun.com>
To: 86000153@qq.com
Message-ID: <60b4b7bd615ee_43ac544c8634e@prodgitlab.mail>
Subject: Message Subject
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
Auto-Submitted: auto-generated
X-Auto-Response-Suppress: All
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>Message Body</p></body></html>
=> #<Mail::Message:191400, Multipart: false, Headers: <Date: Mon, 31 May 2021 18:17:33 +0800>, <From: GitLab Server <sharkyunops@126.com>>, <Reply-To: GitLab Server <noreply@gitlab.sharkyun.com>>, <To: 86000153@qq.com>, <Message-ID: <60b4b7bd615ee_43ac544c8634e@prodgitlab.mail>>, <Subject: Message Subject>, <Mime-Version: 1.0>, <Content-Type: text/html; charset=UTF-8>, <Content-Transfer-Encoding: 7bit>, <Auto-Submitted: auto-generated>, <X-Auto-Response-Suppress: All>>
irb(main):002:0> quit
[root@prodgitlab ~]#
配置并启动相关服务
每次必须配置后,才能启动相关服务器,不论是不是第一次启动服务。
使用gitlab-ctl reconfigure 自动配置,并安装数据库,初始化信息,如下所示(第一次使用配置时间较长):
[root@vm1 ~]# gitlab-ctl reconfigure
.....
启动服务器执行如下命令
gitlab-ctl restart
四、初次登录
1 设置 root 管理员密码
用户在第一次登录服务器的时候,都需要重新设置密码。
在浏览器中输入 Gitlab 服务器地址
由于安装的版本不同,有可能你看到页面的布局和这里的不一样。
2 登录
修改密码成功后,再次访问服务器,会显示登录页面
3 设置中文页面
页面拉取到最后
修改完毕后,刷新页面即可
4 修改管理员 root 的密码
假如忘记密码可以执行如下命令修改
方式一:命令: gitlab-rake "gitlab:password:reset"
(使用于 13.9 版本)
[root@prodgitlab ~]# gitlab-rake "gitlab:password:reset"
Enter username: root // 输入需要修改密码的用户名
Enter password:
Confirm password:
Password successfully updated for user with username root.
方式二: 通用
gitlab-rails console
user = User.find(1)
user.password = "新密码"
user.password_confirmation = "新密码"
user.save!
quit
五、docker-compose 方式部署
最简单的方式
web:
image: 'gitlab/gitlab-ee:latest'
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.example.com'
# Add any other gitlab.rb configuration here, each on its own line
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
自定义HTTP和SSH端口的方式如下:
web:
image: 'gitlab/gitlab-ee:latest'
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.example.com:8929'
gitlab_rails['gitlab_shell_ssh_port'] = 2224
ports:
- '8929:8929'
- '2224:22'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'