Gerrit搭建(Gerrit + mysql + ldap)

文章目录


#JDK配置
检查java是否以安装,如果没有如下命令则安装:

ts@ts-OptiPlex-3020:~$ java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

使用源安装JDK:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default

设置环境变量(vi ~/.bashrc)(不设置好像也没问题):

JAVA_HOME=/usr/java/jdk1.8.0_101
JRE_HOME=$JAVA_HOME/jre
JAVA_BIN=$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME PATH CLASSPATH

使用源安装时,默认的安转路径是/usr/lib/jvm/java-8-oracle。
为了让更改立即生效,请在终端执行如下命令:

source ~/.bashrc

#下载gerrit
gerrit 发行版
我下载的
#安装gerrit
创建一个用户(不创建也行):

  $ sudo adduser gerrit
  $ sudo su gerrit

安装:

$ java -jar gerrit-2.14.9.war init -d review_site

review_site 会在当前目录下创建一个这样的文件夹,输入上面命令,就会进入交互安装模式:

Create '/home/ts/gerrit/review_site' [Y/n]? 回车
Location of Git repositories   [git]: 回车
Database server type           [h2]: mysql
Gerrit Code Review is not shipped with MySQL Connector/J 5.1.41
**  This library is required for your configuration. **
Download and install it now [Y/n]? 回车
Server hostname                [localhost]:回车  #你的主机要有mysql
Server port                    [(mysql default)]: 3306
Database name                  [reviewdb]: 回车
Database username              [ts]: gerrit  #随便起一个名字
gerrit's password              : #输入密码
Type                           [lucene/?]: 回车
Authentication method          [openid/?]: ldap
Git/HTTP authentication        [http/?]: http
LDAP server                    [ldap://localhost]:   #需要有ldap服务,没有的装
Use SSL                        [y/N]? 回车
LDAP username                  :    #输入一个ldap中存在的账户名和密码等,这个帐号用于LDAP帐号登录Gerrit时,查询LDAP帐号密码合法性
Enable signed push support     [y/N]? 回车
Install Verified label         [y/N]? 回车
SMTP server hostname           [localhost]: 回车 #SMTP服务还没有配置,和smtp相关的都选默认了
Run as                         [ts]: gerrit
后面的选项也都选了默认(回车)

配置完成后肯定是失败的,因为mysql还没有配置,如果没有mysql服务的,先安装:

$ sudo apt-get install mysql-server

安装的过程中会让你输入root用户的密码。
登录到mysql,创建gerrit用户,以及reviewdb数据库:

$ mysql -uroot -p密码
mysql> 
mysql> CREATE USER 'gerrit'@'localhost' IDENTIFIED BY '密码'; #和你上面安装时的相同
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE DATABASE reviewdb;
Query OK, 1 row affected (0.00 sec)

mysql> 
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

crtl + z 退出mysql。开启mysql服务:

$ service mysql restart

再次输入:

java -jar gerrit-2.14.9.war init -d review_site

如果提示这种错误:

fatal:   caused by java.sql.SQLException: Access denied for user 'gerrit'@'localhost' (using password: YES)

但是mysql -ugerrit -p密码可以登录mysql时,是因为你安装时的密码和你创建账户时的密码不同。

如果出现这种错误:

CREATE TABLE account_group_by_id_aud (
added_by INT DEFAULT 0 NOT NULL,
removed_by INT,
removed_on TIMESTAMP NULL DEFAULT NULL,
group_id INT DEFAULT 0 NOT NULL,
include_uuid VARCHAR(255) BINARY DEFAULT '' NOT NULL,
added_on TIMESTAMP NOT NULL
,PRIMARY KEY(group_id,include_uuid,added_on)
)
	at com.google.gwtorm.jdbc.JdbcExecutor.execute(JdbcExecutor.java:44)
	at com.google.gwtorm.jdbc.JdbcSchema.createRelations(JdbcSchema.java:134)
	at com.google.gwtorm.jdbc.JdbcSchema.updateSchema(JdbcSchema.java:104)
	at com.google.gerrit.server.schema.SchemaCreator.create(SchemaCreator.java:81)
	at com.google.gerrit.server.schema.SchemaUpdater.update(SchemaUpdater.java:108)
	at com.google.gerrit.pgm.init.BaseInit$SiteRun.upgradeSchema(BaseInit.java:386)
	at com.google.gerrit.pgm.init.BaseInit.run(BaseInit.java:143)
	at com.google.gerrit.pgm.util.AbstractProgram.main(AbstractProgram.java:61)
	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:498)
	at com.google.gerrit.launcher.GerritLauncher.invokeProgram(GerritLauncher.java:204)
	at com.google.gerrit.launcher.GerritLauncher.mainImpl(GerritLauncher.java:108)
	at com.google.gerrit.launcher.GerritLauncher.main(GerritLauncher.java:63)
	at Main.main(Main.java:24)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Invalid default value for 'added_on'
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
	at com.mysql.jdbc.Util.getInstance(Util.java:408)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:943)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2497)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2455)
	at com.mysql.jdbc.StatementImpl.executeInternal(StatementImpl.java:839)
	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:739)
	at com.google.gwtorm.jdbc.JdbcExecutor.execute(JdbcExecutor.java:42)

该问题解决方案是使用MySQL root用户登录 设置
set global explicit_defaults_for_timestamp=1;
重新安装gerrit即可 新版本的mysql timestamp默认值的问题需要手动配置一下。

#Gerrit启动

etc/gerrit.config 文件是Gerrit的配置文件,就是刚刚交互安装时输入的一些配置参数,可以直接修改重启生效。修改该文件内canonicalWebUrl变量为http://本机的IP地址:端口号。
$ ./review_site/bin/gerrit.sh start
staring Gerrit Code Review:OK

相关命令还有:

./review_site/bin/gerrit.sh restart
./review_site/bin/gerrit.sh stop

在网页下http://localhost:端口号,可以看到下面界面,如果输入密码登录时提示:

Authentication unavailable at this time.

则是因为etc/gerrit.config 内的ldap的某个选项错误导致。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章