1. 安装和配置所需的依赖

apt-get update
apt-get install -y curl openssh-server ca-certificates tzdata perl

(可选)如果要使用 Postfix 来发送电子邮件通知,执行以下安装命令。

apt-get install -y postfix

如果您想使用其他解决方案发送电子邮件,请跳过上面 Postfix 安装步骤并在安装极狐GitLab 后配置外部 SMTP 服务器

2. 下载并安装极狐GitLab

执行以下命令配置极狐GitLab 软件源镜像。

# 中国特供版,建议安装全球版
curl -L get.gitlab.cn | bash

# 开源社区版
curl "https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh" | sudo bash
EXTERNAL_URL="https://gitlab.example.com" apt install gitlab-ce

接下来,安装极狐GitLab。安装之前,需要确保您的DNS设置正确。此外,还需要通过设置 EXTERNAL_URL 环境变量来指定极狐GitLab 实例的 URL。

如果您想通过 HTTPS 来访问实例,那么您可以根据官方文档进行配置,让实例使用 Let's Encrypt 自动请求 SSL 证书,这需要有效的主机名和入站 HTTP 访问。您也可以使用自己的证书或仅使用 http://(不带 s)。

如果您想为初始管理员用户( root )指定自定义的初始密码,可以根据文档指导进行配置。否则将默认生成随机密码。

接下来执行如下命令开始安装:

apt-get install -y gitlab-jh

其他配置详情可以查看 Omnibus 安装配置文档

注意,注意,注意:

  • 疑难问题 1

默认情况下puma同样监听8080端口,会和nginx的8080端口重复,建议改成8081端口。查询/etc/gitlab/gitlab.rb中相应的设置

# external_url 'http://gitlab.example.com'
external_url 'https://192.168.100.100:1010'

# 修改unicorn 重复端口
puma['port'] = 8081

  • 疑难问题 2

有时会卡在runsvdir-start ,只需在再开个命令行手动启动下:

/opt/gitlab/embedded/bin/runsvdir-start &
  • 疑难问题 3

Gitlab not accesible after Upgrade to 14.9.1, most probably letsencrypt problem

# 配置它引发的问题 nginx['custom_gitlab_server_config'] 被创建了两次
letsencrypt['enable'] = false

# 将此行代码移除或注释掉
nginx['custom_gitlab_server_config'] = "location /.well-known/acme-challenge/ {\n root /var/opt/gitlab/nginx/www/; \n}\n"
  • 疑难问题 4

gitlab runsv not running

systemctl start gitlab-runsvdir.service

3. 登录极狐GitLab 实例

使用第二步 EXTERNAL_URL 中配置的地址来访问安装成功的极狐GitLab 实例。用户名默认为 root 。如果在安装过程中指定了初始密码,则用初始密码登录,如果未指定密码,则系统会随机生成一个密码并存储在 /etc/gitlab/initial_root_password 文件中, 查看随机密码并使用 root 用户名登录。

注意:出于安全原因,24 小时后,/etc/gitlab/initial_root_password 会被第一次 gitlab-ctl reconfigure 自动删除,因此若使用随机密码登录,建议安装成功初始登录成功之后,立即修改初始密码。

4. 启用https,frpc反向代理

修改文件/etc/gitlab/gitlab.rb

# 域名使用https
external_url 'https://192.168.100.100:1010'

# 取消自动生成ssl证书
letsencrypt['enable'] = false

# 配置ssh clone地址
gitlab_rails['gitlab_ssh_host'] = 'ssh.mhter.com'

# 配置smtp账户
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "mhter@foxmail.com"
# 使用授权的token,不是密码
gitlab_rails['smtp_password'] = "**********"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
# gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'mhter@foxmail.com'

gitlab_rails['gitlab_email_from'] = 'notification@mhter.com'

# 限制内存和线程占用
puma['worker_processes'] = 2
puma['min_threads'] = 4
puma['max_threads'] = 4

# 修改备份地址
gitlab_rails['backup_path'] = "/vol1/1000/Data/Parse/Gitlab"

直接使用frpc映射配置地址: 1010

5. Gitlab CI/CD 配置(持续部署)

教学视频https://www.bilibili.com/video/BV18z421e7pL

卸载gitlab-runner

!/bin/bash
# 卸载gitlab-runner
 
# 停止服务
gitlab-runner stop
 
# 取消随机启动
chkconfig gitlab-runner off
 
# 卸载服务
gitlab-runner uninstall
 
# 清理文件
rm -rf /etc/gitlab-runner
rm -rf /usr/local/bin/gitlab-runner
rm -rf /usr/bin/gitlab-runner
rm -rf /etc/sudoers.d/gitlab-runner
 
# 删除用户
userdel -r gitlab-runner

6.备份与恢复

gitlab-backup create

gitlab-backup restore

7. 卸载gitlab

Debian Linux完全卸载gitlab-ce

在Debian上本地安装了gitlab-ce,维护起来比较麻烦,而且占用了80和443端口

后面想改用docker,就想完全卸载gitlab-ce

卸载服务

sudo gitlab-ctl uninstall

清理所有产生的数据,会提示等待60秒,如果想反悔,可以按Ctrl+C

sudo gitlab-ctl cleanse

需要等待60秒

    *******************************************************************

    * * * * * * * * * * *       STOP AND READ       * * * * * * * * * *

    *******************************************************************

    This command will delete all local configuration, log, and

    variable data associated with gitlab.

    You have 60 seconds to hit CTRL-C before configuration,

    logs, and local data for this application are permanently

    deleted.

    *******************************************************************



移除所有账户

sudo gitlab-ctl remove-accounts

卸载软件

sudo apt purge gitlab-ce

会有警告

dpkg: 警告: 卸载 gitlab-ce 时,目录 /opt/gitlab/sv 非空,因而不会删除该目录
dpkg: 警告: 卸载 gitlab-ce 时,目录 /opt/gitlab/init 非空,因而不会删除该目录
dpkg: 警告: 卸载 gitlab-ce 时,目录 /opt/gitlab/etc 非空,因而不会删除该目录
dpkg: 警告: 卸载 gitlab-ce 时,目录 /opt/gitlab/embedded/ssl/certs 非空,因而不会删除该目录
dpkg: 警告: 卸载 gitlab-ce 时,目录 /opt/gitlab/embedded/service/gitlab-shell 非空,因而不会删除该目录
dpkg: 警告: 卸载 gitlab-ce 时,目录 /opt/gitlab/embedded/service/gitlab-rails/public 非空,因而不会删除该目录
dpkg: 警告: 卸载 gitlab-ce 时,目录 /opt/gitlab/embedded/service/gitlab-rails/config 非空,因而不会删除该目录
dpkg: 警告: 卸载 gitlab-ce 时,目录 /opt/gitlab/embedded/cookbooks 非空,因而不会删除该目录
dpkg: 警告: 卸载 gitlab-ce 时,目录 /opt/gitlab/embedded/bin 非空,因而不会删除该目录

手动删除/opt/gitlab,如果提示权限不足,记得su切换到root用户,这个目录保存着gitlab的主要数据

su

cd /opt

rm -fr gitlab

检查/var/opt/gitlab,这个目录保存着gitlab的配置,如果有就删掉

检查/etc/gitlab,这个目录保存gitlab服务信息

检查/var/log/gitlab,这个目录保存日志文件

上面这些目录,如果有就删掉,没有就无所谓