Gerrit+apache+H2数据库简单安装配置及建库流程

本文详细介绍了在Ubuntu系统上安装Gerrit的过程,包括安装所需软件、创建用户、配置安装目录、下载并初始化Gerrit,以及如何配置Apache作为Gerrit的反向代理服务器。此外,还提供了Gerrit配置及建库流程,以及如何在Gerrit中创建项目、添加用户权限和推送代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ubantu Gerrit 安装

安装相关软件(ubantu)
Gerrit 是一个基于 Web 的代码评审和项目管理的工具,面向基于 Git 版本控制系统的项目。因此需要Apache、Mysql、GIT等相关软件的支持 系统配置: 新装的UBANTU LINUX系统请先更新自己的系统软件包 $sudo apt-get dist-upgrade
$sudo adduser project
以新用户身份操作 $sudo su - project
$sudo apt-get install  git-core apache2.2-bin apache2.2-common apache2-utils apache2-mpm-worker

安装Gerrit

1.创建一个以项目名称命名的新用户,以project为例(如以创建可省)
$sudo adduser project

以新用户身份操作

$sudo su - project
2.创建安装目录,以项目名命令。(建议直接拷贝使用其它项目的gerrit安装目录) $mkdir -p review_site_project
3.下载gerrit
 http://code.google.com/p/gerrit/downloads/list?can=1&q=&colspec=Filename+Summary+Uploaded+ReleaseDate+Size+DownloadCount
4.安装并配置初始化gerrit
 java -jar gerrit-2.6.1.war init -d review_site_project/
 
Create '/home/gerrit2/review-site' [Y/n]?

*** Git Repositories
***

Location of Git repositories [git]:

*** SQL Database
***

Database server type [H2/?]:   //改成MYSQL或者使用H2

*** User Authentication
***

Authentication method [OPENID/?]: HTTP   //注意这个不要按回车跳过去了,否则不是HTTP认证,是需要用google的OPENID
Get username from custom HTTP header [y/N]? :
SSO logout URL : 

*** Email Delivery
***

SMTP server hostname [localhost]: smtp.company.com   //自己改成自己的邮箱smtp
SMTP server port [(default)]:
SMTP encryption [NONE/?]:
SMTP username [?]: yourname@company.com              //自己改成自己的邮箱
yourname@xxxxx.com's password :
confirm password :

*** Container Process
***

Run as [project]:
Java runtime [/usr/lib/jvm/java-6-sun-1.6.0.24/jre]:
Copy gerrit.war to /home/gerrit2/review-site/bin/gerrit.war [Y/n]?
Copying gerrit.war to /home/gerrit2/review-site/bin/gerrit.war

*** SSH Daemon
***

Listen on address [*]:
Listen on port [29418]:       //如果同一个用户下建多个gerrit,请不用都公用29418这个端口号 如39418 49418

Gerrit Code Review is not shipped with Bouncy Castle Crypto v144
  If available, Gerrit can take advantage of features
  in the library, but will also function without it.
Download and install it now [Y/n]? 
Downloading http://www.bouncycastle.org/download/bcprov-jdk16-144.jar ... OK
Checksum bcprov-jdk16-144.jar OK
Generating SSH host key ... rsa... dsa... done
*** HTTP Daemon
*** 

Behind reverse proxy           [y/N]? y      
//使用反向代理的话必须选择y来配置,默认是N

