Step 1.安装Gerrit
1.安装mysql
$ rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
$ yum install mysql-community-server
$ service mysqld start
$ mysql> alter user 'root'@'localhost' identified by 'M)OKM*UHB7ygv6';
2.数据库设置
mysql> create database reviewdb;
Query OK, 1 row affected (0.03 sec)
mysql> CREATE USER 'gerrit'@'localhost' IDENTIFIED BY 'GOKM*UHB7ygv6';
Query OK, 0 rows affected (0.06 sec)
mysql> CREATE USER 'gerrit'@'127.0.0.1' IDENTIFIED BY 'GOKM*UHB7ygv6';
Query OK, 0 rows affected (0.05 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)
mysql> grant all privileges on reviewdb.* to gerrit@localhost identified by 'GOKM*UHB7ygv6';
Query OK, 0 rows affected, 1 warning (0.02 sec)
mysql> grant all privileges on reviewdb.* to gerrit@'192.168.82.144' identified by 'GOKM*UHB7ygv6';
Query OK, 0 rows affected, 1 warning (0.04 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
3.建立专有帐户
$ adduser gerrit
$ su - gerrit
4.安装gerrit
下载地址:https://gerrit-releases.storage.googleapis.com/
安装文章:https://www.gerritcodereview.com/linux-quickstart.html
- 前提需要安装jdk
- 这个命令的意思是执行安装gerrit,会在当前目录下新建一个文件夹
gerrit_site
用来作为gerrit的根目录,在这个目录中,会安装git仓库,以及gerrit的web页面,还有gerrit的bin,etc等文件夹。
然后就开始安装过程了,安装的过程会询问很多问题,有一些判断性的问题会用[y/N]
这样的形式,大写的字母表示默认,我们直接敲回车就表示采用默认的安装选项- 我们安装的时候,可以只在
Authentication method
时输入http
,其他全部回车用默认值,因为其他配置我们待会可以通过etc/gerrit.config
文件进行修改
$ java -jar gerrit-3.0.1.war init -d review_site
Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore
[2019-08-01 11:12:56,738] [main] INFO com.google.gerrit.server.config.GerritServerConfigProvider : No /home/gerrit/review_site/etc/gerrit.config; assuming defaults
*** Gerrit Code Review 3.0.1
***
Create '/home/gerrit/review_site' [Y/n]? Y
*** Git Repositories
***
Location of Git repositories [git]:
*** Index
***
Type [lucene/?]:
*** User Authentication
***
Authentication method [openid/?]: http
Get username from custom HTTP header [y/N]?
SSO logout URL :
Enable signed push support [y/N]?
*** Review Labels
***
Install Verified label [y/N]?
*** Email Delivery
***
SMTP server hostname [localhost]: smtp.ym.163.com
SMTP server port [(default)]: 465
SMTP encryption [none/?]:
SMTP username [gerrit]: digital-zabbix@gadmobe.net
digital-zabbix@gadmobe.net's password :
confirm password :
*** Container Process
***
Run as [gerrit]:
Java runtime [/usr/local/src/jdk1.8.0_131/jre]:
Copy gerrit-3.0.1.war to review_site/bin/gerrit.war [Y/n]? Y
Copying gerrit-3.0.1.war to review_site/bin/gerrit.war
*** SSH Daemon
***
Listen on address [*]:
Listen on port [29418]:
Generating SSH host key ... rsa... ed25519... ecdsa 256... ecdsa 384... ecdsa 521... done
*** HTTP Daemon
***
Behind reverse proxy [y/N]?
Use SSL (https://) [y/N]?
Listen on address [*]:
Listen on port [8081]:
Canonical URL [http://AnnaLinux:8081/]:
*** Cache
***
*** Plugins
***
Installing plugins.
Install plugin codemirror-editor version v3.0.1 [y/N]? y
Installed codemirror-editor v3.0.1
Install plugin commit-message-length-validator version v3.0.1 [y/N]? y
Installed commit-message-length-validator v3.0.1
Install plugin delete-project version v3.0.1 [y/N]? y
Installed delete-project v3.0.1
Install plugin download-commands version v3.0.1 [y/N]? y
Installed download-commands v3.0.1
Install plugin gitiles version v3.0.1 [y/N]? y
Installed gitiles v3.0.1
Install plugin hooks version v3.0.1 [y/N]? y
Installed hooks v3.0.1
Install plugin plugin-manager version v3.0.1 [y/N]? y
Installed plugin-manager v3.0.1
Install plugin replication version v3.0.1 [y/N]? y
Installed replication v3.0.1
Install plugin reviewnotes version v3.0.1 [y/N]? y
Installed reviewnotes v3.0.1
Install plugin singleusergroup version v3.0.1 [y/N]? y
Installed singleusergroup v3.0.1
Install plugin webhooks version v3.0.1 [y/N]? y
Installed webhooks v3.0.1
Initializing plugins.
Initialized /home/gerrit/review_site
Reindexing projects: 100% (2/2) with: reindex --site-path review_site --threads 1 --index projects
Reindexed 2 documents in projects index in 0.3s (7.6/s)
4.配置gerrit
$ vim /home/gerrit/review_site/etc/gerrit.config
[gerrit]
basePath = git
canonicalWebUrl = http://192.168.82.154:8081/
serverId = 5c9b8389-74b7-46cc-b46b-b60a51cb1b19
[database]
type = mysql
hostname = AnnaLinux
port = 3306
database = reviewdb
username = gerrit
password = "GOKM*UHB7ygv6"
[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/local/src/jdk1.8.0_131/jre
[index]
type = LUCENE
[auth]
type = HTTP
[receive]
enableSignedPush = false
[sendemail]
smtpServer = smtp.ym.163.com
smtpServerPort = 465
smtpUser = digital-zabbix@gadmobe.net
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = http://*:8081/
[cache]
directory = cache
[gitweb]
type = gitweb
cgi = /var/www/git/gitweb.cgi
5.nginx 配置
$ vim /usr/local/nginx/conf/vhost/gerrit.conf
server {
listen *:81;
server_name gerrit.microwu.com;
allow all;
deny all;
access_log /var/log/gerrit_access.log;
error_log /var/log/gerrit_error.log;
auth_basic "Welcomme to Gerrit Code Review Site!";
auth_basic_user_file /home/gerrit/gerrit.password;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
}
6.登录认证文件
- 那登录认证有了,我们怎么登录呢??就需要前面的
auth_basic_user_file
文件了。- 这里我们需要用apach的
htpasswd
工具来新建这个文件,这也是为什么我们虽然不用到apache的反向代理,仍然需要apache的原因。- 我们通过下面的命令来在
/home/gerrit/
路径下创建认证文件httpd 这个命令的详细解释:
- -c表示create,也就是新建的意思
- 接下来跟上文件要创建的目录以及文件名,我们直接用绝对路径,表示将在
/home/gerrit
目录下新建一个gerrit.password
文件- 最后的admin表示要写入的用户名
接下来你需要在命令行中连续输入两次密码,我们就为admin用户设置好了密码,可以通过vim来查看下这个密码文件,会发现里面是经过加密的。
如果我们想新建别的用户,或者修改某个用户的密码,只需要把
-c
改成-m
就好了,如果还是用-c
并且路径不变的话,就会覆盖掉原来的文件。
$ htpasswd -c /home/gerrit/gerrit.password admin
7.注意事项
- 如果你是在root用户下输入上面的命令 创建了
gerrit.password
文件到/home/gerrit/
目录中,你会发现在登录的时候永远登录不成功,永远会得到服务器500的错误页面。原因是/homt/gerrit/
文件夹的权限问题。- 我们知道,
/home/gerrit/
是我们之前新建的gerrit用户的,那么这个文件夹的权限是700,也就是只允许gerrit用户访问,其他组的用户是访问不了的,虽然这个文件的权限拥有root用户的所有权限,但是因为它放在700权限的文件夹下面,所以同样其他用户是访问不到的。- 这个问题之前纠缠了我好久,通过nginx的日志可以清楚的看到访问拒绝的错误. 所以,我们需要通过下面的命令,来改变gerrit目录的权限
$ chmod 755 /home/gerrit
8.登录gerrit
url: http://192.168.82.154:8081/dashboard/self
user:admin password:admin
说明:gerrit配置了之后,第一个登录成功的用户,自动成为管理员,gerrit会给他分配一个id,1000000
,之后登录的成员会依次自增1,初始时 Full Name 和 Email Address字段都是空的
Step 2.安装gitweb
说明:默认gitweb是安装到apache目录中的,也就是/var/www/
目录下会有一个git
文件夹,专门用来显示gitweb页面
$ yum install gitweb
1.修改gitweb配置文件
说明:默认的文件中所有的内容应该都被注释掉了,我们直接在最后面执行git仓库的位置:
$ vim /etc/gitweb.conf
*************************
*************************
$projectroot = "/home/gerrit/gerrit_site/git"