文章目录
#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的某个选项错误导致。