參考:https://secure.phabricator.com/book/phabricator/article/installation_guide/php
phabricator,由facebook公司開發,是一個開源的代碼審查系統,幫助軟件公司創建更好的軟件。該系統可以部署在多數linux發行版以及os x系統上。本文檔僅是該系統部署的一個簡單指導,詳細內容請查看官網說明和解釋,本說明的部署僅針對Ubuntu 14.04 LTS版本操做系統。linux
官方網站提供了一個安裝腳本,大大簡化了安裝過程。該腳本路徑https://secure.phabricator.com/diffusion/P/browse/master/scripts/install/install_ubuntu.sh。git
安裝時,須要先選定安裝路徑,由於安裝腳本是默認使用當前工做路徑安裝的,固然,你也能夠修改腳本上的安裝路徑。github
啓動安裝腳本,按照提示一步一步的執行。安裝時會檢查系統是否已安裝必須的組件(MYSQL、APACHE2等),若是沒有安裝,則腳本會自動安裝。安裝到最後會提示是否修復問題(Fix issue),選擇修復並繼續執行,執行完成後,即已安裝完成。web
安裝過程當中會從github中克隆出該系統的源碼和相關文件,這個過程可能會比較耗時,須要耐心等待。數據庫
https://github.com/phacility/libphutil.gitapache
https://github.com/phacility/arcanist.gitubuntu
https://github.com/phacility/phabricator.git瀏覽器
安裝完成後安裝目錄會出現一個phabricator目錄,該目錄包含了該系統的全部文件以及源碼。安裝完成後請檢查MySQL以及Apache2是否安裝成功,以及服務是否能夠正常啓動。服務器
Phabricator安裝完成後須要將其使用Apache2部署,部署時應該特別注意配置,在不一樣的操做系統中配置項以及配置文件可能不一樣,這裏使用的是Ubuntu 14.04 LTS版本的Apache2 2.4.7版本。在/etc/apache2目錄須要注意以下路徑:
ports.conf:web站點可用的端口,默認爲80,使用不一樣端口時須要修改或者該文件中的監聽端口。
sites-avaliable:web站點虛擬主機的配置文件存在路徑。
sites-enabled:sites-avaliable配置文件對應的鏈接文件路徑。
若是使用默認路徑時須要在sites-avaliable路徑下禁用默認的虛擬主機,此時對應的鏈接文件將會被刪除;啓用新的虛擬主機時須要建立對應的鏈接文件。
禁用虛擬主機:sudo a2dissite 000-default.conf 啓用虛擬主機:sudo a2ensite 000-default.conf
下面是一個典型的配置例子:
<VirtualHost *:20001> # Change this to the domain which points to your host. ServerName ktphabricator.com # Change this to the path where you put 'phabricator' when you checked it # out from GitHub when following the Installation Guide. # # Make sure you include "/webroot" at the end! DocumentRoot /home/test/habricator/webroot RewriteEngine on RewriteRule ^/rsrc/(.*) - [L,QSA] RewriteRule ^/favicon.ico - [L,QSA] RewriteRule ^(.*)$ /index.php?__path__=$1 [B,L,QSA] <Directory "/home/test/habricator/webroot"> Require all granted </Directory> </VirtualHost>
這裏使用一個域名做爲ServerName值,這個域名能夠無效也能夠是一個可解析或者已註冊的域名。
這裏是Phabricator站點文件保存的路徑,也就是安裝路徑。這些設置須要重啓Apache2服務器才能生效使用,可使用Service apache2 restart命令重啓。
啓用該配置文件後,打開瀏覽器輸入主機IP或者域名和端口訪問該站點。
該端口是該站點的監聽端口,例如20001。該監聽端口必須保存在/etc/apache2/ports.conf配置文件中。
須要注意的是,Phabricator須要獨佔一個域名。在瀏覽器中訪問時須要輸入該域名訪問。若是使用默認的80端口,那麼也應該須要
若是MySQL數據庫設定了root帳戶密碼的話,安裝成功會在瀏覽器進入站點時,會出現沒法連接數據庫的錯誤提示頁面。此時須要對數據庫鏈接作配置,修改數據庫鏈接的主機、端口、用戶名以及用戶登陸密碼。
Phabricator默認使用MySQL的root帳戶鏈接數據庫服務器,因此此時應該使用配置其密碼或者更改成其餘的帳戶。
若是鏈接的數據庫是其餘主機的話,那麼還須要配置數據庫鏈接的主機以及端口號。
鏈接設定成功後刷新頁面將會出現另外一個數據庫問題,該問題是該系統的一個初始動做,必須執行!按照頁面上的提示執行數據庫存儲升級便可。該過程可能會耗時較長,請耐心等待。須要注意的是該命令對應的程序時保存在phabricator安裝路徑下的bin目錄。
./bin/storage upgrade
設定成功後刷新頁面應該進入系統管理員配置頁面了,此時註冊並設定系統管理員帳戶,該帳戶將會擁有超級權限,可以修改系統任何內容!
只有設定了系統管理員後才能執行後續的設置操做,而這個纔是剛剛開始!
系統管理員配置完成後,將會真正的進入到了該系統。此時出現的是系統setup issues頁面。
該頁面之處系統安裝和部署時存在的潛在的問題。這些問題不是全部都是嚴重的,多數是系統運行的潛在性能問題以及系統使用是否方便。下面幾個問題是必須解決的,不然系統運行不正常!
該問題是用戶登陸配置,系統剛剛安裝完成是沒有登陸途徑的,也沒有註冊途徑。此時應該選定一個,後期能夠繼續增長用戶註冊受權方式。
點擊進入issue頁面 → 點擊「using the "Auth" application」 → 點擊"Add Authentication Provider",能夠看到以下頁面。
選擇一種登錄或身份驗證方式。這裏咱們選擇「用戶名/密碼」的方式。確認添加後進入下一頁,將全部選項都進行勾選(默認),也能夠是根據須要進行設置。這裏有一個最短密碼長度的設置account.minimum-password-length,能夠在以後進行設置。當再次確認後,登錄方式就被確認應用了。再次刷新頁面,這個issue就被修復了。
該問題是郵件收發服務問題。系統很功能後臺會執行郵件收發動做,因此必須配置系統使用的郵件收發服務。該配置有些麻煩,而且容易出問題!請查看「郵件服務配置」一節。
這個事設置服務器的時區的。系統不少操做將會產生時間戳保存到數據庫或者其餘的通訊操做,因此應該設定,不然系統默認使用格林威治標準時間,和北京時間差了正好8個小時。點擊進入issue頁面,會出現以下圖的顯示:
選擇「Edit phabricator.timezone」鏈接執行設定。
該操做執行本地代碼庫以及網絡代碼庫本地保存路徑。該路徑能夠是該系統默認使用的/var/repo,也能夠其餘的可用路徑。系統剛安裝完成是/var/repo路徑是不存在的,若是使用它的話必須先建立。
請確保該程序運行用戶具備該路徑的讀寫執行權限,不然系統核心的審查功能將沒法使用!
點擊issue,進入對應頁面,會出現以下圖所示的內容:
後臺守護進程將會執行系統跟蹤、檢測以及郵件收發等操做。因此該問題應該修復,後期若是出現了問題或者刷新的話,能夠對它中止、調試、重啓等操做。特別是在郵件收發服務失敗時,應該屢次重啓這個守護進程。
在phabricator安裝目錄下的bin目錄下執行phabricator/bin/ # ./phd start 後,出現一下提示表明守護線程已經被開啓。
PhabricatorRepositoryPullLocalDaemon
PhabricatorGarbageCollectorDaemon
PhabricatorTaskmasterDaemon
刷新頁面後,這個issue也就被修復了。
若是守護進程出問題或者途中宕掉了,那麼在系統管理員登陸後的首頁會從新出現該問題的提示
若是phabricator升級了或者修改了配置,那麼daemons須要重啓!
該系統運行時將會執行許多的郵件收發,因此須要設定並檢查配置。
Phabricator郵件設置有多種方式,這裏使用最簡單的SMTP方式。
設定郵件適配器,適配器的選擇須要和設定的方式對應。這裏使用SMTP對應的適配器
PhabricatorMailImplementationPHPMailerAdapter。若是不想使用郵件服務則使用
PhabricatorMailImplementationTestAdapter適配器, 這個值將徹底禁用郵件發送。若是你不想對外發送郵件,可使用該值。
適配器默認使用的是PhabricatorMailImplementationPHPMailerLiteAdapter,其對應SendMail郵件服務,該sendmail至關難配置,同時收發郵件效率低下,建議不使用!
多數SMTP服務器須要認證,爲了使 Phabricator使用SMTP, 須要對以下的關鍵字進行配置:
phpmailer.mailer: 設置爲 "smtp".
phpmailer.smtp-host: 設置smtp服務器的名字,好比qq、設定爲smtp.qq.com,具體的郵箱服務請參考官方說明。
phpmailer.smtp-port: 設置smto服務器對應的端口。多數SMTP服務器默認端口時25,若是有特殊的,請參考官方說明。
phpmailer.smtp-user: 設置用戶名。若是你使用的是qq郵箱,那麼此處應該設定爲你的qq號碼。
phpmailer.smtp-password: 設置密碼。
phpmailer.smtp-protocol:smtp通訊方式,tls或者ssl,若是選擇其中一種的話,須要設置phpmailer.smtp-port爲對應的端口號。默認這裏不選擇,使用25端口。
上面設置完成後還須要設置metamta.default-address參數,即phabricator收發郵件的地址。請保持與smtp服務商一致。
設置完成後須要檢查配置是否成功。檢查時須要確保後臺守護進程是否正常運行。檢查時使用./mail list-outbound命令檢查系統郵件收發狀態,結果就像下面這面:
Sent表示發送成功,queued表示仍在排隊,多是在等待發送,也多是後臺進程運行不正常,此時應該嘗試重啓,甚至屢次重啓後臺守護進程。每條記錄可使用./mail show-outbound --id id-value命令查看郵件的詳細內容。
在使用phabricator審查代碼,或者操做repository前,須要對ssh作配置。
Phabricator 擁有3種系統用戶帳號。他們做爲系統用戶帳號在Phabricator主機上運行,而不是普通用戶帳號。
配置系統帳號有如下幾種:
1) 做爲守護進程運行的,咱們稱之爲「daemon-user」。
2) 做爲web主機運行的,咱們稱之爲「www-user」。若是你不打算使用HTTP協議訪問代碼庫,你就不必對這個用戶進行特別的配置。
3) 經過SSH鏈接運行的,咱們稱之爲「vcs-user」。若是你不打算使用SSH協議訪問代碼庫,你就不必對這個帳戶進行特別的配置。
如何配置這些帳戶:
l 當沒有daemon-user時,須要建立一個「daemon-user」。當你啓動線程時,也就使用了這些帳號。推薦使用root帳號。
l 當沒有www-user時,須要建立一個「www-user」。經過web主機來啓動這個帳號。注意,啓動的用戶必定要存在才行。
l 當沒有vcs-user時,須要建立一個「vcs-user」。對於Git和Hg,其名字是相同的。當用戶clone代碼庫時,他們會用到相似的地址 vcs-user@phabricator.yourcompany.com。
如今,爲了vcs-user和www-user如同daemon-user同樣可使用sudo命令,須要對sudoers進行配置。這裏,須要使用visudo或sudoedit命令,將這些用戶加入/etc/sudoers文件中。
若是配置ssh,則添加:
vcs-user ALL=(daemon-user) SETENV: NOPASSWD: /path/to/bin/git-upload-pack, /path/to/bin/git-receive-pack, /path/to/bin/hg, /path/to/bin/svnserve
若是配置http,則添加:
www-user ALL=(daemon-user) SETENV: NOPASSWD: /usr/bin/git-http-backend, /usr/bin/hg
其中的三個帳戶相應的替換爲真實帳戶。
配置完sudoers後,須要對phabricator進行配置:
phabricator/ $ ./bin/config set phd.user daemon-user phabricator/ $ ./bin/config set diffusion.ssh-user vcs-user
這裏也應該替換爲真實的帳號。
注意,這裏的操做很危險!因此須要格外當心,並確保可跟蹤!
對SSH服務的配置分七步。
一、建立 phabricator-ssh-hook.sh
能夠從 phabricator/resources/sshd/phabricator-ssh-hook.sh 拷貝模板到 /usr/libexec/phabricator-ssh-hook.sh (或其餘你喜歡的路徑)。而且編輯它來配合當前的配置。而後,讓他被root用戶擁有,並限制對其的編輯:
sudo chown root /path/to/phabricator-ssh-hook.sh sudo chmod 755 /path/to/phabricator-ssh-hook.sh
若是你不作這些事情,sshd將會拒絕執行鉤子命令。
2、建立Phabricator的 sshd_config 配置文件在 phabricator/resources/sshd/sshd_config.phabricator.example 拷貝模板到 /etc/ssh/sshd_config.phabricator(或者其餘路徑)。
打開這個文件,而後修改 AuthorizedKeysCommand 和 AuthorizedKeysCommandUser 來適配你當前使用的系統。
該文件中保存有ssh port 22,這是ssh默認端口,請不要修改該配置項!可是在使用它以前須要遷移默認ssh服務的端口爲其餘。
以上步驟會將phabricator-ssh-hook.sh和sshd_config關聯起來,在sshd執行時會自動執行。
三、遷移默認的ssh端口
所在的系統應該安裝有ssh,ssh默認使用22端口。
這裏須要先將默認的端口遷移爲另一個端口,假設爲222. 22端口會被phabricator sshd使用!
遷移ssh端口
Ssh的配置保存在/etc/ssh/sshd_config文件中,找到
Port 22
這一行,並修改22爲222,而後保存。使用
Service ssh restart重啓ssh服務。此時修改爲功。
能夠經過如下命令測試設置是否成功
ssh -p 222 the_host_ip
4、啓動新的SSH守護進程
設置成功後,啓動phabricator sshd守護進程,請使用如下命令:
/path/to/sshd -f /etc/ssh/sshd_config.phabricator
Sshd必須是全路徑!而sshd_config應該選擇上面第二步驟的sshd_config.phabricator。只有這樣纔可以成功!
5、建立ssh public key
Phabricator的ssh協議是使用ssh public key無密碼登陸驗證的。因此,須要生成公私密鑰對。
這裏須要驗證的是上面設置的vcs_user的key,先登陸vcs_user,該帳號的根目錄下應該會存在一個隱藏文件夾.ssh,若是沒有,請建立之。
進入.ssh目錄,使用ssh-keygen建立祕鑰,該命令會提示輸入祕鑰文件名,能夠不輸入,直接回車。接下來還提示你輸入密碼,能夠不輸入直接會回車。
執行完成後,該目錄下回生成兩個文件id_rsa、id_rsa.pub。id_rsa是私鑰文件,id_rsa.pub是公鑰文件。
6、upload ssh public key
將生成的id_rsa.pub文件內容複製保存到phabricator,具體的說就是進入phabricator站點,進入setting模塊,該模塊下有SSH Public Keys部分,此時選擇【Upload Public Key】按鈕保存便可,key name可自定義!
七、測試
上述配置完成後,應該檢查是否配置成功!可使用以下命令
echo {} | ssh vcs-user@phabricator.yourcompany.com conduit conduit.ping
這裏的phabricator.yourcompany.com能夠是一個公司內可用的真正phabricator的域名,或者局域網的域名,也能夠是ip。
若是配置成功,那麼應該獲得以下結果:
{"result":"orbital","error_code":null,"error_info":null}
若是配置不成功,請詳細檢查上述步驟!另外請詳細參考官網:
https://secure.phabricator.com/book/phabricator/article/diffusion_hosting/
SSH配置完成後,就能夠在diffusion中的repositon使用ssh協議了,此時能夠執行使用phabricator相關工具執行code review, repository pull/push.
Arcanist的安裝很簡單,可從源碼安裝,也可安裝包安裝。
源碼安裝僅需把代碼clone下來,而後執行路徑下的/bin路徑的arc程序進行配置便可。
Arcanist git路徑參考Phabricator。
安裝包安裝在Ubuntu下執行以下命令:
sudo apt-get install arcanist
按照官方說明步驟以下:
1、設置你phabricator部署的域名,此處假設https://phabricator.wikimedia.org/
./arc set-config default https://phabricator.wikimedia.org/
該步驟執行成功後會提示以下文本:
Set key 'default' = "https://phabricator.wikimedia.org/" in global config (was null)
2、安裝我的私鑰
./arc install-certificate
按照官方的步驟的話,該步驟執行失敗,由於不會去鏈接咱們本身的域名或者路徑,而是官方的路徑。
正確的操做應該是,進入arcanist路徑,該路徑下有一個.arcconfig隱藏文件,編輯該文件中的pharicator.uri參數爲咱們本身的域名路徑,保存退出後再進入bin目錄執行
./arc install-certificate
而後按照提示執行操做便可。
Daemons是Phabricator後臺守護進程,它是一系列守護進程的集合。主要服務於郵件服務、代碼repository管理和審查!因此請時刻確保該守護進程運行正常!
這些守護進程能夠經過phd腳本執行,路徑在/phabricator/bin。
./bin/phd restart
./bin/phd status
./bin/phd stop
./bin/phd start