1、update
2、updategrale
一:安装前准备
配置管理gerrit的专属账号:(本次测试安装我用的ROOT)
sudo adduser gerrit
sudo usermod -a -G sudo gerrit //分配sudo 权限
sudo su gerrit
java、git环境:
sudo apt-get update
sudo apt-get install openjdk-16-jdk
sudo apt-get install git
二:Apache2安装和配置
sudo apt-get install apache2
cd /etc/apache2
创建httpd.conf
sudo touch /etc/apache2/httpd.conf
sudo vi httpd.conf
文件写入以下内容:
*注意反射代理的端口号和实际gerrit试用的端口不一样,本文实际使用8080作为gerrit的端口号,8091作为反射代理的端口号
<VirtualHost *:8080>
#这里是反射代理的端口号,ServerName 10.20.26.45ProxyRequests OffProxyVia OffProxyPreserveHost On<Proxy *>Order deny,allowAllow from all</Proxy><Location "/login/">AuthType BasicAuthName "Gerrit Code Review"Require valid-userAuthBasicProvider fileAuthUserFile /mnt/data/review_site/passwords#这个路径是gerrit账户密码管理,后续的步骤中会创建此文件。路径有写正确</Location>AllowEncodedSlashes OnProxyPass / http://10.20.26.45:8091/ProxyPassReverse / http://10.20.26.45:8091/</VirtualHost>
apache2.conf末尾添加一行配置信息:
sudo vim /etc/apache2/apache2.conf文末添加:
Include httpd.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的磁盘路径,本文使用的是/mnt/data/
cd /mnt/data/soft
wget https://gerrit-releases.storage.googleapis.com/gerrit-3.4.0.war
java -jar gerrit-3.9.1.war init -d /mnt/data/
安装时需要注意弹出的内容:
Location of Git repositories [git]: 代码库绝对路径
本文写的是/mnt/data/git
完成之后配置gerrit.config文件,这一点很重要,安装期间写错了,可以再以下配置文件更改
sudo vim /mnt/data/etc/gerrit.config
[gerrit]#basePath = /home/gerrit/review_site/gitbasePath = gitcanonicalWebUrl = http://10.20.26.45: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 = gerritjavaHome = /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://10.20.26.45:8091/
[cache]directory = cache
[gitweb]type = gitwebcgi = /usr/lib/cgi-bin/gitweb.cgi
创建gerrit管理员账号:
touch /mnt/data/review_site/passwords
*这里要和上文配置的httpd.conf里的密码路径要一致
sudo htpasswd -b /mnt/data/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 /mnt/data/review_site/bin/gerrit.sh restart
sudo /etc/init.d/apache2 restart
如果重启gerrit失败,进入review_site/log查看error_log
一切都成功之后输入gerrit网址
http://10.20.26.45:8080
完成!
cd /mnt/data/review_site
sudo htpasswd -b passwords username password //创建用户
========================================
问题1:git clone报错:
在.ssh的config文件的首行加入:
PubkeyAcceptedKeyTypes +ssh-rsa
问题2:后面重启遇到失败的问题,报错日志如下:
猜测是重启遇到数据库被锁定的问题
ps aux | grep gerrit //查看占用进程的id
kill id
再重启就好了
问题三:500 Internal server error
nginx进程用户(www-data)无权访问/home/gerrit, 需要赋权:
ps -ef | grep nginx
解决:
setfacl -R -m u:www-data:rx /home/gerrit
问题四:页面无法打开带目录的仓库
在httppd.conf中加入:
AllowEncodedSlashes NoDecode