Centos 安裝配置gerrit


 

關閉selinux,不然nginx的反向代理會報錯connect() to 127.0.0.1:8080 failed (13: Permission denied) while connecting to upstream,或者使用這個命令:

setsebool -P httpd_can_network_connect 1

關閉selinux:

修改/etc/selinux/config 文件

將SELINUX=enforcing改為SELINUX=disabled

reboot

 

首先安裝jdk

yum install java java-devel,如果直接yum install java會自動找到相應的包的,我這里安裝的是openjdk的1.7.0版本,目錄可以自己看到。

配置java環境變量:

vim /etc/profile

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.99-2.6.5.0.el7_2.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

然后source /etc/profile

javac有輸出說明安裝成功

安裝mysql,請看http://www.cnblogs.com/juandx/p/5208613.html

然后給gerrit建一個庫,並且授權

mysql> create database gerritdb;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON gerritdb.* TO 'gerrituser'@'localhost' IDENTIFIED BY 'gerritpass';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON gerritdb.* TO 'gerrituser'@'%' IDENTIFIED BY 'gerritpass';

 

下載gerrit的java包https://www.gerritcodereview.com/download/gerrit-2.12.2.war

然后安裝就行啦,這里會提示你很多選擇

[gerrit@gerrit ~]$ java -jar gerrit-2.12.2.war init -d review_site
Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore

*** Gerrit Code Review 2.12.2
*** 


*** Git Repositories
*** 

Location of Git repositories   [/home/gerrit/git]:          這里一定要寫git放的目錄,沒有的話自己會創建的

*** SQL Database
*** 

Database server type           [mysql]:                     db這個不用說吧
Server hostname                [localhost]: 
Server port                    [(mysql default)]: 
Database name                  [gerritdb]: 
Database username              [gerrituser]: 
Change gerrituser's password   [y/N]? 

*** Index
*** 

Type                           [LUCENE/?]:                          默認就好,直接回車

The index must be rebuilt before starting Gerrit:
  java -jar gerrit.war reindex -d site_path

*** User Authentication
*** 

Authentication method          [HTTP/?]:                            一定要寫http,不然就不是反向代理了,寫development_become_any_account就隨意登陸了
Get username from custom HTTP header [Y/n]? n                       一定要n,不然反向代理gerrit報錯為缺少一個y的header
SSO logout URL                 : 
Enable signed push support     [y/N]? n

*** Email Delivery
*** 

SMTP server hostname           [smtp.163.com]:                       25端口是163的smtp
SMTP server port               [25]: 
SMTP encryption                [NONE/?]: 
SMTP username                  [littlexiaowen@163.com]: 
Change littlexiaowen@163.com's password [y/N]? 

*** Container Process
*** 

Run as                         [gerrit]:                              這是用戶,root也可以
Java runtime                   [/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.99-2.6.5.0.el7_2.x86_64/jre]: 
Upgrade review_site/bin/gerrit.war [Y/n]? y
Copying gerrit-2.12.2.war to review_site/bin/gerrit.war

*** SSH Daemon
*** 

Listen on address              [*]: 
Listen on port                 [29418]: 

*** HTTP Daemon
*** 

