如何在Linux上自定义GitLab
在Linux环境下自定义GitLab需围绕配置文件修改、功能扩展、界面调整及部署优化四大方向展开,以下是具体步骤及注意事项:
在自定义前需完成GitLab的安装与环境配置,确保系统满足基础要求:
sudo apt update && sudo apt install -y curl openssh-server ca-certificates tzdata perlsudo yum install -y curl policycoreutils-python-utils openssh-server perlcurl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bashcurl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bashsudo apt install -y gitlab-cesudo yum install -y gitlab-ce/etc/gitlab/gitlab.rb是GitLab的主配置文件,几乎所有自定义操作都需通过修改此文件实现,修改后需运行sudo gitlab-ctl reconfigure使配置生效。
external_url为服务器IP或域名(如http://192.168.1.100或https://gitlab.example.com),这是GitLab对外访问的核心入口:external_url 'http://192.168.1.100'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "your_email@gmail.com"
gitlab_rails['smtp_password'] = "your_app_password" # 使用Gmail应用专用密码
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
sudo apt install -y certbot python3-certbot-nginx(Ubuntu)sudo certbot certonly --standalone -d gitlab.example.comnginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/letsencrypt/live/gitlab.example.com/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab.example.com/privkey.pem"
external_url及Nginx监听端口:external_url 'http://192.168.1.100:8080'
nginx['listen_port'] = 8080
gitlab_rails['gitlab_shell_ssh_port'] = 2222 # 修改SSH端口
gitlab_rails['data_dir'] = "/mnt/gitlab_data" # 修改数据存储路径
/var/opt/gitlab/gitlab-rails/public/assets/目录下,并通过Nginx配置引用。docker-compose.yml文件:version: '3.6'
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
restart: always
ports:
- '8080:80'
- '8443:443'
- '2222:22'
volumes:
- './config:/etc/gitlab'
- './logs:/var/log/gitlab'
- './data:/var/opt/gitlab'
shm_size: '256m'
启动容器:docker-compose up -d,获取初始root密码:docker exec -it gitlab cat /etc/gitlab/initial_root_password。sudo systemctl enable gitlab-runsvdir.service # 启用开机自启动
sudo systemctl start gitlab-runsvdir.service # 启动服务
sudo systemctl status gitlab-runsvdir.service # 查看服务状态
sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
sudo ufw enable
sudo fallocate -l 2G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile,并将配置写入/etc/fstab。gitlab.rb中修改unicorn['worker_processes'](默认2,可根据CPU核心数调整)及sidekiq['concurrency'](默认10,可根据内存调整)。/etc/gitlab(配置文件)、/var/opt/gitlab(数据)及/var/log/gitlab(日志),可使用gitlab-backup create命令。sudo,避免权限问题导致服务无法启动。gitlab.rb后,建议先运行sudo gitlab-ctl reconfigure检查配置语法,再重启服务。