GitLab在Debian下的使用教程
首先更新系统软件包并安装必要依赖,确保系统环境符合安装要求:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl openssh-server ca-certificates postfix tzdata
其中,postfix用于GitLab的邮件通知(安装时可选择“Internet Site”配置,输入服务器域名即可)。
通过官方脚本添加GitLab社区版(CE)的APT仓库,确保后续能获取最新版本:
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
该脚本会自动配置GitLab的软件源和GPG密钥。
使用APT命令安装GitLab社区版:
sudo apt install gitlab-ce
安装过程中,系统会提示确认依赖项和配置文件,按提示操作即可。
编辑GitLab主配置文件/etc/gitlab/gitlab.rb,设置服务器外部访问地址(替换为你的服务器IP或域名):
sudo nano /etc/gitlab/gitlab.rb
# 找到并修改以下行(取消注释并替换)
external_url 'http://your_server_ip_or_domain'
保存后,执行以下命令应用配置并启动GitLab服务:
sudo gitlab-ctl reconfigure # 应用配置
sudo gitlab-ctl start # 启动服务
sudo systemctl enable gitlab # 设置开机自启
若需通过域名访问,需确保域名已解析到服务器IP,并配置SSL证书(可通过Let’s Encrypt免费获取)。
在浏览器中输入http://your_server_ip_or_domain,首次访问需设置管理员账号(默认用户名root)的密码。密码会保存在/etc/gitlab/initial_root_password文件中(有效期24小时)。
为支持通知功能(如密码重置、合并请求提醒),需配置SMTP邮件服务。编辑/etc/gitlab/gitlab.rb,添加以下配置(以Gmail为例):
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'your_email@gmail.com'
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'] = true
保存后重新配置GitLab:
sudo gitlab-ctl reconfigure
测试邮件发送:进入GitLab控制台(sudo gitlab-rails console),执行Notify.test_email('recipient@example.com', 'Test Subject', 'Test Body').deliver_now。
若启用了UFW防火墙,需允许GitLab使用的端口(HTTP 80、HTTPS 443、SSH 22):
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
sudo ufw enable
若使用外部Nginx反向代理,需额外开放代理端口(如8080)。
登录GitLab后,点击左侧导航栏“Projects”→右上角“New project”,选择“Create blank project”(空白项目)或“Create from template”(模板项目),填写项目名称(如my-project)、描述,选择可见性(Private/Private/Internal/Public),点击“Create project”即可。
为避免每次推送代码都输入密码,需配置SSH密钥:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
默认保存路径为~/.ssh/id_rsa.pub。cat ~/.ssh/id_rsa.pub),登录GitLab→点击右上角头像→“Settings”→“SSH Keys”,粘贴公钥并保存。git clone git@your_server_ip_or_domain:username/my-project.git
cd my-project
touch README.md
git add .
git commit -m "Initial commit"
git push origin main # 若初始分支为master,替换为master
GitLab Runner用于执行CI/CD任务,需单独安装:
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh | sudo bash
sudo apt install gitlab-ci-multi-runner
注册Runner(替换为你的GitLab服务器URL和项目注册令牌):
sudo gitlab-runner register
按提示输入信息,选择“shell”作为执行器(适合简单任务)。
在项目根目录创建.gitlab-ci.yml文件,定义流水线流程(示例):
stages:
- build
- test
- deploy
build_job:
stage: build
script:
- echo "Building the project..."
- mkdir -p build
- echo "Build successful" > build/result.txt
artifacts:
paths:
- build/
test_job:
stage: test
script:
- echo "Running tests..."
- test -f build/result.txt && echo "Tests passed" || echo "Tests failed"
deploy_job:
stage: deploy
script:
- echo "Deploying to production..."
- scp -r build/* user@production-server:/var/www/html/
only:
- main # 仅在main分支推送时触发
提交代码到仓库,GitLab会自动触发流水线。进入项目→“CI/CD”→“Pipelines”,可查看流水线状态和日志。
GitLab通过角色控制项目成员权限,常见角色包括:
设置方法:进入项目→“Settings”→“Members”,添加成员并分配角色。
使用GitLab自带的gitlab-backup命令备份数据(默认备份路径为/var/opt/gitlab/backups):
sudo gitlab-backup create
可添加--full参数进行完整备份(包含数据库和仓库数据)。
停止GitLab服务,恢复备份文件(替换为备份文件名),然后重启服务:
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
sudo gitlab-backup restore BACKUP=timestamp_of_backup # 如BACKUP=2025_11_01_123456
sudo gitlab-ctl start
恢复前需确保GitLab版本与备份版本一致。