Gitlab分为gitlab-ce和gitlab-ee,由于gitlab-ce是免费使用的,所以我们这里就使用gitlab-ce。
安装系统要求
官方信息:https://docs.gitlab.com/ee/install/requirements.html
硬件要求
CPU
CPU 要求根据用户数量和预期工作负载而变化。根据您的工作量,您的实际需求可能会更多。
建议的最小核心数为4 个核心,最多支持500 个用户。 8 核支持多达1000 个用户。 想要支持更多用户吗?查看我们的参考架构页面
内存
即使您当前有足够的可用RAM,我们也建议您的服务器上至少有2 GB 交换空间。交换有助于减少可用内存发生变化时出现错误的可能性。
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.01114.012.715.012.1016.0 (计划) 13.6
您还应该确保将以下扩展加载到每个GitLab 数据库中:
扩展的GitLab最低版本pg_trgm8.6btree_gist13.1plpgsql11.7
安装
官方文档:https://about.gitlab.com/install/#ubuntu
1.安装依赖
登录后复制
sudo apt-get 更新
sudo apt-get install -ycurl openssh-server ca-certificates tzdata perl
1.2.
2.安装 Postfix(或 Sendmail)以发送通知电子邮件
登录后复制
sudo apt-get install -y postfix
1.
在Postfix 安装期间,可能会出现配置屏幕。选择“Internet 站点”并按Enter 键。使用服务器的外部DNS 作为“电子邮件名称”,然后按Enter 键。如果出现另一个屏幕,请按住Enter 接受默认设置。
3.配置防火墙(或者执行:ufw disable 关闭防火墙 )
登录后复制
systemctl 启动ufw
允许sudo ufw https
允许sudo ufw http
使用sudo ufw 允许ssh
启用sudo ufw
须藤ufw 状态
1.2.3.4.5.6。
4.安装gitlab
登录后复制
##添加GitLab包存储库
卷曲-s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
##显示可安装版本
apt 列表|grep gitlab
##安装最新的gitlab-ce版本并启用HTTPS
#sudo EXTERNAL_URL=\’https://gitlab.example.com\’ apt-get install -y gitlab-ce
## 由于某些障碍,请勿启用HTTPS并安装指定版本的gitlab-ce。
sudo EXTERNAL_URL=\’http://gitlab.example.com\’ apt-get install -y gitlab-ce=15.8.3-ce.0
1.2.3.4.5.6.7.8.9.10.11。
GitLab的默认安装路径:/var/opt/gitlab 默认情况下,不启用HTTPS。如果external_url 设置使用HTTPS 协议并且没有配置其他证书,则默认为[Enable Let’s Encrypt](https://docs.gitlab.com/omnibus/settings/ssl/index.html)。
5.配置并启动GitLab
登录后复制
# 首次启动时加载配置并完成初始化还需要以下命令:
sudo gitlab-ctl 重新配置
#启动gitlab
sudo gitlab-ctl restart
sudo gitlab-ctl 状态
##配置GitLab开机自动启动
systemctl 启用gitlab-runsvdir.service
1.2.3.4.5.6.7.8.9。
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/bottom ) gitlab 更改Redis、gunicorn 配置等。
所有设置都在/etc/gitlab/gitlab.rb 中更改。更改设置后,运行gitlab-ctl reconfigure 即可生效。
基本配置
1. 编辑/etc/gitlab/gitlab.rb
登录后复制
# 修改为你自己的URL地址
external_url \’http://gitlab.example.com\’
### GitLab 的GitLab shell 配置
gitlab_rails[\’gitlab_shell_ssh_port\’]=22
gitlab_rails[\’gitlab_shell_git_timeout\’]=800
#停止不必要的组件以节省系统资源
logrotate[\’启用\’]=false
普罗米修斯[\’启用\’]=false
grafana[\’启用\’]=false
警报管理器[\’启用\’]=false
node_exporter[\’启用\’]=false
1.2.3.4.5.6.7.8.9.10.11.12.13。
2. 重新配置 GitLab:
登录后复制
sudo gitlab-ctl 重新配置
1.
修改默认存储位置
默认情况下,GitLab 将Git 存储库数据存储在/var/opt/gitlab/git-data 中。存储库存储在名为repositories 的目录中。
1. 创建gitlab 数据目录并授权
登录后复制
mkdir -p /data/gitlab/git-data
chown -R git:git /数据/gitlab
chmod -R +x /数据
1.2.3.
2. 编辑/etc/gitlab/gitlab.rb:
登录后复制
## 更改父目录git-data 的位置:
git_data_dirs({ \’默认\’={ \’路径\’=\’/data/gitlab/git-data\’ } })
##您还可以添加多个Git数据目录。目标目录及其子路径不能是符号链接。
git_data_dirs({
\’默认\’={ \’路径\’=\’/data/gitlab/git-data\’ },
\’替代\’={ \’路径\’=\’/data/nas/git-data\’ }
})
##可选地将存储库同步到新位置。请注意,没有尾随斜杠存储库,但有尾随斜杠git-data。
#sudo rsync -av –delete /data/gitlab/git-data/repositories /data/nas/git-data/
1.2.3.4.5.6.7.8.9.10.11。
3. 重新配置 GitLab:
登录后复制
##停止当前的gitlab并重新加载配置
须藤gitlab-ctl stop
sudo gitlab-ctl 重新配置
##重新加载后,您将在/data/gitlab/git-data 目录下找到其他存储库目录。
##最后启动gitlab
sudo gitlab-ctl restart
1.2.3.4.5.6.7。
修改备份文件默认目录
官方文档:https://docs.gitlab.com/omnibus/settings/backups.html
1. 创建gitlab 数据目录并授权
登录后复制
mkdir -p /数据/备份/gitlab
#给目录赋予权限。否则重新加载配置会报权限错误。
chmod -R 0644 /数据/备份/gitlab
chmod -R +x /数据/
1.2.3.4.5。
2. 修改/etc/gitlab/gitlab.rb来修改默认存放备份文件的目录:
登录后复制
gitlab_rails[\’manage_backup_path\’]=true
gitlab_rails[\’backup_path\’]=\’/data/backup/gitlab\’
gitlab_rails[\’backup_archive_permissions\’]=0644
##将备份生命周期限制为7 天- 604800 秒
gitlab_rails[\’backup_keep_time\’]=604800
1.2.3.4.5.6。
3. 重新加载配置,并重启服务
登录后复制
sudo gitlab-ctl 重新配置
sudo gitlab-ctl restart
1.2.
配置外部数据库
1. 数据库环境配置
我使用的云数据库忽略了部署步骤
登录后复制
##为GitLab创建数据库用户
sudo -u postgres psql -d template1 -c \’创建用户git CREATEDB;\’
##修改用户密码
sudo -u postgres psql -d template1 -c \’更改用户git,密码\’12345.com\’;\’
###创建pg_trgm 扩展
sudo -u postgres psql -d template1 -c \’如果pg_trgm 不存在则创建扩展;\’
##创建btree_gist扩展(GitLab 13.1或更高版本需要):
sudo -u postgres psql -d template1 -c \’如果扩展名不存在则创建btree_gist;\’
##创建plpgsql扩展
sudo -u postgres psql -d template1 -c \’如果扩展不存在则创建plpgsql;\’
##创建GitLab生产数据库并授予数据库所有权限。
sudo -u postgres psql -d template1 -c \’创建数据库gitlabhq_生产所有者git;\’
1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17。
验证测试
登录后复制
##尝试使用新用户连接到新数据库。
sudo -u git -H psql -d gitlabhq_生产
##检查pg_trgm扩展是否启用。
SELECT true AS 已启用
来自pg_available_extensions
名称=\’pg_trgm\’
并且installed_version不为NULL。
## 如果启用了扩展,它将产生以下输出:
有效的
———-
t
(1 行)
##检查btree_gist扩展是否启用。
SELECT true AS 已启用
来自pg_available_extensions
WHERE 名称=\’btree_gist\’
并且installed_version不为NULL。
## 如果启用了扩展,它将产生以下输出:
有效的
———-
t
(1 行)
##检查plpgsql扩展是否启用。
SELECT true AS 已启用
来自pg_available_extensions
WHERE 名称=\’plpgsql\’
并且installed_version不为NULL。
## 如果启用了扩展,它将产生以下输出:
有效的
———-
t
(1 行)
终止数据库会话:
gitlabhq_生产\\q
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.38.39.40.41.42.
2. 编辑/etc/gitlab/gitlab.rb:
登录后复制
# 禁用内置Postgres
postgresql[\’启用\’]=false
输入#database.yml 的连接详细信息。
gitlab_rails[\’db_adapter\’]=\’postgresql\’
gitlab_rails[\’db_encoding\’]=\’utf8\’
gitlab_rails[\’db_host\’]=\’127.0.0.1\’
gitlab_rails[\’db_port\’]=5432
gitlab_rails[\’db_username\’]=\’git\’ #上面创建的数据库用户
gitlab_rails[\’db_password\’]=\’12345.com\’ #上面创建的数据库用户的密码
1.2.3.4.5.6.7.8.9.10。
消息:
/etc/gitlab/gitlab.rb 包含明文密码,因此需要文件权限0600。
PostgreSQL 允许监听多个地址
如果您在gitlab_rails[\’db_host\’] 中使用以逗号分隔的多个地址,则将使用列表中的第一个地址进行连接。
3. 重新配置 GitLab以使更改生效
登录后复制
sudo gitlab-ctl 重新配置
sudo gitlab-ctl restart
1.2.
重置密码
官方文档:https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password。
Rake 任务可以接受用户名作为参数。例如,要重置root 用户的密码:
登录后复制
sudo gitlab-rake \’gitlab:password:reset [root]\’
1.
邮箱设置
官方文档:https://docs.gitlab.com/omnibus/settings/smtp.html
登录后复制
gitlab_rails[\’smtp_enable\’]=true
gitlab_rails[\’smtp_address\’]=\’smtp.163.com\’
gitlab_rails[\’smtp_port\’]=465
gitlab_rails[\’smtp_user_name\’]=\’xxx@163.com\’
gitlab_rails[\’smtp_password\’]=\’xxxxx
务器上分配负载。
要明确设置续订时间:
编辑/etc/gitlab/gitlab.rb:
登录后复制
# Renew every 7th day of the month at 12:30
letsencrypt[\’auto_renew_hour\’] = \”12\”
letsencrypt[\’auto_renew_minute\’] = \”30\”
letsencrypt[\’auto_renew_day_of_month\’] = \”*/7\”
1.2.3.4.
重新配置 GitLab:
登录后复制
sudo gitlab-ctl reconfigure
1.
仅当证书在 30 天后到期时才会更新证书。例如,如果您将其设置为每月 1 日 00:00 续订,证书在 31 日到期,则证书将在续订前过期。
禁用自动续订:
编辑/etc/gitlab/gitlab.rb:
登录后复制
letsencrypt[\’auto_renew\’] = false
1.
重新配置 GitLab:
登录后复制
sudo gitlab-ctl reconfigure
1.
手动更新证书
使用以下任一命令手动更新 Let’s Encrypt 证书:
登录后复制
sudo gitlab-ctl reconfigure
sudo gitlab-ctl renew-le-certs
1.2.
前面的命令仅在证书即将到期时生成更新。
运维操作
登录后复制
##启动所有 gitlab 组件:
sudo gitlab-ctl start
##停止所有 gitlab 组件:
sudo gitlab-ctl stop
##重启所有 gitlab 组件:
sudo gitlab-ctl restart
##查看服务状态
sudo gitlab-ctl status
##启动服务
sudo gitlab-ctl reconfigure
##修改默认的配置文件
sudo vim /etc/gitlab/gitlab.rb
##查看版本
sudo cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
##系统内核调优
echo \”vm.overcommit_memory=1\” >> /etc/sysctl.conf
sysctl -p
echo never > /sys/kernel/mm/transparent_hugepage/enabled
##检查gitlab
gitlab-rake gitlab:check SANITIZE=true –trace
##查看日志
sudo gitlab-ctl tail
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.
GitLab汉化
备份恢复
官方文档: https://docs.gitlab.com/15.8/ee/raketasks/backup_gitlab.html
备份
GitLab 12.2 或更高版本:
登录后复制
sudo gitlab-backup create
1.
GitLab 12.1 及更早版本:
登录后复制
gitlab-rake gitlab:backup:create
1.
如果您从源代码安装 GitLab,请使用以下命令:
登录后复制
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
1.
确认存档可以传输
为确保生成的存档可由 rsync 传输,您可以设置该GZIP_RSYNCABLE=yes 选项。这会将–rsyncable选项设置为,这仅在与设置备份文件名选项gzip结合使用时才有用。
登录后复制
sudo gitlab-backup create BACKUP=dump GZIP_RSYNCABLE=yes
1.2.
GitLab 12.1 及更早版本的用户应改用该命令gitlab-rake gitlab:backup:create。
跳过 tar 创建
使用对象存储进行备份时,无法跳过 tar 创建。
添加tar到SKIP变量中会将包含备份的文件和目录保留在用于中间文件的目录中。创建新备份时会覆盖这些文件,因此您应确保将它们复制到别处,因为系统上只能有一个备份。
登录后复制
sudo gitlab-backup create SKIP=tar
1.
备份策略选项
默认备份策略基本上是使用 Linux 命令将数据从各个数据位置流式传输到备份tar。gzip这在大多数情况下工作正常,但当数据快速变化时可能会导致问题。
当tar读取数据时数据发生变化,file changed as we read it可能会发生错误,并导致备份过程失败。为了解决这个问题,8.17 引入了一种名为copy. tar该策略在调用and之前将数据文件复制到临时位置gzip,从而避免了错误。
登录后复制
sudo gitlab-backup create STRATEGY=copy
1.
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
要创建增量备份,请运行:
登录后复制
sudo gitlab-backup create INCREMENTAL=yes PREVIOUS_BACKUP=<timestamp_of_backup>
1.
要从已压缩的备份创建未压缩的增量备份,请使用SKIP=tar:
登录后复制
sudo gitlab-backup create INCREMENTAL=yes SKIP=tar
1.
上传到本地挂载的共享
您可以使用 Fog Local 存储提供程序将备份发送到本地装载的共享(例如 NFS、CIFS 或 SMB)。
为此,您必须设置以下配置键:
backup_upload_connection.local_root: 备份复制到的安装目录。
backup_upload_remote_directory: backup_upload_connection.local_root 目录的子目录。如果它不存在,则会创建它。如果要将压缩包复制到挂载目录的根目录,请使用 …
配置上传到本地安装的共享
登录后复制
##编辑/etc/gitlab/gitlab.rb:
gitlab_rails[\’backup_upload_connection\’] = {
:provider => \’Local\’,
:local_root => \’/mnt/backups\’
}
# The directory inside the mounted folder to copy backups to
# Use \’.\’ to store them in the root directory
gitlab_rails[\’backup_upload_remote_directory\’] = \’gitlab_backups\’
1.2.3.4.5.6.7.8.9.10.
对于源安装:
登录后复制
##编辑home/git/gitlab/config/gitlab.yml:
backup:
upload:
# Fog storage connection settings, see https://fog.io/storage/ .
connection:
provider: Local
local_root: \’/mnt/backups\’
# The directory inside the mounted folder to copy backups to
# Use \’.\’ to store them in the root directory
remote_directory: \’gitlab_backups\’
1.2.3.4.5.6.7.8.9.10.11.
重新启动 GitLab 以使更改生效。
备份定时任务
1. 为用户编辑 crontab root:
登录后复制
sudo su –
crontab -e
1.2.
2. 在那里,添加以下行以安排每天凌晨 2 点进行备份:
登录后复制
0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1
1.
GitLab 12.1 及更早版本的用户应改用该命令gitlab-rake gitlab:backup:create。
卸载
要卸载 Linux 软件包,您可以选择保留数据(存储库、数据库、配置)或全部删除:
1. 可选的,在删除 GitLab 包之前删除 由 Omnibus GitLab 创建的所有用户和组apt(使用或yum):
登录后复制
sudo gitlab-ctl stop && sudo gitlab-ctl remove-accounts
1.
如果您在删除帐户或组时遇到问题,请运行userdel或groupdel手动删除它们,您可能还想从 /home/ 中手动删除剩余的用户主目录。
2. 选择是保留数据还是全部删除数据:
要保留您的数据(存储库、数据库、配置),请停止 GitLab 并删除其监督进程:
登录后复制
sudo systemctl stop gitlab-runsvdir
sudo systemctl disable gitlab-runsvdir
sudo rm /usr/lib/systemd/system/gitlab-runsvdir.service
sudo systemctl daemon-reload
sudo gitlab-ctl uninstall
1.2.3.4.5.
要删除所有数据:
登录后复制
sudo gitlab-ctl cleanse && sudo rm -r /opt/gitlab
1.
3. 卸载软件包:
登录后复制
# Debian/Ubuntu
sudo apt remove gitlab-ce
# RedHat/CentOS
sudo yum remove gitlab-ce
1.2.3.4.5.
升级
官方文档: https://docs.gitlab.com/14.0/ee/update/
迁移
把备份文件拷贝到gitlab的备份目录下,根据上面gitlab恢复步骤即可。
#以上关于Ubuntu安装Gitlab与备份恢复的相关内容来源网络仅供参考,相关信息请以官方公告为准!
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93262.html