安裝ubuntu-14.04.5-server-amd64
我司使用的是Dell服務(wù)器,做好啟動U盤,使用工具rufus-usb。
Dell服務(wù)器的界面與普通PC不同,不過基本原理是一樣的,BIOS設(shè)置為UEFI。
開機(jī)時按F11,進(jìn)入BootManager,選擇啟動項,其中有啟動U盤的啟動項,確認(rèn)后即可開始安裝。
為方便使用,安裝的語言選擇為中文。
分區(qū)使用了整個磁盤,將原來的系統(tǒng)刪除。
安裝gitolite服務(wù)器
Gitolite介紹
Gittolite是基于git搭建一個中央代碼服務(wù)器,有以下特點:
- 支持多個用戶,多個倉庫
- 支持多個層次的權(quán)限控制,支持到倉庫的branch和tag的權(quán)限訪問
- ssh安全訪問協(xié)議
- 不需要http服務(wù)器等其他依賴,更少的資源占用
- 簡單、靈活的管理
Gitolite安裝成功后會創(chuàng)建一個名為gitolite-admin的特殊倉庫,這個倉庫里面管理著Gitolite的配置文件,在這些配置文件中可以添加刪除用戶、倉庫,也可以定義一些權(quán)限控制規(guī)則。
認(rèn)證與授權(quán)
Gitolite不做認(rèn)證(authentication),只做授權(quán)(authorisation)。
- 認(rèn)證(authentication)。由ssh服務(wù)來認(rèn)證訪問賬號的合法性。
- 授權(quán)(authorisation)。授予某個賬號的訪問權(quán)限。
Gitolite安裝和啟動
Gitolite是管理Git的倉庫,所以必須要安裝Git。
安裝Gitolite
- 切換到git用戶賬號:su – git
- 安裝SSH,一般來說服務(wù)器上都已經(jīng)安裝SSH了
- 獲取Gitolite代碼,git clone git://github.com/sitaramc/gitolite
- 創(chuàng)建Gitolite安裝目錄。mkdir -p ~/bin
- 開始安裝。gitolite/install -to ~/bin
- 添加管理員公鑰。這個管理員公鑰就是對應(yīng)著擁有管理代碼倉庫的權(quán)限,非常重要。把自己的公鑰admin.pub上傳到服務(wù)器,添加到Gitolite中。gitolite setup -pk admin.pub
管理Gitolite
管理Gitolite也很簡單,它是通過一個Git倉庫來管理的。安裝好Gitolite后,會默認(rèn)生成一個gitolite-admin的倉庫。管理員可以把這個倉庫clone到本地:
git clone git@host:gitolite-admin
git clone git@host:gitolite-admin
這個倉庫有兩個目錄:
keydir,存放用戶認(rèn)證的公鑰文件目錄
conf,存放Gitolite配置的文件的目錄
gitolite.conf,gitolite配置文件
用戶
添加用戶本質(zhì)是把該用戶的公鑰文件添加到gitolite-admin倉庫中。比如想添加一個用戶foo:
把foo的公鑰文件重命名為foo.pub
把foo.pub文件放到gitolite-admin/keydir目錄中,并提交到遠(yuǎn)程倉庫
刪除用戶也類似,只不過把該用戶的的公鑰文件移出gitolite-admin倉庫。
有時候一個用戶有多個公鑰文件。這種情況下,就需要把這些同名的公鑰文件放到keydir不同的子目錄下。比如foo用戶的多個公鑰文件如下放置:
keydir/home/foo.pub
keydir/laptop/foo.pub
keydir/desktop/foo.pub
只要這些公鑰都是命名為foo.pub,在不同的目錄下不沖突。
倉庫
添加倉庫
添加一個倉庫很簡單,編輯gitolite-admin倉庫里面的gitolite-admin/conf/gitolite.conf即可。我們可以看下初始的gitolite.conf文件內(nèi)容:
repo gitolite-admin
RW+ = admin
repo testing
RW+ = @all
repo gitolite-admin
RW+ = admin
repo testing
RW+ = @all
repo name,就是定義一個名為name的倉庫??梢钥吹紾itolite里面有兩個默認(rèn)的倉庫,gitolite-admin和testing。
下面的RW+ = admin則便是這個倉庫的權(quán)限控制規(guī)則,可以看到這個倉庫只允許admin可讀可寫可管理。
我們可以用以下代碼添加一個新的bar倉庫:
repo bar
RW+ = foo
repo bar
RW+ = foo
我們在gitolite.conf文件中添加一個foo的倉庫,實際存放在服務(wù)器上的倉庫目錄名是foo.git。這個新倉庫只允許foo用戶可讀可寫可管理。
你可以把兩個具有一樣的訪問權(quán)限的倉庫定義成一行,如下:
repo a b c
RW+ = foo
R = admin
repo a b c
RW+ = foo
R = admin
這樣,a、b、c就是3個具有相同的訪問權(quán)限的倉庫了,foo用戶可以讀可寫可管理,admin用戶只能可讀。
刪除、重名倉庫
刪除倉庫稍微麻煩一點:
- 從gitolite.conf刪除倉庫的定義
- 登陸到服務(wù)器,刪除服務(wù)器上對應(yīng)的倉庫
重命名倉庫也是如此,修改gitolite.conf文件,然后修改服務(wù)器上對應(yīng)倉庫的名字。
導(dǎo)入現(xiàn)有倉庫
直接把一個倉庫放入Gitolite倉庫目錄是不行的,它有幾個要求:
- 倉庫必須是bare倉庫
- 倉庫目錄名必須以.git結(jié)尾
- 倉庫里面所有的文件和目錄的歸屬(ownded)和可寫于Gitolite用戶賬號。
- 運(yùn)行g(shù)itolite setup
用戶組和倉庫組
你可以把用戶或者倉庫定義成一個組,對這個組賦予某種屬性,就是對組內(nèi)所有的成員都賦予同樣的屬性。這對批量的處理某些問題很有幫助。
組名以@開頭,如下定義一個3個成員的組:
@developers = dilbert alice wally
也可以累積分別定義,效果跟上面一樣:
@developers = dilbert
@developers = alice
@developers = wally
你也可以把一個組放到另外一個組里面:
@developers = dilbert alice
@interns = ashok
@staff = @interns @developers
@developers = wally
注意,后來添加到develpoers組的wally并不在staff組里面。
如下是個使用組定義倉庫和它用戶的例子:
@developers = dilbert alice wally//三個用戶
@foss-repos = git gitolite//兩個倉庫
repo @foss-repos
RW+ = @developer
@developers = dilbert alice wally
@foss-repos = git gitolite
repo @foss-repos
RW+ = @developer
特殊組
@all表示所有的倉庫或者所有的用戶。
訪問權(quán)限
緊跟著一個倉庫后面的就是這個倉庫的訪問權(quán)限規(guī)則,有以下幾種權(quán)限:
R,表示可讀權(quán)限
RW,表示fast-forward push分支,創(chuàng)建新分支和tag權(quán)限。不能回轉(zhuǎn)、刪除分支
RW+,可以做任何事情
'-'表示拒絕訪問
以下面的配置為例子:
repo foo bar
RW+ = alice @teamleads
- master = dilbert @devteam
- refs/tags/v[0-9] = dilbert @devteam
RW+ dev/ = dilbert @devteam
RW = dilbert @devteam
R = @managers
- alice 和teamleads組可以做任何事情
- dilbert @devteam權(quán)限
- 可以對/dev分支做任何事情,不能寫,刪除master
- 可以fast-forward push分支,創(chuàng)建新分支和tag權(quán)限
- 除了以v開頭tag,可以創(chuàng)建其他tags
- managers只能讀倉庫
你還可以創(chuàng)建一個倉庫組,在同一個倉庫組里面的倉庫具有相同的權(quán)限,如下:
repo @myrepos
RW+ = alice
@myrepos = foo
@myrepos = bar
@myrepos = zzq
這樣,有3個倉庫foo、bar、zzq都在myrepos同一個倉庫組里面,具有相同的訪問權(quán)限。
gitolite.conf
gitolite.conf有兩個重要的作用:定義倉庫名和定義倉庫的訪問權(quán)限。
基本語法
所有的東西都是用空格分隔
可以使用#表示注釋
用戶名和倉庫名都是以字母開頭,可以包含.、_、-。用戶名還可以是電子郵件地址
組名類似用戶名,但不能是電子郵件地址
倉庫名可以包含/,用來表示目錄結(jié)構(gòu)
include其他配置
Gitolite允許你把配置放在另外的.conf文件里,然后在gitolite.conf把這些配置文件include進(jìn)來就可以了。比如include “foo.conf”,就把foo.conf文件里面的配置包括進(jìn)來了。
完成和驗證
到打印出如下結(jié)果gitolite安裝完成。
初始化空的 Git 倉庫于 /home/gitolite/repositories/gitolite-admin.git/
初始化空的 Git 倉庫于 /home/gitolite/repositories/testing.git
這是創(chuàng)建了兩個倉庫,一個是管理倉庫gitolite-admin.git,另一個是測試使用的testings.git.
現(xiàn)在要做的是要從gitolite服務(wù)器中把gitolite-admin.git拉取下來進(jìn)行project和權(quán)限的管理
遇到的問題及其說明
創(chuàng)建新用戶并同時創(chuàng)建主目錄--useradd -m xxxname
設(shè)置密碼--passwd xxxname,然后再輸入密碼
gitolite 不在 sudoers 文件中。此事將被報告
sudo命令可以讓你以root身份執(zhí)行命令,來完成一些我們這個帳號完成不了的任務(wù)。
其實并非所有用戶都能夠執(zhí)行sudo,因為有權(quán)限的用戶都在/etc/sudoers中呢。
我們可以通過編輯器來打開/etc/sudoers,或者直接使用命令visudo來搞定這件事情。
打開sudoers后,像如下那樣加上自己的帳號保存后就可以了。
# User privilege specification
root ALL=(ALL:ALL) ALL
gitolite ALL=(ALL:ALL) ALL
sudoers的權(quán)限是0440,即只有root才能讀。在你用root或sudo后強(qiáng)行保存(wq!)即可.
測試通過后開始下面的安裝
repo環(huán)境配置
概要
repo是Android為了方便管理多個git庫而開發(fā)的Python腳本。repo的出現(xiàn),并非為了取代git,而是為了讓Android開發(fā)者更為有效的利用git。
Android源碼包含數(shù)百個git庫,僅僅是下載這么多git庫就是一項繁重的任務(wù),所以在下載源碼時,Android就引入了repo。 Android官方推薦下載repo的方法是通過Linux curl命令,下載完后,為repo腳本添加可執(zhí)行權(quán)限:
$ git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ cp repo/repo . //在~bin目錄下
再將~/bin添加到環(huán)境變量,這樣就可以使用repo命令了
工作原理
repo需要關(guān)注當(dāng)前git庫的數(shù)量、名稱、路徑等,有了這些基本信息,才能對這些git庫進(jìn)行操作。通過集中維護(hù)所有g(shù)it庫的清單,repo可以方便的從清單中獲取git庫的信息。 這份清單會隨著版本演進(jìn)升級而產(chǎn)生變化,同時也有一些本地的修改定制需求,所以,repo是通過一個git庫來管理項目的清單文件的,這個git庫名字叫manifest。
當(dāng)打開repo這個可執(zhí)行的python腳本后,發(fā)現(xiàn)代碼量并不大(不超過1000行),難道僅這一個腳本就完成了AOSP數(shù)百個git庫的管理嗎?并非如此。 repo是一系列腳本的集合,這些腳本也是通過git庫來維護(hù)的,這個git庫名字叫repo。
在客戶端使用repo初始化一個項目時,就會從遠(yuǎn)程把manifests和repo這兩個git庫拷貝到本地,但這對于Android開發(fā)人員來說,又是近乎無形的(一般通過文件管理器,是無法看到這兩個git庫的)。 repo將自動化的管理信息都隱藏根目錄的.repo子目錄中。
項目清單庫(.repo/manifests)
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="origin" fetch=".." review="https://android-review.googlesource.com/" />
<default revision="master" remote="origin"/>
<project path="repo-test1" name="platform/repo-test1"/>
<project path="repo-test2" name="platform/repo-test2"/>
</manifest>
注意project的path和name后面不要有/
<remote>:描述了遠(yuǎn)程倉庫的基本信息。name描述的是一個遠(yuǎn)程倉庫的名稱,通常我們看到的命名是origin;fetch用作項目名稱的前緣,在構(gòu)造項目倉庫遠(yuǎn)程地址時使用到;review描述的是用作code review的server地址
<default>:default標(biāo)簽的定義的屬性,將作為<project>標(biāo)簽的默認(rèn)屬性,在<project>標(biāo)簽中,也可以重寫這些屬性。屬性revision表示當(dāng)前的版本,也就是我們俗稱的分支;屬性remote描述的是默認(rèn)使用的遠(yuǎn)程倉庫名稱,即<remote>標(biāo)簽中name的屬性值;屬性sync-j表示在同步遠(yuǎn)程代碼時,并發(fā)的任務(wù)數(shù)量,配置高的機(jī)器可以將這個值調(diào)大
<project>:每一個repo管理的git庫,就是對應(yīng)到一個<project>標(biāo)簽,path描述的是項目相對于遠(yuǎn)程倉庫URL的路徑,同時將作為對應(yīng)的git庫在本地代碼的路徑; name用于定義項目名稱,命名方式采用的是整個項目URL的相對地址。 譬如,AOSP項目的URL為https://android.googlesource.com/,命名為platform/build的git庫,訪問的URL就是https://android.googlesource.com/platform/build
如果需要新增或替換一些git庫,可以通過修改default.xml來實現(xiàn),repo會根據(jù)配置信息,自動化管理。但直接對default.xml的定制,可能會導(dǎo)致下一次更新項目清單時,與遠(yuǎn)程default.xml發(fā)生沖突。 因此,repo提供了一個種更為靈活的定制方式local_manifests:所有的定制是遵循default.xml規(guī)范的,文件名可以自定義,譬如local_manifest.xml, another_local_manifest.xml等, 將定制的XML放在新建的.repo/local_manifests子目錄即可。repo會遍歷.repo/local_manifests目錄下的所有*.xml文件,最終與default.xml合并成一個總的項目清單文件manifest.xml。
問題的疑難點在于manifest中的配置,manifest.git相對于它管理的倉庫的路徑關(guān)系在remote節(jié)點配置的
在服務(wù)器創(chuàng)建倉庫
在創(chuàng)建好default.xml后,提交到服務(wù)器。
然后在服務(wù)器端,利用default.xml生成src.txt,再寫個腳本自動創(chuàng)建所有的git倉庫。
生成src.txt
cat default.xml | cut -d '"' -f 2 > src.txt
命令解釋:
cat default.xml是輸出文件內(nèi)容
| 是管道,文件內(nèi)容被定向輸出到管道
cut 是針對行截取,-d是自定義分隔符為 "
-f 2顯示之前分隔開的第二個區(qū)域,比如行
<project name="platform/build" path="build/" />
按"截取后為 project name= platform/build path= build/
下標(biāo)從0開始,第二個區(qū)域為platform/build.
>src.txt定向輸出到文件src.txt
cut詳細(xì)參數(shù):
-b :以字節(jié)為單位進(jìn)行分割。這些字節(jié)位置將忽略多字節(jié)字符邊界,除非也指定了 -n 標(biāo)志。
-c :以字符為單位進(jìn)行分割。
-d :自定義分隔符,默認(rèn)為制表符。
-f :與-d一起使用,指定顯示哪個區(qū)域。
-n :取消分割多字節(jié)字符。僅和 -b 標(biāo)志一起使用。如果字符的最后一個字節(jié)落在由 -b 標(biāo)志的 List 參數(shù)指示的<br />范圍之內(nèi),該字符將被寫出;否則,該字符將被排除。
cut詳細(xì)用法
生成src.txt后,里面會有一些不必要的行,文件首尾有一些不需要的行,如下:
1.0 //去掉
<manifest> //去掉
origin //去掉
origin //去掉
android/platform/9820e/build
core/root.mk //去掉
</project> //去掉
#/bin/bash
set -x
set -e
pwd=${PWD}
cd /home/gitolite/repositories#此處要根據(jù)實際的repositories路徑修改
while read line; do
if [ -z "$line" ]; then
echo $work_dir not exist !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1>&2
continue
fi
git init --bare $line.git
#初始化裸倉庫,使用--bare選項時,不再生成.git目錄,而是只生成.git目錄下面的版本歷史記錄文件,這些版本歷史記錄文件也不再存放在.git目錄下面,而是直接存放在版本庫的根目錄下面
echo ==== $line
pwd
done
運(yùn)行此腳本,會在/home/gitolite/repositoires下面生成相關(guān)倉庫
如下:
abi.git build.git developers.git external.git hardware.git ndk.git sdk.git u-boot.git
art.git chipram.git development.git flyscale.git kernel.git packages system.git vendor.git
bionic.git cts.git device.git frameworks.git libcore.git pdk.git tools.git
bootable.git dalvik.git docs.git gen.git libnativehelper.git prebuilts u-boot64.git
但是有一個問題,這樣雖然初始化了裸倉庫,但是由于沒有在gitolite中進(jìn)行添加和配置,客戶端是不能提交成功能,所以所有的這些倉庫必須都被 gitolite管理起來才可以。那如上方法就不可取了。
使用腳本生成gitolite.conf
因為要建立上百個倉庫,不可能全部手動進(jìn)行配置,我們需要使用腳本來生成gitolite.conf。
腳本很簡單:
#/bin/bash
set -x #追蹤代碼執(zhí)行情況
set -e #當(dāng)腳本執(zhí)行出現(xiàn)意料之外的情況時,立即退出,避免錯誤被忽略,導(dǎo)致最終結(jié)果不正確
work_dir=$1 #傳入的第一個參數(shù)
pwd=${PWD}
echo $pwd start create gitrepo...
while read line; do
echo repo $line >> gitolite.conf #倉庫名稱
echo RW+ = @user >> gitolite.conf #權(quán)限配置
done
同樣利用到了src.txt,執(zhí)行命令cat src.txt | ./con-tools.sh
這樣就配置好了,再執(zhí)行如下命令提交gitolite-admin
git add -all
git commit -m "更新gitolite.conf"
git push origin master
執(zhí)行完之后 在/home/gitolite/repositories下面就生成了對應(yīng)的所有倉庫。
客戶端上傳源碼
首先要準(zhǔn)備一份沒有建立git的源碼。根據(jù)default.xml生成des.txt,生成的命令如下
cat default.xml | cut -d ‘”’ -f 4 > des.txt
//關(guān)于該命令的含義前面已經(jīng)說過,
使用如下腳本進(jìn)行倉庫的批量初始化和提交
#/bin/bash
set -x #追蹤代碼執(zhí)行情況
set -e #當(dāng)腳本執(zhí)行出現(xiàn)意料之外的情況時,立即退出,避免錯誤被忽略,導(dǎo)致最終結(jié)果不正確
para1=
work_dir=$1 #傳入的第一個參數(shù)
pwd=${PWD}
echo $pwd start create gitrepo...
while read line; do
echo readline
line1=${line%%/*}
if [ -z "$line" ]; then
echo $work_dir not exist !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1>&2
continue
fi
if [ $(ls -A $pwd/$line | wc -l) -eq 0 ]; then
echo $work_dir empty !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1>&2
continue
fi
workdir=$pwd/$line
echo ==== $workdir
cd $workdir #以下是提交流程
rm -rf .git
git init . 1>&2
git add . -f 1>&2
git commit -m "Initial commit" 1>&2
git push --set-upstream gitolite@192.168.1.104:/platform/$line.git master --force
done
執(zhí)行如下命令進(jìn)行批量提交:
cat des.txt | ./des.sh
客戶端下載代碼
- 客戶端需要首先下載git-repo倉庫,并配置環(huán)境變量,這樣才能使用repo命令
git clone gitolite@192.168.1.104:git-repo.git
然后把repo配置到環(huán)境變量中。 repo init -u gitolite@192.168.1.104:/platform/manifest.gitrepo sync
repo upload
錯誤處理
- 執(zhí)行repo init報錯
rror: manifest missing or unreadable -- please run init - repo: no branches ready for upload
https://blog.csdn.net/armwind/article/details/52488961
參考鏈接:
repo工作原理
default.xml文件配置詳解
repo客戶端安裝
修改/etc/profile出錯后恢復(fù)
搭建Gerrit代碼審核服務(wù)器
參考鏈接
參考鏈接
下載wget http://gerrit-releases.storage.googleapis.com/gerrit-2.8.1.war
下載路徑/usr/local/
安裝apache2報依賴錯誤的問題,只需要把依賴包安裝指定版本的即可。
解決依賴錯誤
apache2啟動失敗,參考Log:/var/log/apache2/error.log
登錄mysql并修改用戶
啟動gerrit服務(wù)
./gerrit.sh start
登錄mysql數(shù)據(jù)庫
格式:mysql -u[用戶名] -p
示例,用戶名root:
mysql -uroot -p
show databases;//查看所有數(shù)據(jù)庫
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| reviewdb |
+--------------------+
4 rows in set (0.02 sec)
information_schema數(shù)據(jù)庫是MySQL自帶的,它提供了訪問數(shù)據(jù)庫元數(shù)據(jù)的方式。詳細(xì)information_schema
reviewdb是gerrit使用的數(shù)據(jù)庫
use reviewdb;//使用reviewd數(shù)據(jù)庫
//確認(rèn)使用的數(shù)據(jù)庫
mysql> select database();
+------------+
| database() |
+------------+
| reviewdb |
+------------+
1 row in set (0.00 sec)
//查看reviewdb中的所有表
mysql> show tables;
+-----------------------------+
| Tables_in_reviewdb |
+-----------------------------+
| account_group_by_id |
| account_group_by_id_aud |
| account_group_id |
| account_group_members |
| account_group_members_audit |
| account_group_names |
| account_groups |
| account_id |
| change_id |
| change_messages |
| changes |
| patch_comments |
| patch_set_approvals |
| patch_sets |
| schema_version |
| system_config |
+-----------------------------+
16 rows in set (0.01 sec)
修改gerrit認(rèn)證方式
gerrit有多種身份驗證方法,身份驗證方法決定了如何登錄Gerrit。
- OPENID,如果你想掛入某個現(xiàn)有的身份驗證提供方(例如GoogleAccounts),那么可以使用OpenID。
- development_become_any_account,如果是用于測試和學(xué)習(xí),可以選擇最簡單的development_become_any_account。
- HTTP認(rèn)證也是可選的認(rèn)證方式,此認(rèn)證方式下需要配置Apache的反向代理,并在Apache中配置Web站點的口令認(rèn)證,通過口令認(rèn)證后gerrit在創(chuàng)建賬號的過程中會詢問用戶的郵件地址并發(fā)送確認(rèn)郵件。
- LDAP, LDAP全稱Lightweight Directory Access Protocol,輕量目錄訪問協(xié)議。使用用戶名和密碼。
在etc/gerrit.config下的
[auth]
type = LDAP
使用HTTP認(rèn)證需要使用反向代理
我司使用的HTTP進(jìn)行認(rèn)證。
反向代理:反向代理(Reverse Proxy)方式是指以代理服務(wù)器來接受internet上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請求連接的客戶端,此時代理服務(wù)器對外就表現(xiàn)為一個反向代理服務(wù)器。
配置說明
下面是我的配置,服務(wù)器地址192.168.1.104,代理端口9999,被代理端口10000。本機(jī)回環(huán)IP127.0.1.1
- 在/etc/apache2/下創(chuàng)建httpd.conf
#add gerrit reverse proxy --bianjb
<VirtualHost *:9999> #代理端口9999
ServerName 192.168.1.104
ProxyPreserveHost On #開啟反向代理
ProxyRequests Off
<Proxy *> #訪問權(quán)限規(guī)則
Order deny,allow
Allow from all
</Proxy>
<Location /login/> #登錄成功轉(zhuǎn)到登錄界面
AuthType Basic
AuthName "Welcomme to Gerrit Code Review Site!"
Require valid-user
AuthBasicProvider file
AuthUserFile /home/gerrit/review_site/etc/passwd #用戶驗證使用的文件,需要自行創(chuàng)建
</Location>
ProxyPass / http://127.0.1.1:10000/ #被代理地下
</VirtualHost>
AuthUserFile /home/gerrit/review_site/etc/passwd,我放在了這個目錄下,可以自行指定,創(chuàng)建方法如下:
sudo touch /home/gerrit/review_site/etc/passwd //創(chuàng)建文件
sudo htpasswd -b home/gerrit/review_site/etc/passwd username passwd
//使用htpasswd幫助信息
htpasswd -h
后面登錄的時候就可以使用useranme+passwd進(jìn)行登錄 了。
- 在/etc/apache2/apache2.conf中引入我們新建的httpd.conf
Include httpd.conf
- 配置/etc/apache2/ports.conf
Listen 80 #apache2默認(rèn)監(jiān)聽的端口
Listen 9999 #新添加監(jiān)聽9999端口作為代理
- 重啟apache2服務(wù)
sudo service apache2 restart
現(xiàn)在就可以訪問服務(wù)器了,如下圖:

登錄成功后如圖:

配置Gerrit開機(jī)啟動
- 安裝gerrit的時候,會有一個安裝目錄,在它的下面有個 bin/gerrit.sh文件,把這個文件拷貝到/etc/init.d下 改名叫做 gerrit
- 然后用sysv-rc-conf工具,這個沒有可以直接apt-get install進(jìn)行安裝
- 運(yùn)行
sysv-rc-conf
image.png
找到gerrit的那一行,把2~5都X上。
搭建起來還是挺費(fèi)勁的,歡迎各位交流指正!
