部署 Gerrit 到生产环境

Docker 快速部署

docker run -ti -p 8080:8080 -p 29418:29418 docker.io/gerritcodereview/gerrit:3.9.1

Use docker persistent volumes to keep Gerrit data across restarts. Below is a sample docker-compose.yaml with externally-mounted Lucene indexes, Caches and Git repositories.

version: '3'
services:
  gerrit:
    image: docker.io/gerritcodereview/gerrit:gerrit:3.9.1
    volumes:
       - git-volume:/var/gerrit/git
       - index-volume:/var/gerrit/index
       - cache-volume:/var/gerrit/cache
    ports:
       - "29418:29418"
       - "8080:8080"
volumes:
  git-volume:
  index-volume:
  cache-volume:

Run docker compose up (or docker-compose up with older versions of Docker) to trigger the build and execution of your container.

Docker 镜像项目地址:https://gerrit.googlesource.com/docker-gerrit

Linux 裸机 Standalone Daemon 部署

在需要部署的服务器上安装 Java 环境(推荐 Java17 版本),这里不赘述步骤。

初始化配置

上传编译好或直接下载的软件包到服务器:

# 推荐新建 gerrit 用户部署启动
sudo adduser gerrit && sudo su gerrit

# 初始化项目,注意 gerrit 用户对项目目录的权限
export GERRIT_SITE = /path/to/your/gerrit_application_directory # 可以放到 .bashrc 文件
java -jar gerrit.war init -d $GERRIT_SITE

在初始化过程中,根据提示对项目进行初步配置,·也可以编辑配置文件 $GERRIT_SITE/etc/gerrit.config 来修改,重启服务即可生效。

管理守护进程

$GERRIT_SITE/bin/gerrit.sh start # status | stop | restart

反向代理配置

使用 web server 来反向代理访问服务,方便我们配置域名及 SSL。修改配置文件:

[httpd]
		listenUrl = proxy-http://127.0.0.1:8081

以 Nginx 为示例:

server {
    # HTTP反向代理相关配置开始 >>>
    location ~ /purge(/.*) {
        proxy_cache_purge cache_one 127.0.0.1$request_uri$is_args$args;
    }
    location ^~ {
        proxy_pass http://127.0.0.1:8081;
        proxy_set_header Host 127.0.0.1:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
        add_header X-Cache $upstream_cache_status;
        proxy_set_header X-Host $host:$server_port;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 30s;
        proxy_read_timeout 86400s;
        proxy_send_timeout 30s;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
    # HTTP反向代理相关配置结束 <<<
}

数据备份

All primary data is stored in git.

  • Git 仓库镜像自动同步到主流 Git 托管服务平台,如 Gitee;
  • 定时服务器快照备份(云服务厂商付费功能);
  • 网站目录定时冷存储到云服务 COS 存储;