(文章来源: http://blog.csdn.net/ljchlx/article/details/22277311)
小注解:
本文所使用的关于apache的配置设置是基于apache2.2的,因此部分设置与apache 2.3/2.4稍有不同.
例如:
Order deny,allow
Allow from all
就应该改为
Require all granted
进一步详细的请查看apache说明文档。
$sudo apt-get install git-core apache2.2-bin apache2.2-common apache2-utils apache2-mpm-worker
$sudo adduser project
以新用户身份操作
$sudo su - project
3.下载gerrit
http://code.google.com/p/gerrit/downloads/list?can=1&q=&colspec=Filename+Summary+Uploaded+ReleaseDate+Size+DownloadCount
java -jar gerrit-2.6.1.war init -d ~/gerrit_reviewsite/
reate '/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.126.com //自己改成自己的邮箱smtp SMTP server port [(default)]: 25 SMTP encryption [NONE/?]: SMTP username [?]: [email protected] //自己改成自己的邮箱
[email protected]'s password : xxxxxxx confirm password : xxxxxxx *** 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]?
//这里如果选择了y,则gerrit服务器上的fingerprint会有两个,否则则只有一个
Downloading http://www.bouncycastle.org/download/bcprov-jdk16-144.jar ... OKChecksum bcprov-jdk16-144.jar OKGenerating SSH host key ... rsa... dsa... done*** HTTP Daemon***
Behind reverse proxy [y/N]? y
//使用反向代理的话必须选择y来配置,默认是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
5. 启动gerrit时失败,查看gerrit_reviewsite/log/error_log中的错误信息如下:
[2016-07-29 02:56:56,387] [main] WARN com.google.gerrit.sshd.SshDaemon : Disabling cipher aes192-cbc: Illegal key size; try installing unlimited cryptography extension
[2016-07-29 02:56:56,388] [main] WARN com.google.gerrit.sshd.SshDaemon : Disabling cipher aes256-cbc: Illegal key size; try installing unlimited cryptography extension
[2016-07-29 02:56:56,390] [main] WARN com.google.gerrit.sshd.SshDaemon : Disabling cipher aes256-ctr: Illegal key size; try installing unlimited cryptography extension
[2016-07-29 02:56:56,393] [main] WARN com.google.gerrit.sshd.SshDaemon : Disabling cipher arcfour256: Illegal key size or default parameters; try installing unlimited cryptography extension
[2016-07-29 02:56:56,425] [main] WARN com.google.gerrit.server.config.GitwebCgiConfig : gitweb not installed (no /usr/lib/cgi-bin/gitweb.cgi found)
[2016-07-29 02:56:56,882] [main] INFO org.eclipse.jetty.util.log : Logging initialized @14808ms
[2016-07-29 02:56:56,950] [main] INFO com.google.gerrit.server.git.LocalDiskRepositoryManager : Defaulting core.streamFileThreshold to 45m
[2016-07-29 02:56:56,999] [main] ERROR com.google.gerrit.pgm.Daemon : Unable to start daemon
com.google.inject.ProvisionException: Unable to provision, see the following errors:
1) Schema not yet initialized. Run init to initialize the schema:
$ java -jar gerrit.war init -d /home/watasianata/gerrit_review
1 error
at com.google.gerrit.server.schema.SchemaVersionCheck.start(SchemaVersionCheck.java:56)
at com.google.gerrit.lifecycle.LifecycleManager.start(LifecycleManager.java:74)
at com.google.gerrit.pgm.Daemon.start(Daemon.java:302)
at com.google.gerrit.pgm.Daemon.run(Daemon.java:203)
at com.google.gerrit.pgm.util.AbstractProgram.main(AbstractProgram.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.google.gerrit.launcher.GerritLauncher.invokeProgram(GerritLauncher.java:159)
at com.google.gerrit.launcher.GerritLauncher.mainImpl(GerritLauncher.java:100)
at com.google.gerrit.launcher.GerritLauncher.main(GerritLauncher.java:56)
at Main.main(Main.java:25)
1)原因1,google搜素到有如下可能,就是我们在新的gerrit的gerrit.config中增加了如下索引的配置
[index] type = LUCENE
而我们的系统中,并未安装Lucene,因此参照网上的例子安装下Lucene(http://keping.me/ubuntu%E4%B8%8Blucene%E7%8E%AF%E5%A2%83%E6%90%AD%E9%85%8D/)。
2)Lucene安装完毕了,试一下,发现仍然报上述错误。
万般无奈之下,只能按照提示重新跑了一遍
java -jar gerrit.war init -d /home/watasianata/gerrit_review
逐个参数检查,终于发现原来是在安装Lucene时,将原本jkd1.7的环境改为了jdk1.8,而gerrit却仍然采用了jdk1.7的配置,能不出错吗?
赶紧将
user = watasianata
javaHome = /usr/local/devtools/jdk1.8.0_45/jre
改好。
再次试,这次仍然出错:
[2016-07-29 03:24:10,152] [main] INFO com.google.gerrit.server.plugins.PluginLoader : Loaded plugin reviewnotes, version v2.12.3
[2016-07-29 03:24:10,214] [main] INFO com.google.gerrit.server.plugins.PluginLoader : Loaded plugin singleusergroup, version v2.12.3
[2016-07-29 03:24:10,216] [main] ERROR com.google.gerrit.pgm.Daemon : Unable to start daemon
com.google.inject.ProvisionException: Unable to provision, see the following errors:
1) No index versions ready; run Reindex
1 error
at com.google.gerrit.lucene.LuceneVersionManager.start(LuceneVersionManager.java:124)
at com.google.gerrit.lifecycle.LifecycleManager.start(LifecycleManager.java:74)
at com.google.gerrit.pgm.Daemon.start(Daemon.java:302)
at com.google.gerrit.pgm.Daemon.run(Daemon.java:203)
at com.google.gerrit.pgm.util.AbstractProgram.main(AbstractProgram.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.google.gerrit.launcher.GerritLauncher.invokeProgram(GerritLauncher.java:159)
at com.google.gerrit.launcher.GerritLauncher.mainImpl(GerritLauncher.java:100)
at com.google.gerrit.launcher.GerritLauncher.main(GerritLauncher.java:56)
at Main.main(Main.java:25)
这次的信息明确多了,直接重新reindex一次,
java -jar ~/tool/gerrit-2.12.3.war reindex
好啦!
[gerrit]
basePath = git //指定被gerrit管理的所有git库存放位置,即review_site_project/git/
canonicalWebUrl = http://42.62.42.75:8090/project
//指定web访问gerrit的网址//填自己的ip和端口号,勿完全抄
$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
ServerName 192.168.134.59
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On
Order deny,allow
Allow from all
AuthType Basic
AuthName "Gerrit Code Review"
AuthBasicProvider file
AuthUserFile ../../../etc/apache2/passwords
//指定http登录认证的的paassword文件所在位置,放哪都行,根据后来 sudo htpasswd -cb /etc/apache2/passwords admin pwxxx 来定。Require valid-user
保存退出
$cd /etc/apache2/sites-enabled/
$sudo ln ../sites-available/gerrit .
2.创建passwd文件,添加gerrit登录用户,-c参数为创建,仅限第一次添加用户时使用
$sudo htpasswd -cb /etc/apache2/passwords admin passwordxxx
第二次添加其他用户时,不要加-c了:
$sudo htpasswd -b /etc/apache2/passwords test test
3继续配置apache2
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 等
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!
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
No apache MPM package installed
$sudo apt-get install apache2-mpm-worker
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
ServerName localhost
sudo /etc/init.d/apache2 restart
$review_site_project/bin/gerrit.sh start
在浏览器地址栏中输入
192.168.11.73/project/
注:Subdirectory on proxy server [/]:选择直接跳过 则192.168.11.73:80
在显示的登录框中输入用户名/密码,
即之前配置passwords
$sudo htpasswd -cb /etc/apache2/passwords admin passwordxx
admin