文章目錄
#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的某個選項錯誤導致。