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

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

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

接下來,我將和你們分享一下本人在CentOS7.4版本,利用lnmp搭建Phabricator的實戰過程和踩過的坑。這一方面是爲我下一步在docker上部署並製做鏡像作好鋪墊,更重要的是,我可以有幸和遊走在這使人頭禿的修羅場裏的勇士們,分享我自認爲史詩通常可貴的寶貴經驗。好,那麼接下來咱們進入正題。nginx

1、什麼是phabricator?我爲何要搭建一個phabricator應用?git

官網:https://www.phacility.com/ 
項目地址:https://github.com/phacility/phabricator github

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

1. 源碼的review與審覈
2. 代碼託管,代碼瀏覽
3. BUG跟蹤
4. 項目管理
5. 團隊成員交流
6. 組織風險討論
7. 事件備註,以及回顧(統計等)
8. 權限設置
9. 其餘功能

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

2、安裝教程參考docker

我相信必定有天選之子能夠不費吹灰之力過關斬將,你只須要一具阿姆斯特朗迴旋噴氣加速炮(不按期更新你們認爲的優質教程,歡迎留言)。shell

來自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/

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

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

(1)一臺放開了全部端口的公網雲服務器(騰訊雲學生機),安裝有centos7.4版本系統,網絡鏈接通暢

(2)一個正常註冊而且可以被正常解析的域名

(3)一個數據庫實例(騰訊雲學生特惠實例6元/月,mysql),經過域名/IP+端口,再加上正確的帳戶密碼,能夠保證被第三方程序正常訪問

(4)一臺高性能的電腦,其中高性能用於裝逼,實際經過navicat mysql和xshell(學生版)對服務器和數據庫進行管理

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

注意!該配置,特別是放開全部端口這一配置,嚴禁用於生產環境!!!

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

如下過程總結自官方文檔並結合我的實踐簡化而來。本教程強化如何順利部署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,進行後續的管理操做。

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

聰明的你可能明白了,這樣一套整下來,如此簡單和清晰的步驟,必定可以方便的寫成腳本的!

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

本人實際的步驟怎麼可能這麼一路順風?

本人遇到了以下問題,在這裏作一下我的總結。

1.修改nginx.conf文件後並啓動nginx,訪問網站提示文件找不到

可能和目錄權限有關係,使用nginx默認的展現目錄/usr/share/nginx便可。

2.報錯,提示找不到C編譯器

安裝gcc

3.遭遇時區設置警告

不用管

4.提示數據庫未初始化

按照提示初始化數據庫

5.提示須要安裝相關擴展

按照提示安裝擴展,若是還有問題,百度或者是谷歌去(官方本身這麼說的)

6.鏈接mysql錯誤

檢查設置的mysql服務器地址、端口、用戶、密碼

相關文章
相關標籤/搜索