1. 程式人生 > >【Phabricator】教科書一般的Phabricator安裝教程(配合官方文件並帶有踩坑解決方案)

【Phabricator】教科書一般的Phabricator安裝教程(配合官方文件並帶有踩坑解決方案)

隨著一聲驚雷和滂沱的大雨,我的Phabricator頁面終於在我的學生機上跑了起來。

想起在這五個小時內踩過的坑甚如大學隔壁炮王幹過的妹子,心裡的成就感不禁油然而生。

接下來,我將和大家分享一下本人在CentOS7.4版本,利用lnmp搭建Phabricator的實戰過程和踩過的坑。這一方面是為我下一步在docker上部署並製作映象做好鋪墊,更重要的是,我能夠有幸和遊走在這令人頭禿的修羅場裡的勇士們,分享我自認為史詩一般難得的寶貴經驗。好,那麼接下來我們進入正題。

一、什麼是phabricator?我為什麼要搭建一個phabricator應用?

官網:https://www.phacility.com/ 

專案地址:https://github.com/phacility/phabricator 

Phabricator是一套基於Web的軟體開發協作工具,一個Web應用用於幫助軟體公司構建更好的軟體。 
原是facebook員工開發的視覺化程式碼評審工具,現在跑路了並投奔了Phacility,好在他依然在持續維護。
簡單說來,這個玩意兒主要包含以下幾個功能:

1. 原始碼的review與稽核
2. 程式碼託管,程式碼瀏覽
3. BUG跟蹤
4. 專案管理
5. 團隊成員交流
6. 組織風險討論
7. 事件備註,以及回顧(統計等)
8. 許可權設定
9. 其他功能

然而目前這些都與我無關,我只是為了好玩。

二、安裝教程參考

我相信一定有天選之子可以不費吹灰之力過關斬將,你只需要一具阿姆斯特朗迴旋噴氣加速炮(不定期更新大家認為的優質教程,歡迎留言)。

來自CSDN的教程1:https://blog.csdn.net/u010285974/article/details/81222976

來自思否的教程1:https://segmentfault.com/a/1190000011183530

當然,我的同事黃同學一直告訴我,需要看官方文件。所以,這次我就索性看官方文件啦!

官方文件:https://secure.phabricator.com/book/phabricator/article/installation_guide/

三、適用本教程的基礎條件檢查

本人在本教程中運用的資源:

(1)一臺放開了所有埠的公網雲伺服器(騰訊雲學生機),安裝有centos7.4版本系統,網路連線通暢

(2)一個正常註冊並且能夠被正常解析的域名

(3)一個數據庫例項(騰訊雲學生特惠例項6元/月,mysql),通過域名/IP+埠,再加上正確的賬戶密碼,可以保證被第三方程式正常訪問

(4)一臺高效能的電腦,其中高效能用於裝逼,實際通過navicat mysql和xshell(學生版)對伺服器和資料庫進行管理

請務必仔細檢查您的上述條件,這些條件不是必須,只是說明本人的環境部署。如果您嚴格按照我後續教程操作依然出現問題,煩請檢查一下是否滿足上述條件。

注意!該配置,特別是放開所有埠這一配置,嚴禁用於生產環境!!!

四、依託官方文件的安裝過程(如遇到問題,可參考第五大點-本人遇到的問題)

以下過程總結自官方文件並結合個人實踐簡化而來。本教程強化如何順利部署Phabricator,而不關心資料庫、安全考量。

1.解壓專案檔案、安裝基本包和php擴充套件

很多檔案都可能需要現場編譯,得先檢查一下C編譯器,安裝gcc。

由於資料庫分離,無需考慮資料庫。因而基本伺服器服務需要安裝nginx、php-fpm。其中nginx負責http請求,php-fpm負責php執行請求。

由於需要從github下載專案檔案,所以需要安裝git。

然後再安裝php的常用擴充套件 pcre-devel php-pear php-devel php-mbstring php-mysql。

全部安裝完成且無報錯後,執行sudo pecl install apc 全部預設設定,直接回車。

以上命令,熟悉yum的同學應該明白,可以合併成一條指令。

檢查一下,執行php -i | grep apc ,看是否有帶有apc的包羅列出來,如果沒有,新增extension=apc.so在php.ini檔案內的[php]標籤下任意位置。之後再檢查一下。

以上算是配置一個nginx-php配合環境的基本步驟,別忘了我們是要能執行Phabricator的~

在/usr/share/nginx 目錄下,執行這三條命令。

git clone https://github.com/phacility/libphutil.git
git clone https://github.com/phacility/arcanist.git
git clone https://github.com/phacility/phabricator.git

到現在為止,基礎環境就緒。

2.配置nginx.conf

配置nginx.conf以達到和php的相互銜接,配置監聽埠,識別主機名【重要】,讀取網站根目錄。

執行vim /etc/nginx/nginx.conf,在http大括號內,原測試server大括號下,再增加一個server,內容如下:

server {
  server_name 你的域名;
  root        /usr/share/nginx/phabricator/webroot;

  location / {
    index index.php;
    rewrite ^/(.*)$ /index.php?__path__=/$1 last;
  }

  location /index.php {
    fastcgi_pass   localhost:9000;
    fastcgi_index   index.php;

    #required if PHP was built with --enable-force-cgi-redirect
    fastcgi_param  REDIRECT_STATUS    200;

    #variables to make the $_SERVER populate in PHP
    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param  QUERY_STRING       $query_string;
    fastcgi_param  REQUEST_METHOD     $request_method;
    fastcgi_param  CONTENT_TYPE       $content_type;
    fastcgi_param  CONTENT_LENGTH     $content_length;

    fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;

    fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
    fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

    fastcgi_param  REMOTE_ADDR        $remote_addr;
  }
}

有熟悉nginx.conf的同學可能會注意到我把root路徑寫死了,但也一定知道為什麼,我前面的教程是指定大家在/usr/share/nginx/這個目錄下clone的git倉庫。

執行nginx

執行php-fpm & 來執行php依賴並保證在後臺執行。

檢視systemctl status nginx,看nginx服務是否正常執行。正常應該顯示running

檢視ps -ef | grep php,應該能看到php-fpm的主程序和工作程序。

3.配置Phabricator資料庫連線資訊並初始化資料庫

Phabricator需要初始化資料庫,我們還需要告訴Phabricator資料庫連線資訊。按如下指令進行配置:

首先,進入Phabricator目錄。cd /usr/share/nginx/phabricator

然後,依次執行以下幾條命令:

./bin/config set mysql.host 你的資料庫伺服器地址
./bin/config set mysql.port 你的資料庫伺服器埠
./bin/config set mysql.user 你要登入到伺服器的使用者名稱
./bin/config set mysql.pass 你要登入到伺服器的使用者的密碼

可能中間會有連線拒絕的資訊,但可以嘗試等待,直到提示資料已成功更改。(如果網路連線正常,等待2分鐘還無反應,直接ctrl+c中止,並排查問題)

之後更新Phabricator連線到的資料庫(本次執行,實際效果即為初始化)

Phabricator需要得到更新。還是確保呆在/usr/share/nginx/phabricator目錄內,執行:

./bin/storage upgrade

確定(即輸入y並回車),繼續。不報錯,說明更新完畢。使用navicat登入你的資料庫,應該能夠看到大批量的資料庫被生成。

4.進入Phabricator,進行後續的管理操作。

電腦開啟瀏覽器,瀏覽器內輸入你的域名。回車。

五、本人在其中遇到的問題

吃飯去了,待會兒來寫。

 

 



&n