Proxy uses SSL (https://) [y/N]? n
Subdirectory on proxy server   [/]: /project/     //可以选择直接跳过,那样你的gerrit最后的URL是http://192.168.11.73:80
Listen on address              [*]: 
Listen on port                 [8081]:          //切记,此端口号一定不要和apache2占用相同的端口号,多个gerrit可以8082 8083 8084                                                			//否则就会Starting Gerrit Code Review:Failed
Canonical URL                  [http://*/]:http://192.168.11.73/project/    //上一步Subdirectory on proxy server 跳过不填则是http://192.168.11.73:80  (80为你将要在apache 给gerrit设置的端口)
Initialized /home/gerrit2/review-siteExecuting 
/home/gerrit2/review-site/bin/gerrit.sh start
Starting Gerrit Code Review: OK
=========================================QA=======================================================================================
Q:Configuration ErrorCheck the HTTP server's authentication settings.The HTTP server did not provide the username in the Authorizationheader when it forwarded the request to Gerrit Code Review.If the HTTP server is Apache HTTPd, check the proxy configurationincludes an authorization directive with the proper location, ensuringit ends with '/':
In error_log:ERROR com.google.gerrit.httpd.auth.container.HttpLoginServlet : Unableto authenticate user by Authorization request header.  Check containeror server configuration.
A:You cannot run these on the same port. Your Apache NameVirtualHostshould be on a different port than the internal Jetty web sever thatGerrit is using.
即gerrit和apache2占用相同的端口号
例如:

cat review_site_project/etc/gerrit.config:

[httpd]       listenUrl = http://x.x.x.x:8081/

cat /etc/apache2/apache2.conf :

NameVirtualHost x.x.x.x:8081

<VirtualHost x.x.x.x:8081>

apache2和gerrit都使用了8081,肯定有一个启动不来的,一般是gerrit

5.按下面内容修改review_site_project/etc/gerrit.conf 及GERRIT的配置文件
[gerrit]  
       basePath = git //指定被gerrit管理的所有git库存放位置,即review_site_project/git/ 
       canonicalWebUrl = http://192.168.11.73/project/  //指定web访问gerrit的网址//填自己的ip和端口号,勿完全抄
[database]
       type = H2 //指定gerrit所默认数据库类型,可以选用mysql
       database = db/ReviewDB 
[auth]
       type = HTTP //指定浏览器登录gerrit时的认证方式
[sendemail]
        smtpServer = smtp.company.com  //指定smtp服务器地址        
        smtpUser = yourname@company.com

[container]
       user = project //指定gerrit所在机器的用户身份与上文创建的用户对应一致
       javaHome = /usr/lib/jvm/java-6-sun-1.6.0.24/jre  //系统本身自带
[sshd]
       listenAddress = *:29418 //指定sshd服务监听的端口号
[httpd]
       listenUrl = proxy-http://127.0.0.1:8081/project/ //指定http代理地址
[cache]
       directory = cache   //缓存位置


配置Apache

$sudo apt-get install  apache2.2-bin apache2.2-common apache2-utils apache2-mpm-worker

1.创建编辑apache配置文件,添加如下内容(下面以Ubuntu系统为例请注意不同操作系统apache配置文件的区别)也可配置 apache2.conf httpd.conf,我们这里配置的是/etc/apache2/sites-available/gerrit

$sudo vi /etc/apache2/sites-available/defalt   

    NameVirtualHost   192.168.11.73:80  //填自己的ip和端口号,勿完全抄
<VirtualHost 192.168.11.73:80>          //填自己的ip和端口号,勿完全抄
    ServerName 192.168.11.73

    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On

    <Proxy *>
          Order deny,allow
          Allow from all
    </Proxy>

    <Location "/project/login/">
      AuthType Basic
      AuthName "Gerrit Code Review"
      Require valid-user
      AuthUserFile /etc/apache2/passwords    //指定http登录认证的的paassword文件所在位置,放哪都行,根据后来
                                             //sudo htpasswd -cb  /etc/apache2/passwords scm scm
    </Location>

    AllowEncodedSlashes On
    RedirectMatch  ^/project$                /project/
    ProxyPass /project/ http://127.0.0.1:8081/project/
    ProxyPassReverse /project/ http://127.0.0.1:8081/project/
</VirtualHost>
保存退出
$cd /etc/apache2/sites-enabled/
$sudo ln ../sites-available/gerrit .
2.创建passwd文件,添加gerrit登录用户,-c参数为创建,仅限第一次添加用户时使用
$sudo htpasswd -cb  /etc/apache2/passwords scm scm
第二次添加其他用户时,不要加-c了:
$sudo htpasswd -b  /etc/apache2/passwords test test
3继续配置apache2
$sudo vi /etc/apache2/http.conf //在文件中加入以下内容
ServerName localhost


$cd /etc/apache2/mods-enabled
$sudo ln -s /etc/apache2/mods-available/proxy.conf proxy.conf 
$sudo ln -s /etc/apache2/mods-available/proxy.load proxy.load 
$sudo ln -s /etc/apache2/mods-available/proxy_http.load proxy_http.load
配置apache2的监听端口:
/etc/apache2$sudo vi ports.conf 
NameVirtualHost *:80
Listen 80
Listen 8080    //不要给gerrit!
Listen 8000    //不要给gerrit!
添加apache2的tcp端口号,切记不要把gerrit的,即
Listen on port                 [8081]: 不要输入上面配置给apache2的端口号,切记!!!
可以用sudo netstat -lnp | grep 80   查看相关80的所有端口使用情况
否则gerrit 起不来的
搭建多个gerrit 时Listen on port                 [8081]:可以用8082 8083 8084 等

 

Apache2 配置安装 FQA:

Q:启动apache报错

Syntax error on line 300 of /etc/apache2/apache2.conf:Invalid command 'ProxyPass', perhaps misspelled or defined by a module not included in the server configuration   ...fail!
A:配置了反向代理,但是没有打开module,执行下面操作
cd /etc/apache2/mods-enabled
ln -s /etc/apache2/mods-available/proxy.conf proxy.conf 
ln -s /etc/apache2/mods-available/proxy.load proxy.load 
 ln -s /etc/apache2/mods-available/proxy_http.load proxy_http.load
Q:启动Apache报错
No apache MPM package installed
A:安装apache2-mpm-worker软件包
$sudo apt-get install apache2-mpm-worker
Q:启动Apache报错
 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
A:修改/etc/apache2/http.conf文件,在文件中加入以下内容
ServerName localhost
 
Q:(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80

A:需要用ROOT用户执行   直接 sudo  /etc/init.d/apache2 restart  就OK了  
 

启动服务

1.启动apache
sudo /etc/init.d/apache2 restart 
2.启动gerrit服务
$review_site_project/bin/gerrit.sh start 

登录gerrit

在浏览器地址栏中输入

192.168.11.73/project/    

注:Subdirectory on proxy server [/]:选择直接跳过  则192.168.11.73:80

在显示的登录框中输入用户名/密码,

即之前配置passwords 

$sudo htpasswd -cb  /etc/apache2/passwords scm scm
scm

scm

Note: 请注意第一个登入的用户,Gerrit会自动将其定义为管理员

Gerrit 配置及建库流程

建库及Gerrit配置操作命令

1.创建只用于权限管理的库,可以使用如下命令(请注意端口号以实际为准)
ssh -p 29418 scm@192.168.11.73 gerrit create-project -p All-Projects -n project --empty-commit --permissions-only
2.创建代码库,以manifest为例命令如下:
ssh -p 29418 scm@192.168.11.73 gerrit create-project -p project -n project/manifest --empty-commit
批量建库,可以通过整理库列表,使用如下脚本来完成
for i in `cat project-list`;do ssh -p 29418 scm@192.168.11.73 gerrit create-project -p project -n project/$i --empty-commit;done

修改gerrit Group组命令:ssh -p 29418 192.168.11.73 gerrit rename-group Anonymous\' \'Users Verifier

详细gerrit命令见:ssh -p 29418 192.168.11.73 gerrit --help

直接使用GIT命令推送代码命令:git push origin HEAD:refs/for/master

3. gerrit管理员之命令行服务端直接操作数据库(h2)的配置,删除无用的Group、提交 等等
  优点:不需要认证,尤其是在管理员账号尚未建立之前就可以查看和更改数据库
  缺点:先登录到服务器,而且操作数据库时还需要先停止服务


3.1 进入gerrit超级管理员模式
gerrit2@ubuntu:~/review_site$ ./bin/gerrit.sh stop
Stopping Gerrit Code Review: OK
gerrit2@ubuntu:~/review_site$ ls bin
gerrit.sh  gerrit.war
gerrit2@ubuntu:~/review_site$ java -jar bin/gerrit.war gsql
[2013-05-01 01:05:57,003] INFO  com.google.gerrit.server.git.LocalDiskRepositoryManager : Defaulting core.streamFileThreshold to 220m
Welcome to Gerrit Code Review 2.6-rc1
(H2 1.3.168 (2012-07-13))


Type '\h' for help.  Type '\r' to clear the buffer.

gerrit> \h
General
  \q        quit

Query Buffer
  \g        execute the query buffer
  \p        display the current buffer
  \r        clear the query buffer


Informational
  \d        list all tables
  \d NAME   describe table
gerrit> \d
                     List of relations
 TABLE_SCHEM | TABLE_NAME                           | TABLE_TYPE
 ------------+--------------------------------------+-----------
 PUBLIC      | ACCOUNTS                             | TABLE
 PUBLIC      | ACCOUNT_DIFF_PREFERENCES             | TABLE
 PUBLIC      | ACCOUNT_EXTERNAL_IDS                 | TABLE
 PUBLIC      | ACCOUNT_GROUPS                       | TABLE
 PUBLIC      | ACCOUNT_GROUP_INCLUDES_BY_UUID       | TABLE
 PUBLIC      | ACCOUNT_GROUP_INCLUDES_BY_UUID_AUDIT | TABLE
 PUBLIC      | ACCOUNT_GROUP_MEMBERS                | TABLE
 PUBLIC      | ACCOUNT_GROUP_MEMBERS_AUDIT          | TABLE
 PUBLIC      | ACCOUNT_GROUP_NAMES                  | TABLE
 PUBLIC      | ACCOUNT_PATCH_REVIEWS                | TABLE
 PUBLIC      | ACCOUNT_PROJECT_WATCHES              | TABLE
 PUBLIC      | ACCOUNT_SSH_KEYS                     | TABLE
 PUBLIC      | CHANGES                              | TABLE
 PUBLIC      | CHANGE_MESSAGES                      | TABLE
 PUBLIC      | PATCH_COMMENTS                       | TABLE
 PUBLIC      | PATCH_SETS                           | TABLE
 PUBLIC      | PATCH_SET_ANCESTORS                  | TABLE
 PUBLIC      | PATCH_SET_APPROVALS                  | TABLE
 PUBLIC      | SCHEMA_VERSION                       | TABLE
 PUBLIC      | STARRED_CHANGES                      | TABLE
 PUBLIC      | SUBMODULE_SUBSCRIPTIONS              | TABLE
 PUBLIC      | SYSTEM_CONFIG                        | TABLE
 PUBLIC      | TRACKING_IDS                         | TABLE

重新配置Group,删除原有不需要的Group(如匿名),使新创建的Group都可以添加删除用户,
gerrit>  delete from ACCOUNT_GROUPS  where NAME = 'Anonymous Users';

设置权限

1.Gerrit管理员权限
由于Gerrit管理员要完成代码推送、创建TAG,且可能涉及到多套库的操作,编辑“All-Projects”中的“Access”,
 
2.project项目用户权限
project项目用户对代码库的权限设置,请在"project"的“Access”中完成,如图所示:
3.操作方法:
  1. 选择“All-Projects”中的“Access”,点击“”按钮;
  2. 点击“Add Reference”,填写正确的“Reference”,如果"refs/heads/*",具体的某个分支“refs/heads/dev”;
  3. 选择“Add Permissioned...”列表中的权限,如“Read”;
  4. 填写“Group Name”,如“project_read”,点击“Add”按钮;
  5. 设置权限的分值,“ALLOW” “DENY” “+1” “-2”等;
  6. 设置完成后,点击“”按钮
Note: 代码需要经过Gerrit review之后才可以入库,因此push权限的“ Reference”应该填写“refs/for/refs/heads/*”

推送代码

在已经有的代码库中,执行
 repo forall -c 'git remote add ts ssh://scm@192.168.11.73:29418/$REPO_PROJECT'
 repo forall -c 'git push ts HEAD:refs/heads/project-dev'

配置manifest

1.下载manifest库
git clone ssh://192.168.11.73:29418/project/manifest.git
默认下载的是master分支,且只有一个空提交
2.生成default.xml
请注意更改default.xml中如下两行:
<remote fetch=".." name="origin" review="192.168.11.73/project" />
<default remote="origin" revision="project-dev" />
Note: review的内容为Gerrit地址,revision的内容务必与实际代码库中的分支保持一致
3.推送manifest分支
git add default.xml
git commit -m "init manifest"
git push origin master:project-dev
Note: 此处“project-dev”分支是manifest分支,与实际代码库中的分支可以相同也可以不同

添加Gerrit用户

执行如下命令

htpasswd -b passwords <username> <password>

添加用户权限

新用户首次登录后,才可以给其添加权限。

Gerrit身份权限说明

Project_admin该项目管理员,可以为用户添加Gerrit身份;
Project_read拥有gerrit用户名密码,设置了全名和邮箱的用户;拥有下载代码,提交代码,Code Review +1 的权限;
Project_super_review负责查看该项目代码Review,拥有Code Review +2 的权限;
Project_verify负责该项目编译验证代码,拥有Verified +1 的权限
Project_submit当该次提交代码Code Review +2 并且Verified +1后,负责将代码Merge到代码库中

下载代码测试

repo init -u ssh://<gerrit user>@192.168.11.73:29418/project/manifest -b project-dev
Note: 建议使用普通Gerrit帐户下载测试

Gerrit Review代码

Gerrit上代码提交的三种状态

代码提交至Gerrit之后,有三种状态,分别是:Open、Merged、Abandoned。
Open 状态的代码需要经过Review,Verify,Submit操作后才会真正入库,即成为Merged状态
Merged 状态的代码已经入库,不能再Abandoned,只能Revert.
Open 状态的代码由于各种原因不能入库的可以放弃,即Abandoned状态。
Abandoned 状态的代码不能再入库,如有需要,可以“Restore”。

Gerrit上代码提交的详细信息

代码提交之后,登录Gerrit,可以看到此次提交已经显示在列表中,如下图

 
  • 绿箭头所指是目前查看的代码状态,即Open状态的列表。
  • 列表显示的信息依次是
IDSubjectOwnerProjectBranchUpdatedCRV
ChangeId提交信息的第一行提交人库名分支名最后变更的时间Review的状态Verify的状态
  • CR 的状态有四种,分别为  (-2),-1+1 (+2)
其中-1并不影响入库,但-2则需要重新提交新的Patch Set,或者设置-2的成员批准才能入库。
  • V 的状态有两种,分别是  (-1), (+1)
其中-1的状态不能入库,需要重新编译验证(Verify)通过才可以入库。

点击列表中的“ID”或“Subject”,则可以显示该提交更详细的信息。下图的放大效果中显示了该提交当前的状态。

  • Rerviewer Jenkins成员给该提交 -1 ,这是Jenkins系统的自动任务,在这里用于检查提交信息(git log)的格式;
  • Need Verified 表示该提交还没有进行编译验证;
  • Need Code-Review 表示该提交还没有进行代码Review,请注意,这里指Review +2
Note: Review +2表示更高一级的Review权限,即需要有此权限的成员Review代码后判断是否允许代码入库。两个Review +1并不能获得同等的效果

下图显示了提交详细信息中的下半部分,主要有每次提交的Patch Set详情,该提交修改的文件列表,以及每次Review的说明信息。

  • 两个Patch Set表示该提交在入库前又做过一次修改:代码入库前允许有多次修改,包括对git log的改动;
  • 点击修改文件列表中显示的文件(红色横线标识),显示该文件修改前后的对比,如图中绿色箭头所指(实际效果为在新的页面中展示);
  • 文件修改的对比版本可以自由选择是与Base或是与某一个Patch Set作对比,请注意图中“Old Version History”(浅紫色框)下拉菜单的选择;
  • Comments信息是Review代码时填写的信息。

代码的Review

点击Review按钮(上图红圈标识),可以对当前提交做Review的操作,如下图:

  • 不同权限,可以看到左右不同的页面,选择相应Review的分数即可;
  • 信息框中可以填写此次Review的更详细的信息,并点击“Publish”按钮。


代码的Verify

一般情况下,代码都是通过Jenkins的 Verify 任务完成编译验证并自动打分。
有Verify权限的成员,可以在确认代码编译验证通过之后,手动打分(极不推荐),选择Verfiy的分数,填写信息,并点击“Publish”按钮。如下图:

代码的Submit

代码经过Review +2和Verify +1之后才可以Submit入库;
Review和Verify的顺序没有要求。

如图,可以看到两个按钮“Publish Comments”和“Publish and Submit”

  • 点击“Publish Comments”只进行Review或Verify的打分;
  • 点击“Publish and Submit”在Review或Verify的打分同时直接Submit。

如果只选择了给Review或Verify打分,也可以进行Submit,如下图,点击“Submit”按钮

至此,该提交Review完成,正式提交入库,状态变为“Merged”


转自: http://blog.youkuaiyun.com/dongwuming/article/details/9228091

<think>我们正在处理用户关于Gerrit与Nginx集成的配置指南请求。根据提供的引用信息,我们可以总结出配置的关键步骤。引用[2]和[3]提供了Nginx配置文件的示例,引用[4]提到了修改Gerrit配置文件。配置步骤:1.安装Nginx:使用系统包管理器安装Nginx(如apt-get)。2.修改Gerrit配置文件:设置Gerrit的canonicalWebUrl为正确的地址(通常包括端口号,但通过Nginx代理后可能不需要在URL中暴露端口)。3.配置Nginx作为反向代理:创Nginx的server配置块,监听80端口(或443,如果使用SSL),并将请求代理到Gerrit运行的端口(通常是8081)。注意:引用[2]和[3]的配置示例中,都使用了auth_basic进行基本认证,并指定了密码文件。这是可选的,如果Gerrit本身已有认证,可能不需要在Nginx层再加认证。我们参考引用[3]的配置示例,因为它更完整(包括日志记录等)。同时,引用[2]的配置中有一个专门处理/login/的location,但引用[3]的配置中只有一个location/,通常一个location/就足够。因此,我们可以给出一个典型的配置示例,并解释关键部分。配置示例(Nginx):```server{listen80;server_namegerrit.example.com;#替换为你的域名#如果需要基本认证,取消以下注释并配置密码文件#auth_basic"GerritCodeReview";#auth_basic_user_file/path/to/htpasswd;location/{proxy_passhttp://127.0.0.1:8081;#Gerrit实际监听的地址和端口proxy_set_headerHost$host;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;#以下是一些推荐的配置,确保WebSocket和长连接正常工作proxy_http_version1.1;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnection"upgrade";proxy_read_timeout86400;}access_log/var/log/nginx/gerrit_access.log;#访问日志error_log/var/log/nginx/gerrit_error.log;#错误日志}```同时,Gerrit配置文件(gerrit.config)中需要设置:```[gerrit]canonicalWebUrl=http://gerrit.example.com/#注意这里使用Nginx暴露的地址和端口(如果是80端口可省略端口号)[httpd]listenUrl=proxy-http://127.0.0.1:8081/#Gerrit监听本地8081端口,由Nginx代理```注意:如果Gerrit和Nginx在同一台机器上,可以使用127.0.0.1。步骤:1.安装Nginx(如已安装则跳过)。2.修改Gerrit配置文件(通常位于gerrit安装目录下的etc/gerrit.config),设置canonicalWebUrl和httpd.listenUrl。3.将上述Nginx配置放入/etc/nginx/sites-available/gerrit,然后创一个符号链接到/etc/nginx/sites-enabled/。4.创htpasswd文件(如果需要基本认证):可以使用htpasswd命令创,并指定auth_basic_user_file的路径。5.重启Gerrit和Nginx服务。注意:如果Gerrit已经运行,修改配置后需要重启Gerrit。同样,修改Nginx配置后需要重新加载或重启Nginx。相关问题:1.如何为Gerrit配置HTTPS(使用Nginx)?2.Gerrit与Nginx集成时常见问题如何解决?3.如何配置Gerrit的邮件通知?</think>### Gerrit与Nginx集成配置指南 以下是Gerrit与Nginx集成的关键配置步骤及示例,基于引用文档的最佳实践: #### 1. **安装Nginx** ```bash sudo apt-get install nginx # Debian/Ubuntu系统 ``` #### 2. **修改Gerrit配置文件** 编辑`gerrit.config`(通常位于`/home/gerrit2/review_site/etc/`): ```ini [gerrit] canonicalWebUrl = http://gerrit.example.com # 替换为你的域名[^4] [httpd] listenUrl = proxy-http://127.0.0.1:8081/ # 确保与Nginx代理端口一致 ``` #### 3. **配置Nginx反向代理** 创配置文件`/etc/nginx/sites-available/gerrit`(参考[^2][^3]): ```nginx server { listen 80; server_name gerrit.example.com; # 替换为你的域名 # 可选基础认证(移除注释启用) # auth_basic "Gerrit Code Review"; # auth_basic_user_file /etc/nginx/gerrit.htpasswd; location / { proxy_pass http://127.0.0.1:8081; # 指向Gerrit端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # WebSocket支持(Gerrit 3.0+必需) proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } access_log /var/log/nginx/gerrit_access.log; error_log /var/log/nginx/gerrit_error.log; } ``` #### 4. **启用配置并重启服务** ```bash sudo ln -s /etc/nginx/sites-available/gerrit /etc/nginx/sites-enabled/ sudo nginx -t # 验证配置 sudo systemctl reload nginx sudo systemctl restart gerrit ``` #### 5. **验证配置** - 访问 `http://gerrit.example.com` 应显示Gerrit界面 - 检查日志:`tail -f /var/log/nginx/gerrit_access.log` > **关键配置说明**: > 1. `proxy_pass` 必须匹配Gerrit的`listenUrl`端口(示例为8081)[^2][^4] > 2. `X-Forwarded-For` 确保Gerrit获取真实客户端IP[^3] > 3. WebSocket头是Gerrit 3.0+版本必需[^3] > 4. 若需HTTPS,在Nginx配置中添加SSL证书并监听443端口 #### 故障排查 - **502 Bad Gateway**:检查Gerrit是否运行(`systemctl status gerrit`) - **认证失败**:确认`auth_basic_user_file`路径正确,使用`htpasswd`创密码文件 - **CSS加载异常**:检查`canonicalWebUrl`是否与访问域名一致[^4]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值