一:安装前准备
配置管理gerrit的专属账号:
sudo adduser gerrit
sudo usermod -a -G sudo gerrit //分配sudo 权限
sudo su gerrit
java、git环境:
sudo apt-get update
sudo apt-get install openjdk-18-jdk
sudo apt-get install git
二:Apache2安装和配置
sudo apt-get install apache2
cd /etc/apache2
创建httpd.conf
sudo touch /etc/apache2/httpd.conf
sudo vim httpd.conf
文件写入以下内容:
*注意反射代理的端口号和实际gerrit试用的端口不一样,本文实际使用8080作为gerrit的端口号,8091作为反射代理的端口号
<VirtualHost *:8091>
#这里是反射代理的端口号,
ServerName 192.168.8.***
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location "/login/">
AuthType Basic
AuthName "Gerrit Code Review"
Require valid-user
AuthBasicProvider file
AuthUserFile /home/gerrit/review_site/passwords
#这个路径是gerrit账户密码管理,后续的步骤中会创建此文件。路径有写正确
</Location>
AllowEncodedSlashes On
ProxyPass / http://192.168.8.191:8091/
ProxyPassReverse / http://192.168.8.191:8091/
</VirtualHost>
apache2.conf末尾添加一行配置信息:
sudo vim /etc/apache2/apache2.conf
ports.conf末尾添加一行配置信息:
Listen 8080
开启SSL、Proxy、Rewrite等模块:
cd /etc/apache2/mods-enabled
sudo ln -s ../mods-available/proxy.load
sudo ln -s ../mods-available/proxy.conf
sudo ln -s ../mods-available/proxy_http.load
sudo ln -s ../mods-available/proxy_balancer.conf
sudo ln -s ../mods-available/proxy_balancer.load
sudo ln -s ../mods-available/rewrite.load
sudo ln -s ../mods-available/ssl.conf
sudo ln -s ../mods-available/ssl.load
sudo ln -s ../mods-available/slotmem_shm.load
sudo ln -s ../mods-available/socache_shmcb.load
三:安装Gerrit
官网下载gerrit安装包并放入需要安装gerrit的磁盘路径,本文使用的是/home/ssd1/gerrit
cd /home/ssd11/gerrit
java -jar gerrit-3.9.1.war init -d ~/review_site
安装时需要注意弹出的内容:
Location of Git repositories [git]: 代码库绝对路径
本文写的是/home/ssd1/gerrit/review_site/git
完成之后配置gerrit.config文件
sudo vim /home/ssd1/gerrit/review_site/etc/gerrit.config
[gerrit]
basePath = /home/ssd1/gerrit/review_site/git
canonicalWebUrl = http://192.168.8.***:8080/
serverId = 993de4f7-1910-47ed-85f7-76dcbfb7af22
[container]
javaOptions = "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"
javaOptions = "-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance"
user = gerrit
javaHome = /usr/lib/jvm/java-18-openjdk-amd64
[index]
type = lucene
[auth]
type = HTTP
[receive]
enableSignedPush = false
[sendemail]
smtpServer = localhost
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = proxy-http://*:8091/
[cache]
directory = cache
[gitweb]
type = gitweb
cgi = /usr/lib/cgi-bin/gitweb.cgi
创建gerrit管理员账号:
touch /home/gerrit/review_site/passwords
*这里要和上文配置的httpd.conf里的密码路径要一致
sudo htpasswd -b /home/gerrit/review_site/passwords admin 密码
四:安装gitweb
sudo apt-get install gitweb
dpkg -L gitweb //查看配置信息
配置信息如下:
/.
/etc
/etc/apache2
/etc/apache2/conf-available
/etc/apache2/conf-available/gitweb.conf
/etc/gitweb.conf
/usr
/usr/lib
/usr/lib/cgi-bin
/usr/share
/usr/share/doc
/usr/share/doc/gitweb
/usr/share/doc/gitweb/README
/usr/share/doc/gitweb/README.Debian
/usr/share/doc/gitweb/copyright
/usr/share/doc/gitweb/examples
/usr/share/doc/gitweb/examples/index.aux-generation
/usr/lib/cgi-bin/gitweb.cgi
/usr/share/doc/gitweb/changelog.Debian.gz
五: 大工告成
重启Apache2和Gerrit
sudo /home/ssd1/gerrit/review_site/bin/gerrit.sh restart
sudo /etc/init.d/apache2 restart
如果重启gerrit失败,进入review_site/log查看error_log
一切都成功之后输入gerrit网址
完成!
========================================
问题1:git clone报错:
在.ssh的config文件的首行加入:
PubkeyAcceptedKeyTypes +ssh-rsa
问题2:后面重启遇到失败的问题,报错日志如下:
ERROR com.google.gerrit.pgm.Daemon : Unable to start daemon
com.google.inject.ProvisionException: Unable to provision, see the following errors:
1) [Guice/ErrorInjectingConstructor]: LockObtainFailedException: Lock held by another program: /home/ssd1/gerrit/review_site/index/changes_0084/open/write.lock
at LuceneChangeIndex.<init>(LuceneChangeIndex.java:139)
while locating ChangeIndex annotated with @UniqueAnnotations$Internal(7)
Learn more:
https://github.com/google/guice/wiki/ERROR_INJECTING_CONSTRUCTOR
1 error
猜测是重启遇到数据库被锁定的问题
ps aux | grep gerrit //查看占用进程的id
kill id
再重启就好了
参考文档:
ubuntu18.04搭建gerrit+gitweb代码审核系统(gerrit-3.2.3,自己亲手搭建经验总结贴)-CSDN博客
gerrit重启遇到h2数据库被锁定问题_gerrit重启遇到h2数据库被锁定问题_风听雨阁的博客-csdn博客-CSDN博客