gerrit+nginx+centos安裝配置

lonecloud發表於2017-09-15

安裝環境

  centos 6.8

  gerrit-full-2.5.2.war 下載地址:https://gerrit-releases.storage.googleapis.com/gerrit-full-2.5.2.war

  nginx 1.13

  Java 1.8

1.安裝Jdk

Centos/linux下的JDK安裝

2.安裝nginx

centos/linux下的安裝Nginx

3.安裝配置

  1.下載gerrite

wget https://gerrit-releases.storage.googleapis.com/gerrit-full-2.5.2.war

   2.新建gerrit使用者方便管理

# adduser gerrit
# passwd gerrit
# su gerrit

   3.安裝gerrit

請在gerrite使用者下執行該命令

$ java -jar gerrit-2.13.4.war init -d ~/gerrit_site

這個命令的意思是執行安裝gerrit,會在當前目錄下新建一個資料夾 gerrit_site 用來作為gerrit的根目錄,在這個目錄中,會安裝git倉庫,以及gerrit的web頁面,還有gerrit的bin,etc等資料夾。

安裝過程中

建議設定

Authentication method          [OPENID/?]:設定為http
*** Gerrit Code Review 2.5.2
***

Create '/home/gerrit/gerrit_site' [Y/n]?

*** Git Repositories
***

Location of Git repositories   [git]:

*** SQL Database
***

Database server type           [H2/?]:

*** User Authentication
***
#注意這裡需要設定為http
Authentication method          [OPENID/?]: http
Get username from custom HTTP header [y/N]?
SSO logout URL                 :

*** Email Delivery
***

SMTP server hostname           [localhost]:
SMTP server port               [(default)]:
SMTP encryption                [NONE/?]:
SMTP username                  :

*** Container Process
***

Run as                         [gerrit]:
Java runtime                   [/usr/java/jdk1.8.0_144/jre]:
Copy gerrit.war to /home/gerrit/gerrit_site/bin/gerrit.war [Y/n]?
Copying gerrit.war to /home/gerrit/gerrit_site/bin/gerrit.war

*** SSH Daemon
***

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

Gerrit Code Review is not shipped with Bouncy Castle Crypto v144
  If available, Gerrit can take advantage of features
  in the library, but will also function without it.
Download and install it now [Y/n]?
Downloading http://www.bouncycastle.org/download/bcprov-jdk16-144.jar ...


 !! FAIL !!


TMPJ=$TMP/j$$


error: http://www.bouncycastle.org/download/bcprov-jdk16-144.jar: 302 Found


Please download:

  http://www.bouncycastle.org/download/bcprov-jdk16-144.jar

and save as:

  /home/gerrit/gerrit_site/lib/bcprov-jdk16-144.jar

Press enter to continue Continue without this library  [Y/n]? Generating SSH host key ... rsa(simple)... done



server {
*** HTTP Daemon
***

Behind reverse proxy           [y/N]? Use SSL (https://)             [y/N]?
Listen on address              [*]:
Listen on port                 [8080]:

*** Plugins
***

Prompt to install core plugins [y/N]?

Initialized /home/gerrit/gerrit_site
Executing /home/gerrit/gerrit_site/bin/gerrit.sh start
Starting Gerrit Code Review: OK
Waiting for server to start ... OK
Opening browser ...
Please open a browser and go to http://localhost:8080/#/admin/projects/

  4.修改gerrite.sh檔案

當你進入到/home/gerrit/gerrit_site/bin/gerrit.sh執行stop命令是會報錯

** ERROR: GERRIT_SITE not set

解決方案:

在gerrit.sh中加入如下

GERRIT_SITE=/home/gerrit/gerrit_site

 

關閉gerrite

./gerrit.sh stop

 

5.配置gerrite

[gerrit]
        #設定程式碼目錄預設為git
        basePath = /home/gerrit/gerrit_code
[database]
        type = H2
        database = db/ReviewDB
[auth]
        type = HTTP
[sendemail]
        enable = true
        smtpServer = 郵箱ftp地址
        smtpServerPort = 465
        smtpEncryption = ssl
        smtpUser =郵箱使用者名稱xxx@qq.com
        smtpPass = 郵箱密碼
        sslVerify = false
        from = Code Review <gerrit@xxx.cn>
[container]
        user = gerrit
        javaHome = /usr/java/jdk1.8.0_144/jre
[sshd]
        listenAddress = *:29418
[httpd]
        #設定反向代理埠
        listenUrl = proxy-http://*:8081/
[cache]
        directory = cache

 

   配置nginx

看這篇文章:配置nginx伺服器 —— Nginx新增多個二級子域名

後加入一個檔案gerrit.xxx.cn

注意使用root使用者

加入如下程式碼

server {
     listen 80;
     server_name gerrit.lonecloud.cn;
     allow   all;
     deny    all;

     auth_basic "Welcomme to Gerrit Code Review Site!";
     auth_basic_user_file /home/gerrit/gerrit_site/gerrit.password;

     location / {
        proxy_pass  http://127.0.0.1:8081;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
     }
   }

重啟nginx

nginx -s restart

 

登入認證檔案

安裝htpasswd命令就是httpd中的命令

yum -y install httpd

那登入認證有了,我們怎麼登入呢??就需要前面的 auth_basic_user_file 檔案了。

這裡我們需要用apach的 htpasswd 工具來新建這個檔案,這也是為什麼我們雖然不用到apache的反向代理,仍然需要apache的原因。

我們通過下面的命令來在 /home/gerrit/gerrit_site路徑下建立認證檔案

$ htpasswd -c /home/gerrit/gerrit_site/gerrit.password admin

 

這個命令的詳細解釋:

  • -c表示create,也就是新建的意思
  • 接下來跟上檔案要建立的目錄以及檔名,我們直接用絕對路徑,表示將在 /home/gerrit 目錄下新建一個 gerrit.password 檔案
  • 最後的admin表示要寫入的使用者名稱

接下來你需要在命令列中連續輸入兩次密碼,我們就為admin使用者設定好了密碼,可以通過vim來檢視下這個密碼檔案,會發現裡面是經過加密的。

如果我們想新建別的使用者,或者修改某個使用者的密碼,只需要把 -c 改成 -m 就好了,如果還是用 -c 並且路徑不變的話,就會覆蓋掉原來的檔案。

例如:我們想要新增一個使用者,master,允許其通過頁面登入,只需要執行下面的命令就好了

$ htpasswd -m /home/gerrit/gerrit_site/gerrit.password master

 

同樣的輸入兩遍密碼,就設定好了master使用者的登入密碼了。

注意 :

如果你是在root使用者下輸入上面的命令 建立了 gerrit.password 檔案到 /home/gerrit/ 目錄中,你會發現在登入的時候永遠登入不成功,永遠會得到伺服器500的錯誤頁面。原因是 /homt/gerrit/ 資料夾的許可權問題。

我們知道, /home/gerrit/ 是我們之前新建的gerrit使用者的,那麼這個資料夾的許可權是700,也就是隻允許gerrit使用者訪問,其他組的使用者是訪問不了的,雖然這個檔案的許可權擁有root使用者的所有許可權,但是因為它放在700許可權的資料夾下面,所以同樣其他使用者是訪問不到的。

這個問題之前糾纏了我好久,通過nginx的日誌可以清楚的看到訪問拒絕的錯誤。

所以,我們需要通過下面的命令,來改變gerrit目錄的許可權

$ chmod 755 /home/gerrit

這樣,當前目錄許可權就變成了 drwxr-xr-x ,也就是其他組的使用者也擁有了讀取和執行的權利。

相關文章