安裝環境
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
2.安裝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
,也就是其他組的使用者也擁有了讀取和執行的權利。