安装gerrit+http

本文介绍了如何使用HTTP方式安装和管理Gerrit,包括通过HTTP下载代码的测试步骤以及在Gerrit web界面设置和修改用户邮箱的教程。

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

 安装maven
$ sudo apt-cache search maven
maven-debian-helper - Helper tools for building Debian packages with Maven
maven2 - Java software project management and comprehension tool
$ sudo apt-get install maven2


使用gerrit版本
gerrit2@ubuntu:~/env$ ls -l gerrit-2.6-rc1.war 
-rw-r--r-- 1 gerrit2 gerrit2 30220186 2013-04-30 09:08 gerrit-2.6-rc1.war


使能apache2反向代理模块
gerrit2@ubuntu:/etc/apache2/mods-enabled$ ls -l proxy.conf proxy.load  proxy_http.load 
lrwxrwxrwx 1 root root 28 2013-04-30 11:40 proxy.conf -> ../mods-available/proxy.conf
lrwxrwxrwx 1 root root 33 2013-04-30 11:40 proxy_http.load -> ../mods-available/proxy_http.load
lrwxrwxrwx 1 root root 28 2013-04-30 11:40 proxy.load -> ../mods-available/proxy.load


apache2配置文件
gerrit2@ubuntu:/etc/apache2$ cat sites-enabled/default 
<VirtualHost *:80>
ServerName 192.168.1.99
ProxyRequests Off  
ProxyVia Off  
ProxyPreserveHost On  


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


<Location />
AuthType Basic
AuthName "Gerrit Code Review"
Require valid-user


AuthBasicProvider file
AuthUserFile /home/gerrit2/review_site/etc/passwords
</Location>


ProxyPass / http://127.0.0.1:8080/
</VirtualHost>


gerrit配置文件
gerrit2@ubuntu:~/review_site$ cat etc/gerrit.config 
[gerrit]
        basePath = git
        canonicalWebUrl = http://192.168.1.99
[database]
        type = h2
        database = db/ReviewDB
[auth]
        type = HTTP
[sendemail]
        smtpServer = localhost
[container]
        user = gerrit2
        javaHome = /opt/jdk1.6.0_25/jre
[sshd]
        listenAddress = *:29418
[httpd]
        listenUrl = proxy-http://127.0.0.1:8080/



创建http登陆认证账号和密码
gerrit2@ubuntu:~/review_site$ cat etc/passwords 
root:HtY1xg.w42PRM
admin:F5Sab3S01LcYE


启动apache2和gerrit服务
$ sudo /etc/init.d/apache2 restart
$ sudo /home/gerrit2/review_site/bin/gerrit.sh restart


http方式下载代码测试

$ cat .netrc 
machine 192.168.1.99 login root password oswzb
$ git clone http://192.168.1.99/env/git.git 
正克隆到 'git'...
remote: Counting objects: 23755 


http方式上传代码测试



查看gerrit使用了哪些端口
$ sudo netstat -ltpn | grep -i gerrit
[sudo] password for os-weizb: 
tcp6       0      0 :::29418                :::*                    LISTEN      5301/GerritCodeRevi
tcp6       0      0 127.0.0.1:8080          :::*                    LISTEN      5301/GerritCodeRevi


1. gerrit管理员之web界面配置

  优点:直观,鼠标点点即可
  缺点:有些gerrit设置没有提供web界面配置,需要直接修改数据库




2. gerrit管理员之命令行远程直接操作数据库(h2)的配置
  优点:高效, 不需要停止gerrit服务就可以直接操作数据库
  缺点:在web界面往往无法配置对gerrit的一些设置,需要直接修改数据库


  ssh连接长命令方式访问
  $ ssh -p 29418 192.168.1.99 -l root  


  ssh连接短命令方式访问
  通过配置~/.ssh/config文件来为ssh连接设置别名
  $ vi /home/os-weizb/.ssh/config 
    Host ha
      HostName 192.168.1.99
      User root
      Port 29418
      IdentityFile ~/.ssh/id_rsa


  $ ssh ha




2.2  ssh进入gerrit管理员模式
$ ssh ha gerrit
Available commands of gerrit are:


   approve              Verify, approve and/or submit one or more patch sets
   ban-commit           Ban a commit from a project's repository
   create-account       Create a new batch/role account
   create-group         Create a new account group
   create-project       Create a new project and associated Git repository
   flush-caches         Flush some/all server caches from memory
   gc                   Run Git garbage collection
   gsql                 Administrative interface to active database
   ls-groups            List groups visible to the caller
   ls-projects          List projects visible to the caller
   ls-user-refs         List refs visible to a specific user
   plugin               
   query                Query the change database
   receive-pack         Standard Git server side command for client side git push
   rename-group         Rename an account group
   review               Verify, approve and/or submit one or more patch sets
   set-account          Change an account's settings
   set-project          Change a project's settings
   set-project-parent   Change the project permissions are inherited from
   set-reviewers        Add or remove reviewers on a change
   show-caches          Display current cache statistics
   show-connections     Display active client SSH connections
   show-queue           Display the background work queues, including replication
   stream-events        Monitor events occurring in real time
   test-submit          
   version              Display gerrit version


See 'gerrit COMMAND --help' for more information.




2.3 查看gerrit有哪些组
$ ssh ha gerrit ls-groups
Administrators
Anonymous Users
Non-Interactive Users
Project Owners
Registered Users


2.4 查看gerrit有哪些项目
$ ssh ha gerrit ls-projects
env/gerrit
env/git
env/git-repo


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


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


gerrit> 


设置/修改用户邮箱

管理员ssh远程设置/修改用户的邮箱地址通过gerrit set-account修改
$ cat ~/.ssh/config 
Host ha
    HostName 192.168.1.99
    User root
    Port 29418
    IdentityFile ~/.ssh/id_rsa

$ ssh ha gerrit set-account --add-email foo@foo.com foo


参考 http://fatalove.iteye.com/blog/1332881
<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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值