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的某個選項錯誤導致。

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