gitlab分为gitlab-ce和gitlab-ee,gitlab-ce可以免费使用,因此此处用的是gitlab-ce。
安装系统要求
官方资料: https://docs.gitlab.com/ee/install/requirements.html
硬件要求
CPU
CPU 要求取决于用户数量和预期工作负载。您的确切需求可能更多,具体取决于您的工作量。
- 4 核是建议的最低核数,最多支持 500 个用户
- 8 核最多支持 1000 个用户
- 更多用户?查阅 参考架构页面
内存
建议您的服务器上至少有 2 GB 的交换空间,即使您当前有足够的可用 RAM。如果您的可用内存发生变化,交换有助于减少发生错误的可能性。
- 4 GB RAM是所需的最小内存大小,最多支持 500 个用户
- 8 GB RAM 支持多达 1000 个用户
软件要求
Redis 版本
GitLab 13.0 及更高版本需要 Redis 5.0 或更高版本。
建议使用 Redis 6.0 或更高版本,因为这是从 GitLab 13.9 开始随附的 Omnibus GitLab软件包。
数据库
GitLab 版本 | PostgreSQL 最低版本 |
---|---|
13.0 | 11 |
14.0 | 12.7 |
15.0 | 12.10 |
16.0(计划中) | 13.6 |
您还必须确保将以下扩展加载到每个 GitLab 数据库中。
扩展 | GitLab 最低版本 |
---|---|
pg_trgm | 8.6 |
btree_gist | 13.1 |
plpgsql | 11.7 |
安装
官方文档: https://about.gitlab.com/install/#ubuntu
1.安装依赖
2.安装 Postfix(或 Sendmail)以发送通知电子邮件
在 Postfix 安装期间,可能会出现一个配置屏幕。选择“Internet 站点”并按回车键。使用服务器的外部 DNS 作为“邮件名称”,然后按回车键。如果出现其他屏幕,请继续按 enter 键接受默认设置。
3.配置防火墙(或者执行:ufw disable 关闭防火墙 )
4.安装gitlab
- GitLab 默认安装路径: /var/opt/gitlab
- 默认情况下,不启用 HTTPS。如果external_url 配置使用 HTTPS 协议且未配置其他证书,则默认 [启用Let’s Encrypt]( https://docs.gitlab.com/omnibus/settings/ssl/index.html)
5.配置并启动GitLab
6.访问GitLab Web界面
打开Web浏览器,访问 https://gitlab.example.com
默认使用root 用户名登录,除非您在安装过程中提供了自定义密码,否则将在 /etc/gitlab/initial_root_password 中随机生成一个密码存储 24 小时 .
GitLab配置更改
官方文档: https://docs.gitlab.com/omnibus/settings/configuration.html
当gitlab安装完成后,根据自己的环境,要修改配置。如:
- gitlab修改nginx端口,绑定IP等
- gitlab修改ssh端口
- gitlab修改访问url等
- gitlab修改数据库类型(这个没必要,因为这里的数据库只存储些用户名,gitlab代码放在/var/opt/gitlab/git-data/下)
- gitlab修改redis,gunicorn配置等等
所有的配置在/etc/gitlab/gitlab.rb中修改,修改完配置后执行gitlab-ctl reconfigure生效
基本配置
1. 编辑/etc/gitlab/gitlab.rb
2. 重新配置 GitLab:
修改默认存储位置
默认情况下,GitLab 将 Git 存储库数据存储在 /var/opt/gitlab/git-data. 存储库存储在名为 repositories.
1. 创建gitlab 数据目录并授权
2. 编辑/etc/gitlab/gitlab.rb:
3. 重新配置 GitLab:
修改备份文件默认目录
官方文档: https://docs.gitlab.com/omnibus/settings/backups.html
1. 创建gitlab 数据目录并授权
2. 修改/etc/gitlab/gitlab.rb来修改默认存放备份文件的目录:
3. 重新加载配置,并重启服务
配置外部数据库
1. 数据库环境配置
我使用的云数据库,部署步骤忽略
- 验证测试
2. 编辑/etc/gitlab/gitlab.rb:
注意:
- /etc/gitlab/gitlab.rb应该具有文件权限,0600因为它包含纯文本密码。
PostgreSQL 允许监听多个地址
如果您在 , 中使用多个地址gitlab_rails[‘db_host’],以逗号分隔,列表中的第一个地址将用于连接。
3. 重新配置 GitLab以使更改生效
重置密码
官方文档: https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
Rake 任务可以将用户名作为参数。例如,要为root用户重置密码 :
邮箱设置
官方文档: https://docs.gitlab.com/omnibus/settings/smtp.html
SSL 配置
官方文档: https://docs.gitlab.com/omnibus/settings/ssl/
启用 Let’s Encrypt
- 编辑/etc/gitlab/gitlab.rb和添加或更改以下条目:
- 证书每 90 天过期一次。您指定的电子邮件地址会contact_emails在到期日期临近时收到警报。
- GitLab 实例是证书上的主域名。Container Registry 等附加服务作为备用域名添加到同一证书中。在上面的示例中,主域是gitlab.example.com,Container Registry 域是registry.example.com. 您无需设置通配符证书。
- 重新配置 GitLab:
自动更新证书
默认安装计划在每个月的第 4 天午夜后更新。分钟由 external_url 中的值确定,以帮助在上游 Let’s Encrypt 服务器上分配负载。
要明确设置续订时间:
- 编辑/etc/gitlab/gitlab.rb:
- 重新配置 GitLab:
仅当证书在 30 天后到期时才会更新证书。例如,如果您将其设置为每月 1 日 00:00 续订,证书在 31 日到期,则证书将在续订前过期。
禁用自动续订:
- 编辑/etc/gitlab/gitlab.rb:
- 重新配置 GitLab:
手动更新证书
使用以下任一命令手动更新 Let’s Encrypt 证书:
前面的命令仅在证书即将到期时生成更新。
运维操作
GitLab汉化
备份恢复
官方文档: https://docs.gitlab.com/15.8/ee/raketasks/backup_gitlab.html
备份
- GitLab 12.2 或更高版本:
- GitLab 12.1 及更早版本:
- 如果您从源代码安装 GitLab,请使用以下命令:
确认存档可以传输
为确保生成的存档可由 rsync 传输,您可以设置该GZIP_RSYNCABLE=yes 选项。这会将–rsyncable选项设置为,这仅在与设置备份文件名选项gzip结合使用时才有用。
GitLab 12.1 及更早版本的用户应改用该命令gitlab-rake gitlab:backup:create。
跳过 tar 创建
使用对象存储进行备份时,无法跳过 tar 创建。
添加tar到SKIP变量中会将包含备份的文件和目录保留在用于中间文件的目录中。创建新备份时会覆盖这些文件,因此您应确保将它们复制到别处,因为系统上只能有一个备份。
备份策略选项
默认备份策略基本上是使用 Linux 命令将数据从各个数据位置流式传输到备份tar。gzip这在大多数情况下工作正常,但当数据快速变化时可能会导致问题。
当tar读取数据时数据发生变化,file changed as we read it可能会发生错误,并导致备份过程失败。为了解决这个问题,8.17 引入了一种名为copy. tar该策略在调用and之前将数据文件复制到临时位置gzip,从而避免了错误。
GitLab 12.1 及更早版本的用户应改用该命令gitlab-rake gitlab:backup:create。
增量备份
增量存储库备份可能比完整存储库备份更快,因为它们仅将自上次备份以来的更改打包到每个存储库的备份包中。增量备份存档没有相互链接:每个存档都是实例的独立备份。必须有一个现有备份才能从以下位置创建增量备份:
在 GitLab 14.9 和 14.10 中,使用BACKUP=<timestamp_of_backup>选项选择要使用的备份。所选的先前备份将被覆盖。
在 GitLab 15.0 及更高版本中,使用PREVIOUS_BACKUP=<timestamp_of_backup>选项选择要使用的备份。默认情况下,会按照备份时间戳部分中的说明创建备份文件。您可以通过设置环境变量[TIMESTAMP]来覆盖文件名部分 。 BACKUP
要创建增量备份,请运行:
要从已压缩的备份创建未压缩的增量备份,请使用SKIP=tar:
上传到本地挂载的共享
您可以使用 Fog Local 存储提供程序将备份发送到本地装载的共享(例如 NFS、CIFS 或 SMB)。
为此,您必须设置以下配置键:
-
backup_upload_connection.local_root: 备份复制到的安装目录。
-
backup_upload_remote_directory: backup_upload_connection.local_root 目录的子目录。如果它不存在,则会创建它。如果要将压缩包复制到挂载目录的根目录,请使用 …
-
配置上传到本地安装的共享
- 对于源安装:
重新启动 GitLab 以使更改生效。
备份定时任务
1. 为用户编辑 crontab root:
2. 在那里,添加以下行以安排每天凌晨 2 点进行备份:
GitLab 12.1 及更早版本的用户应改用该命令gitlab-rake gitlab:backup:create。
卸载
要卸载 Linux 软件包,您可以选择保留数据(存储库、数据库、配置)或全部删除:
1. 可选的,在删除 GitLab 包之前删除 由 Omnibus GitLab 创建的所有用户和组apt(使用或yum):
如果您在删除帐户或组时遇到问题,请运行userdel或groupdel手动删除它们,您可能还想从 /home/ 中手动删除剩余的用户主目录。
2. 选择是保留数据还是全部删除数据:
- 要保留您的数据(存储库、数据库、配置),请停止 GitLab 并删除其监督进程:
- 要删除所有数据:
3. 卸载软件包:
升级
官方文档: https://docs.gitlab.com/14.0/ee/update/
迁移
把备份文件拷贝到gitlab的备份目录下,根据上面gitlab恢复步骤即可。