GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。
Postfix支持Gitlab发信功能
设置Postfix开机自启,并启动
1
2
| systemctl enable postfix
systemctl start postfix
|
在Postfix安装期间,可能会出现配置屏幕。选择“Internet Site”并按Enter键。使用服务器的外部DNS作为“邮件名称”,然后按Enter键。如果出现其他屏幕,请继续按Enter键接受默认值。
gitlab-ce 是社区版,免费
gitlab-ee 是企业版,收费
1
2
| curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash
EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ce # 安装 GitLab
|
更改 https://gitlab.example.com 为您要访问GitLab实例的URL
如果提示连接超时,可以使用清华大学开源软件镜像站
进入该网站后,有详细的安装步骤,跟着安装即可。
这里介绍一下在CentOS中使用 清华大学开源软件镜像站安装
先还原yum源, 删掉Gitlab-ce源
1
2
| ls -l /etc/yum.repos.d/ # 查看源配置项
mv /etc/yum.repos.d/gitlab_gitlab-ce.repo /etc/yum.repos.d/gitlab_gitlab-ce.repo.bak # 备份源配置项(也可以直接删除 rm)
|
新建/etc/yum.repos.d/gitlab-ce.repo
,内容为
1
2
3
4
5
6
7
| cat > /etc/yum.repos.d/gitlab-ce.repo <<'EOF'
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
EOF
|
再执行
1
2
3
4
| yum makecache
yum -y install gitlab-ce #自动安装最新版
yum -y install gitlab-ce-x.x.x #安装指定版本
yum -y install gitlab-ce-12.0.4 #本次安装12.0.4,因为汉化包是12.0.4
|
启动命令
1
2
| gitlab-ctl reconfigure # 首次启动也要用此命令。重新加载配置并启动
gitlab-ctl start # 启动
|
GitLab基本配置集中在/etc/gitlab/gitlab.rb
文件, 每个参数的作用和配置请参考官网的配置说明.
需要注意的几个参数
1
2
3
4
| external_url 'http://192.168.1.83' # clone时显示的地址,gitlab 的域名
# unicorn['listen'] = 'localhost'
# unicorn['port'] = 8080 #默认是8080端口
# nginx['listen_port'] = 80 # gitlab nginx 端口。默认端口为:80
|
![https://img.bwcxtech.com/img/20200928155736.png https://img.bwcxtech.com/img/20200928155736.png]()
![https://img.bwcxtech.com/img/20200928155740.png https://img.bwcxtech.com/img/20200928155740.png]()
![https://img.bwcxtech.com/img/20200928155745.png https://img.bwcxtech.com/img/20200928155745.png]()
1
2
| gitlab-ctl stop # 先停止 GitLab 服务
vi /etc/gitlab/gitlab.rb # 修改配置文件
|
进行任何改动后, 保存退出, 在命令行逐个输入以下命令使配置生效
启动数据库, 不然 reconfigure 报错
1
2
3
| gitlab-ctl restart postgresql
gitlab-ctl reconfigure
gitlab-ctl start
|
1
2
3
4
5
| gitlab-ctl stop # 停止
rpm -e gitlab-ce # 卸载
ps aux | grep gitlab # 查看守护进程
kill -9 18777 # 杀掉守护进程
find / -name gitlab | xargs rm -rf # 删除所有包含gitlab的文件
|
1
2
3
4
| mkdir -p /data/gitlab/
cd docker/gitlab/
mkdir -p /data/gitlab/{config,logs,data}
export GITLAB_HOME=/data/gitlab
|
GitLab容器使用主机卷来存储持久数据
本地位置 | 容器中的位置 | 用途 |
---|
/data/gitlab/data | /var/opt/gitlab | 存储应用程序数据 |
/data/gitlab/logs | /var/log/gitlab | 存储日志 |
/data/gitlab/config | /etc/gitlab | 存储GitLab配置文件 |
docker-compose.yml
内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| version: '2.3'
services:
gitlab-ce:
image: 'gitlab/gitlab-ce:latest'
container_name: gitlab-ce
restart: always
# hostname: 'gitlab.example.com'
hostname: '192.168.1.10'
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.1.10'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
# 需要配置到 gitlab.rb 中的配置可以在这里配置,每个配置一行,注意缩进。
# 比如下面的电子邮件的配置:
# gitlab_rails['smtp_enable'] = true
# gitlab_rails['smtp_address'] = "smtp.qiye.aliyun.com"
# gitlab_rails['smtp_port'] = 465
# gitlab_rails['smtp_user_name'] = "xxxx@xx.com"
# gitlab_rails['smtp_password'] = "password"
# gitlab_rails['smtp_authentication'] = "login"
# gitlab_rails['smtp_enable_starttls_auto'] = true
# gitlab_rails['smtp_tls'] = true
# gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'
# ssh端口不修改会冲突
gitlab_rails['gitlab_shell_ssh_port'] = 2222
# root账号的密码,注意不能小于八位
gitlab_rails['initial_root_password'] = "root@123"
# Add any other gitlab.rb configuration here, each on its own line
ports:
- '80:80'
- '443:443'
- '2222:22'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
|
docker-compose
方式并没有进行服务拆分,可以直接docker启动
1
2
3
4
5
6
7
8
9
10
11
| docker run -d \
-p 443:443 -p 80:80 -p 2222:22 \
--hostname 192.168.1.10 \
--name gitlab \
--restart always \
-e TZ=Asia/Shanghai \
-e GITLAB_ROOT_PASSWORD=root@123 \
-v $GITLAB_HOME/config:/etc/gitlab \
-v $GITLAB_HOME/logs:/var/log/gitlab \
-v $GITLAB_HOME/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
|
如果没有指定root密码,看这里
![image-20210628144404489 https://img.bwcxtech.com/img/20210629103233.png]()
1
| docker exec -it gitlab cat /etc/gitlab/initial_root_password
|
当前版本信息
1
| gitlab_version=$(cat /opt/gitlab/embedded/service/gitlab-rails/VERSION)
|
假设当前版本为v12.0.4,并确认汉化版本库是否包含该版本的汉化标签(-zh结尾)。
如果具有相同版本的汉化标签,则在本地 clone 仓库。
安装git,patch
1
| yum -y install git patch
|
克隆汉化版本库(可能下载很慢,拼运气的)
1
| git clone https://gitlab.com/xhang/gitlab.git
|
查看该汉化补丁的版本
如果已经克隆过,则进行更新
然后比较汉化标签和原标签,导出 patch 用的 diff 文件。
导出12.0.4版本的汉化补丁
1
| git diff v${gitlab_version} v${gitlab_version}-zh > ../${gitlab_version}-zh.diff
|
执行完毕后将生成当前版本的补丁文件,如 12.0.4-zh.diff
导入汉化补丁
停止 gitlab
1
2
| cd /root
patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < 12.0.4-zh.diff
|
确定没有 .rej 文件,重启 GitLab 即可。
执行重新配置命令
主要修改两个地方
1
| vi /etc/gitlab/gitlab.rb
|
1
2
3
4
5
| gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'gitlab@example.com'
gitlab_rails['gitlab_email_display_name'] = 'Gitlab'
gitlab_rails['gitlab_email_reply_to'] = 'gitlab@example.com'
gitlab_rails['gitlab_email_subject_suffix'] = ''
|
![https://img.bwcxtech.com/img/20200928155842.png https://img.bwcxtech.com/img/20200928155842.png]()
1
2
3
4
5
6
7
8
9
| gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qiye.aliyun.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "gitlab@example.com"
gitlab_rails['smtp_password'] = "123456"
gitlab_rails['smtp_domain'] = "qiye.aliyun.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
|
![https://img.bwcxtech.com/img/20200928155832.png https://img.bwcxtech.com/img/20200928155832.png]()
修改完后重新加载配置
通过命令行测试邮件是否发送成功
1
2
3
| gitlab-rails console
irb(main):003:0> Notify.test_email('1624717079@qq.com', 'Message Subject', 'Message Body').deliver_now
|
GitLab中默认启用用户头像是自动随机生成的,由于Gravatar被墙,加载很长时间头像也无法显示,影响加载速度。
![image-20221128132924892 https://img.bwcxtech.com/img/202211281331628.png]()
管理中心-通用-账户和限制
取消勾选 启用 Gravatar
![image-20221128133112854 https://img.bwcxtech.com/img/202211281331273.png]()
1
| vi /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
|
将plain_url的地址改为以下其一
1
2
| https://sdn.geekzu.org/avatar/%{hash}?s=%{size}&d=identicon
https://gravatar.loli.net/avatar/%{hash}?s=%{size}&d=identicon
|
然后执行
1
2
| gitlab-ctl restart
gitlab-rake cache:clear RAILS_ENV=production
|