Linux 搭建 GitLab 详细指南
准备工作
在开始搭建 GitLab 之前,需要确保你有一台运行 Linux 的服务器,推荐使用 Ubuntu 20.04 或 CentOS 7/8。此外,你需要具备 root 权限,并且服务器已经配置好 SSH 免密登录。还需要一个域名,用于访问 GitLab。最后,确保服务器已经安装了以下软件包:git、curl、openssl。
使用以下命令更新系统包列表:
sudo apt update # Ubuntu
sudo yum update # CentOS
安装必要的软件包:
sudo apt install -y curl openssh-server ca-certificates postfix # Ubuntu
sudo yum install -y git curl openssh-server postfix # CentOS
安装 GitLab
GitLab 提供了便捷的安装脚本,可以使用它来快速安装 GitLab。首先,添加 GitLab 的官方 GPG 密钥:
curl -s https://packages.gitlab.com/gitlab/gitlab-ce/gpg.key | sudo apt-key add - # Ubuntu
curl -s https://packages.gitlab.com/gitlab/gitlab-ce/gpg.key | sudo rpm --import - # CentOS
添加 GitLab 的存储库:
sudo add-apt-repository 'deb https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu $(lsb_release -cs)' # Ubuntu
sudo add-apt-repository 'deb https://packages.gitlab.com/gitlab/gitlab-ce/el7/' # CentOS
更新系统包列表并安装 GitLab:
sudo apt update # Ubuntu
sudo yum update # CentOS
sudo apt install -y gitlab-ce # Ubuntu
sudo yum install -y gitlab-ce # CentOS
安装完成后,GitLab 会自动启动并默认监听 80 端口。你可以通过浏览器访问服务器的 IP 地址或域名来查看 GitLab 是否安装成功。
配置 GitLab
首次访问 GitLab 时,会提示你设置管理员密码。设置完成后,进入 GitLab 管理后台,进行一些必要的配置。
修改 GitLab 的主机名:
sudo gitlab-rake gitlab:config:set host '[your_domain]' # Ubuntu
sudo gitlab-rake gitlab:config:set host '[your_domain]' # CentOS
修改 GitLab 的 SSL 证书(可选):
sudo gitlab-rake gitlab:config:set force_ssl 'true'
sudo gitlab-rake gitlab:ssl:certs:auto_renew
配置邮件服务器,用于接收通知邮件:
sudo gitlab-rake gitlab:config:set mailer_email_from 'gitlab@your_domain'
sudo gitlab-rake gitlab:config:set smtp_enable 'true'
sudo gitlab-rake gitlab:config:set smtp_address 'smtp.your_domain'
sudo gitlab-rake gitlab:config:set smtp_port '587'
sudo gitlab-rake gitlab:config:set smtp_user_name 'gitlab'

sudo gitlab-rake gitlab:config:set smtp_password '[your_smtp_password]
sudo gitlab-rake gitlab:config:set smtp_domain 'your_domain'
重启 GitLab 服务以应用配置:
sudo gitlab-ctl restart # Ubuntu
sudo systemctl restart gitlab # CentOS
配置 Nginx 反向代理
为了将外部请求转发到 GitLab,需要配置 Nginx 反向代理。首先,创建一个新的 Nginx 配置文件:
sudo nano /etc/nginx/conf.d/gitlab.conf # Ubuntu
sudo nano /etc/nginx/conf.d/gitlab.conf # CentOS
在文件中添加以下内容:
server {
listen 80;
server_name your_domain;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
保存并退出编辑器,然后测试 Nginx 配置文件:
sudo nginx -t # Ubuntu
sudo nginx -t # CentOS
如果配置文件没有问题,重启 Nginx 服务:
sudo systemctl restart nginx # Ubuntu
sudo systemctl restart nginx # CentOS
现在,你可以通过域名访问 GitLab 了。
常见问题解答
Q1: 如何在 GitLab 中创建一个新的项目?
A1: 登录 GitLab 后,点击右上角的用户头像,选择 “Create project”。在创建页面中,填写项目名称、描述等信息,选择项目可见性,然后点击 “Create project”。
Q2: 如何配置 GitLab 的 CI/CD?
A2: 在项目中,点击 “CI/CD” 选项卡,然后点击 “Add pipeline”。在配置文件中,编写你的 CI/CD 脚本,例如使用 GitLab Runner。安装 GitLab Runner:
curl -s https://gitlab.com/gitlab-org/gitlab-runner/install.sh | sudo bash
然后,在项目中创建一个 `.gitlab-ci.yml` 文件,编写你的 CI/CD 流程。
Q3: 如何备份和恢复 GitLab?
A3: GitLab 提供了备份和恢复功能。备份 GitLab 数据:
sudo gitlab-rake gitlab:backup:create
备份文件会存放在 `/var/opt/gitlab/backups` 目录下。恢复 GitLab 数据:
sudo gitlab-rake gitlab:backup:restore BACKUP_NAME=backup_name.tar
请将 `backup_name.tar` 替换为实际的备份文件名。