中文文档地址 https://docs.gitlab.cn/omnibus/installation/
1.配置要求 最优配置 4c8g
- 4 cores is the recommended minimum number of cores and supports up to 500 users
- 4 GB RAM is the required minimum memory size and supports up to 500 users
- Our Memory Team is working to reduce the memory requirement.
内存有点不够用备份时会有点卡
- Our Memory Team is working to reduce the memory requirement.
- 存储空间:至少 25 GB 的硬盘空间(实际需求根据项目大小和代码库大小来确定)目前系统盘80g,数据盘40g用来备份 挂载在bk_data下
2.安装步骤
2.1 直接ubuntu安装
2.1.1 安装必要的软件
在开始安装 GitLab 之前,我们需要安装必要的软件。这些软件包括curl、openssh-server、ca-certificates和postfix。您可以使用以下命令安装它们:
sudo apt-get install curl openssh-server ca-certificates postfix
2.2 添加 GitLab 存储库
您需要将 GitLab 存储库添加到系统。
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
2.1.2 安装GitLab
现在您可以安装 GitLab 了。使用以下命令安装 GitLab:
sudo apt-get install gitlab-ce
2.1.3.配置GitLab
安装 GitLab 后,我们需要配置一些详细信息。
3.1 配置域名和 SSL 认证
首先,您需要配置 GitLab 的域名和 SSL 认证。这将确保您的GitLab 服务器有一个安全的标识,并且您可以通过 HTTPS 访问它。您可以使用以下命令为您的GitLab服务器配置SSL证书:
sudo openssl req -newkey rsa:2048 -nodes -keyout /etc/gitlab/ssl/gitlab.example.com.key -out /etc/gitlab/ssl/gitlab.example.com.csr
sudo openssl x509 -req -days 365 -in /etc/gitlab/ssl/gitlab.example.com.csr -signkey /etc/gitlab/ssl/gitlab.example.com.key -out /etc/gitlab/ssl/gitlab.example.com.crt
注意将 “example.com” 替换为您的域名。
3.2 配置 GitLab 访问权限
GitLab 允许您创建不同的用户和用户组。默认情况下,除了管理员外,其他人都无法访问您的 GitLab 服务器。您可以使用以下命令为您的GitLab服务器添加新用户:
sudo gitlab-rails console
在这里,您可以在控制台上执行以下命令以创建新用户:
user = User.new(:name => ‘New User’, :username => ‘new_username’, :email => ‘new_user@example.com’, :password => ‘password’, :password_confirmation => ‘password’)
user.save
3.3 配置SMTP服务器
您需要配置一个SMTP服务器,使 GitLab 能够发送邮件。您可以使用以下命令将SMTP服务器添加到 GitLab:
sudo vim /etc/gitlab/gitlab.rb
在 “gitlab_rails[‘smtp_enable’]” 下添加以下语句:
gitlab_rails[‘smtp_address’] = “smtp.gmail.com”
gitlab_rails[‘smtp_port’] = 587
gitlab_rails[‘smtp_authentication’] = “plain”
gitlab_rails[‘smtp_enable_starttls_auto’] = true
gitlab_rails[‘smtp_user_name’] = “youremail@gmail.com”
gitlab_rails[‘smtp_password’] = “password”
更新设置:
sudo gitlab-ctl reconfigure
2.2 docker-compose安装启动
version: ‘3.6’
services:
web:
image: ‘gitlab/gitlab-ce:latest’
restart: always
hostname: ‘ip’
deploy:
resources:
limits:
cpus: ‘3.5’ # 限制使用的CPU份额
memory: 3.2G # 限制使用的内存
reservations:
cpus: ‘2’ # 保留最小CPU份额
memory: 2G # 保留最小内存
environment:
TZ: ‘Asia/Shanghai’
GITLAB_OMNIBUS_CONFIG: |
external_url ‘http://ip’ # web站点访问地址
# 默认是被注释掉的,官方建议该值是CPU核心数加一,可以提高服务器的响应速度;
# 如果内存只有4G,或者服务器上有其它业务,就不要改了,以免内存不足
# 这个参数最小值是2,设为1,服务器可能会卡死。
puma[‘worker_processes’] = 3
puma[‘per_worker_max_memory_mb’] = 1024 # 1GB
# 默认是25,可适当改小
sidekiq[‘concurrency’] = 25
# 默认为256MB,可适当改小
postgresql[‘shared_buffers’] = “256MB”
# Add any other gitlab.rb configuration here, each on its own line
ports:
- ‘80:80’ # 注意宿主机和容器内部的端口要一致,否则external_url无法访问
#- ‘443:443’
#- ‘2222:22’
volumes:
- ‘./config:/etc/gitlab’
- ‘./logs:/var/log/gitlab’
- ‘./data:/var/opt/gitlab’
- ‘./bk_data:/var/opt/gitlab/backups’
3.备份
3.1、修改备份文件目录
https://cloud.tencent.com/developer/article/1622317
备份时需要保持gitlab处于正常运行状态,直接执行gitlab-rake gitlab:backup:create进行备份使用以上命令会在/var/opt/gitlab/backups目录下创建一个名称类似为1530156812_2018_06_28_10.8.4_gitlab_backup.tar的压缩包, 这个压缩包就是Gitlab整个的完整部分, 其中开头的1530156812_2018_06_28_10.8.4是备份创建的日期
3.1、修改备份文件目录
可以通过/etc/gitlab/gitlab.rb配置文件来修改默认存放备份文件的目录
gitlab_rails[‘backup_path’] = “/var/opt/gitlab/backups”
修改完成之后使用gitlab-ctl reconfigure命令重载配置文件即可
3.2、设置备份过期时间
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
gitlab_rails[‘backup_keep_time’] = 604800 #以秒为单位
3.3、gitlab自动备份
在老服务器上将备份文件发送至新服务器的相应目录下
[root@gitlab ~]# crontab -e
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
[root@gitlab ~]# scp /var/opt/gitlab/backups/1530156812_2018_06_28_10.8.4_gitlab_backup.tar root@10.0.0.6:/var/opt/gitlab/backups/
目前直接挂载在数据盘
volumes:
- ‘./bk_data:/var/opt/gitlab/backups’
数据盘开机启动自动挂载
/etc/fstab
[root@gitlab ~]# scp /var/opt/gitlab/backups/1530156812_2018_06_28_10.8.4_gitlab_backup.tar root@10.0.0.6:/var/opt/gitlab/backups/
Crontab 时间修改
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
/etc/init.d/cron restart
3.4、gitlab恢复
[root@gitlab ~]# gitlab-ctl stop unicorn #停止相关数据连接服务
[root@gitlab ~]# gitlab-ctl stop sidekiq
[root@gitlab-new ~]# chmod 777 /var/opt/gitlab/backups/1530156812_2018_06_28_10.8.4_gitlab_backup.tar
#修改权限,如果是从本服务器恢复可以不修改
[root@gitlab ~]# gitlab-rake gitlab:backup:restore BACKUP=1530156812_2018_06_28_10.8.4#从1530156812_2018_06_28_10.8.4编号备份中恢复
4.优化
4.1、为swap添加空间
sudo mkdir /swap
cd /swap
sudo fallocate -l 16G swapfile
sudo chmod 600 /swap/swapfile
sudo mkswap /swap/swapfile
启用交换分区
sudo swapon /swap/swapfile
查看是否启用
sudo swapon --show
备份
sudo cp /etc/fstab /etc/fstab.bak
修改配置文件
echo ‘/swap/swapfile none swap sw 0 0’ | sudo tee -a /etc/fstab
4.2、配置优化
限制cpu内存使用
limits:
cpus: ‘3.5’ # 限制使用的CPU份额
memory: 3.2G # 限制使用的内存
reservations:
cpus: ‘2’ # 保留最小CPU份额
memory: 2G # 保留最小内存
puma[‘worker_processes’] = 3
puma[‘per_worker_max_memory_mb’] = 1024 # 1GB
5.数据盘挂载
在 Ubuntu 中,你可以使用命令行来分区和挂载磁盘。以下是一些基本的步骤:
- 首先,使用 lsblk 命令列出所有可用的磁盘和分区:
root@118:/# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda 252:0 0 80G 0 disk
└─vda1 252:1 0 80G 0 part /var/opt/gitlab/backups
/var/opt/gitlab
/var/log/gitlab
/etc/hosts
/etc/hostname
/etc/resolv.conf
/etc/gitlab
vdb 252:16 0 40G 0 disk
└─vdb1 252:17 0 40G 0 part - 使用 mount 命令挂载分区。将 /dev/vdb1 替换为你要挂载的分区,将 /root/ 替换为你在上一步中创建的挂载点:
sudo mount /dev/sdb1 /root/gitlab/bk_data - 如果你想要在系统重启后自动挂载分区,需要编辑 /etc/fstab 文件。首先,使用 blkid 命令获取分区的 UUID:
sudo blkid
找到你要挂载的分区的 UUID。然后,使用文本编辑器打开 /etc/fstab 文件,例如使用 nano:
sudo nano /etc/fstab
在文件末尾添加一行,将分区的 UUID、挂载点和文件系统类型添加到该行中。例如:
UUID=your_partition_uuid /mnt/my_partition ext4 defaults 0 0
将 your_partition_uuid 替换为你在上一步中获取的 UUID。保存文件并退出编辑器。
现在,分区将在系统启动时自动挂载到指定的挂载点。