Behind reverse proxy           [Y/n]? y
Proxy uses SSL (https://)      [y/N]? n
Subdirectory on proxy server   [/]: 
Listen on address              [127.0.0.1]: 
Listen on port                 [8081]: 
Canonical URL                  [http://gerrit.wenbin.com]: 

*** Plugins
*** 

Installing plugins.
Install plugin singleusergroup version v2.12.2 [Y/n]? y
version v2.12.2 is already installed, overwrite it [Y/n]? y
Install plugin commit-message-length-validator version v2.12.2 [Y/n]? y
version v2.12.2 is already installed, overwrite it [Y/n]? y
Install plugin reviewnotes version v2.12.2 [Y/n]? y
version v2.12.2 is already installed, overwrite it [Y/n]? y
Install plugin replication version v2.12.2 [Y/n]? y
version v2.12.2 is already installed, overwrite it [Y/n]? y
Install plugin download-commands version v2.12.2 [Y/n]? y
version v2.12.2 is already installed, overwrite it [Y/n]? y
Initializing plugins.
No plugins found with init steps.

Initialized /home/gerrit/review_site
[gerrit@gerrit ~]$ vim review_site/etc/gerrit.config 
[gerrit@gerrit ~]$ vim sshd_log ^C
[gerrit@gerrit ~]$ ./review_site/bin/gerrit.sh restart
Stopping Gerrit Code Review: OK
Starting Gerrit Code Review: OK
[gerrit@gerrit ~]$

 

沒辦法,報錯了很多,遇到了很多問題,但是也知道了反向代理的原理,httpd和nginx的設置,知道了原來nginx這么好用, 並發量還這么好,以后要多多了解,單線程解決並發速度更快,算法很好,錯的越多學的越多吧,一定要多看log啊

/review_gerrit/etc/gerrit.conf

[gerrit]
        basePath = /home/gerrit/git
        canonicalWebUrl = http://gerrit.wenbin.com
[database]
        type = mysql
        hostname = localhost
        database = gerritdb
        username = gerrituser
[index]
        type = LUCENE
[auth]
        type = HTTP
[receive]
        enableSignedPush = false
[sendemail]
        smtpServer = smtp.163.com
        smtpServerPort = 25
        smtpUser = littlexiaowen@163.com
from=CodeReview<littlexiaowen@163.com> 這行是自己加的,不然注冊的時候會提示失敗,這里不用寫密碼,密碼是寫在security里的另一個文件里 [container] user = gerrit javaHome = /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.99-2.6.5.0.el7_2.x86_64/jre [sshd] listenAddress = *:29418 [httpd] listenUrl = proxy-http://127.0.0.1:8081/ [cache] directory = cache

看到網上有一種修改郵件發送方式的方法:ssh ha gerrit set-account --add-email user99@163.com user99,還沒有試過 

 

先生存一個http的認證文件,創建admin用戶

# htpasswd -c /passwords admin

然后會提示輸入密碼

 

安裝nginx  yum install nginx

/etc/nginx/nginx.conf

...
# for more information. include /etc/nginx/conf.d/*.conf; server { listen 80; server_name gerrit.wenbin.com; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { auth_basic "Gerrit Code Review"; auth_basic_user_file /passwords; proxy_pass http://127.0.0.1:8081; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }

systemctl restart nginx就可以了 

 

如果使用apache,那么yum install httpd,更改配置文件

/etc/httpd/httpd.conf

 

# Defaults if commented: EnableMMAP On, EnableSendfile Off
#
#EnableMMAP off
EnableSendfile on

# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
#增加下面這些 <VirtualHost *:80> ProxyRequests Off ProxyVia Off ProxyPreserveHost On <Proxy *> Order deny,allow Allow from all </Proxy> <Location /> AuthType Basic AuthName "Gerrit Code Review" Require valid-user AuthUserFile /passwords </Location> ProxyPass /
http://127.0.0.1:8081/ </VirtualHost>

 

systemctl resatrt httpd

如果nginx報錯不能連接到8081端口,可能是selinux沒有關

設置開機啟動

sudo cp etc/gerrit.config /etc/init.d/gerrit

sudo ln -snf /etc/init.d/gerrit /etc/rc2.d/S90gerrit

sudo ln -snf /etc/init.d/gerrit /etc/rc3.d/S90gerrit

 

這樣就安裝成功了,哎。。。遇到的問題是gerrit repository not found: All-Projects,這樣是發現沒有在第二個回答中寫git目錄,如果再次出現這個錯誤,那就先在mysql中drop再create一遍db就好了。。。

 

在/review_gerrit/bin/gerrit.sh中實際代碼第一行加入

GERRIT_SITE=/home/gerrit/review_site

執行/home/gerrit/review_site/bin/gerrit.sh就可以啟動gerrit了

 

這樣在瀏覽器中訪問域名或者ip地址就ok了,輸入admin的用戶名和密碼就可以看到界面了。

會提示注冊郵箱,自己注冊個就行了,

在右上角點擊用戶,選setting設置ssh-key

在主機上執行 ssh-keygen -C ***@163.com

把公鑰放進頁面的sshkey

 

這樣就可以了,下面就需要把gitlab,gerrit,jenkins配置起來


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM