Gerrit作为一款开源的代码审查工具,在团队协作开发中扮演着重要角色,其基于Git版本控制系统设计,支持权限管理、代码评审、自动化集成等功能,尤其适合中大型项目团队,以下将详细介绍在CentOS系统上部署Gerrit的完整流程,涵盖环境准备、服务配置、安全优化等关键环节。

环境准备与依赖安装

Gerrit运行需要Java环境支持,推荐使用OpenJDK 11以上版本,可通过以下命令安装:
sudo yum install -y java-11-openjdk-devel
验证安装是否成功:
java -version
安装Git并创建专用账户(如gerrit_user),避免直接使用root账户操作:
sudo yum install -y git sudo useradd -m -d /home/gerrit_user -s /bin/bash gerrit_user sudo passwd gerrit_user
下载与初始化Gerrit
切换至新建用户,下载最新Gerrit包(以3.8.0版本为例):
su - gerrit_user wget https://gerrit-releases.storage.googleapis.com/gerrit-3.8.0.war
创建存储目录并初始化:

mkdir ~/gerrit_site java -jar gerrit-3.8.0.war init --batch --dev -d ~/gerrit_site
初始化参数说明:
--batch:跳过交互式配置
--dev:启用开发模式(生产环境需移除)
-d:指定安装目录
配置系统服务
创建Systemd服务文件/etc/systemd/system/gerrit.service如下:
[Unit] Description=Gerrit Code Review After=network.target [Service] User=gerrit_user WorkingDirectory=/home/gerrit_user/gerrit_site ExecStart=/usr/bin/java -jar /home/gerrit_user/gerrit_site/bin/gerrit.war daemon -d /home/gerrit_user/gerrit_site Restart=always [Install] WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload sudo systemctl enable gerrit sudo systemctl start gerrit
Nginx反向代理配置
直接暴露8080端口存在安全隐患,通过Nginx配置HTTPS转发:
1、安装Nginx与Certbot:
sudo yum install -y nginx certbot python3-certbot-nginx
2、配置/etc/nginx/conf.d/gerrit.conf:
server {
listen 80;
server_name gerrit.yourdomain.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}3、申请SSL证书并重启服务:
sudo certbot --nginx sudo systemctl restart nginx
数据库与邮件服务集成
生产环境建议使用MySQL/PostgreSQL替代内置H2数据库,以MySQL为例:
1、安装MySQL并创建数据库:
sudo yum install -y mysql-server sudo systemctl start mysqld sudo mysql_secure_installation mysql -u root -p CREATE DATABASE gerritdb CHARACTER SET utf8mb4; CREATE USER 'gerrit'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL ON gerritdb.* TO 'gerrit'@'localhost';
2、修改gerrit_site/etc/gerrit.config:
[database]
type = mysql
hostname = localhost
database = gerritdb
username = gerrit
password = your_password配置SMTP邮件通知(以Gmail为例):
[sendemail]
enable = true
smtpServer = smtp.gmail.com
smtpServerPort = 587
smtpEncryption = tls
smtpUser = your_email@gmail.com
smtpPass = app_specific_password
from = "Gerrit" <your_email@gmail.com>权限管理与插件扩展
通过gerrit_site/etc/groups文件定义用户组权限,
管理员组 Administrators Administrators 核心开发者 Core-Developers Core-Developers
推荐安装常用插件提升功能:
download-commands:显示下载命令
replication:实现仓库镜像同步
webhooks:触发CI/CD流水线
插件安装步骤:
java -jar gerrit.war init -d ~/gerrit_site --install-plugin download-commands
安全加固建议
1、定期备份gerrit_site目录及数据库
2、配置防火墙仅允许必要端口访问
3、启用审计日志并监控异常登录
4、使用OAuth/LDAP集成替代本地账户
部署完成后,通过https://gerrit.yourdomain.com访问管理界面,首次登录需使用初始化时创建的账户,建议立即配置SSH密钥并测试代码推送流程,对于中小团队,Gerrit的轻量级架构足以支撑日常开发需求;若遇到性能瓶颈,可通过增加JVM内存参数或分离数据库服务器进行优化,实际使用中,代码审查流程的规范化培训比工具本身更重要——这正是许多团队容易忽视的关键点。
