Phabricator-安裝及使用指南_第1頁(yè)
Phabricator-安裝及使用指南_第2頁(yè)
Phabricator-安裝及使用指南_第3頁(yè)
Phabricator-安裝及使用指南_第4頁(yè)
Phabricator-安裝及使用指南_第5頁(yè)
已閱讀5頁(yè),還剩129頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PhabricatorPhabricator安裝及使用指南(中文1.0v)Multicorewareinc陳曉偉xiaowei@

目錄介紹篇(introduction) 12安裝向?qū)?12安裝要求 12安裝必需的組件 12擦除mysql密碼(可選) 13安裝APC(可選) 14安裝XHProf(可選) 14更新Phabricator 15配置篇(Configuration) 15軟件/服務(wù)配置向?qū)?15前提 15WEB服務(wù)器:配置Apache 15配置域名 18設(shè)置 18存儲(chǔ):配置MySQL 18驗(yàn)收Phabricator: 19下一步 29配置賬戶及注冊(cè)機(jī)制 29概述 29恢復(fù)管理員賬戶 30賬戶管理 30手動(dòng)創(chuàng)建新賬戶 30備份配置及執(zhí)行遷移 32概述 32備份:MySQL數(shù)據(jù)庫(kù) 32恢復(fù):MySQL 32備份:上載文件 33恢復(fù):上載文件 33備份:配置文件 33恢復(fù):配置文件 33安全性 33配置上載文件限制 34概述 34配置發(fā)送\接收郵件 35配置發(fā)送郵件 35配置接收郵件 39phd管理守護(hù)進(jìn)程 43概述 43Phd簡(jiǎn)介 44守護(hù)進(jìn)程控制臺(tái) 44可用的守護(hù)進(jìn)程 44調(diào)試和優(yōu)化 45技巧總匯 45聯(lián)機(jī)操作 45HTTPS相關(guān)故障解決 46概述 46證書(shū)認(rèn)證問(wèn)題 46域名問(wèn)題 46SNI問(wèn)題 47使用篇(ApplicationUserGuides) 47Arcanist快速入門(mén) 47安裝Arcanist 47配置工程項(xiàng)目 48安裝Arcanist證書(shū) 49發(fā)送可回顧修改集 49下一步操作 49Arcanist使用指南 50快速入門(mén) 50概述 50安裝Arcanist 51安裝TabCompletion 53配置Arcanist 53下一步操作 53Arcanist使用教程:arcdiff 54概述 54Subversion 54Git 54Mercurial 56上傳和關(guān)閉修訂 56一般性信息 57Arcanist使用教程:CodeCoverage 58使用Coverage特性 58啟動(dòng)Coverage(libphutil,Arcanist和Phabricator) 59構(gòu)建coverage支持 59Arcanist使用教程:CommitRanges 59概述 60配置基提交規(guī)則 60范例 62規(guī)則詳解 62下一步 65Arcanist使用教程:配置一個(gè)新工程 66概述 66.arcconfig基礎(chǔ)篇 66.arcconfig進(jìn)階篇 66歷史記錄的可變性 67如何定位庫(kù)文件 68無(wú).arcconfig文件運(yùn)行 69下一步 69Arcanist使用教程:自定義已存代碼分析器 70概述 70普遍準(zhǔn)則 70修改嚴(yán)寬規(guī)則 70屏蔽嚴(yán)寬規(guī)則 71運(yùn)行多個(gè)規(guī)則集 71自定義指定代碼分析器 71Arcanist使用教程:自定義代碼分析器,單元測(cè)試和工作流 72概述 72創(chuàng)建一個(gè)libphutil庫(kù) 73使用特定類(lèi) 73下一步 74Arcanist使用教程:代碼分析器 74概述 74可用的代碼分析器 74配置代碼分析 75使用代碼分析提高代碼回查效率 76代碼分析的哲學(xué) 76下一步 77Arcanist使用教程:MacOSX 77闡述如何在MacOSX下安裝Arcanist。 77下一步 77Arcanist使用教程:代碼庫(kù)鉤子 78安裝ArcanistSVN鉤子 78Arcanist使用教程:Windows 78概述 79必要組件 79配置編輯器 79安裝PHP 80下一步 80審核(Audit)使用教程 80概述 81詳細(xì)介紹 81審核觸發(fā)器 81審核在小型組的使用 82審核技巧 82下一步 82配置教程:高級(jí)配置 82概述 82源碼配置 83文件配置 83下一步 85Differential使用教程 85概述 85如何進(jìn)行代碼回查 85創(chuàng)建修訂 85Herald規(guī)則 86Differential使用技巧 86下一步 86Differential使用教程:FAQ 86為什么“已接受”(accepted)的代碼更新后依然是接受狀態(tài)? 86如何開(kāi)啟語(yǔ)法高亮? 87空格選項(xiàng)是做什么用的? 87淡綠和紅色背景是什么意思? 87Differential使用教程:重大修改 88概述 88Differential使用教程:測(cè)試計(jì)劃 89概述 89全修改覆蓋 89前端/用戶可見(jiàn)修改 90Diffusion使用教程 90概述 90代碼庫(kù)代號(hào)和提交名稱(chēng) 90添加代碼庫(kù) 91運(yùn)行Diffusion守護(hù)進(jìn)程 91下一步 92Diffusion使用教程:代碼庫(kù)鉤子 93概述 93了解支持的協(xié)議 93配置系統(tǒng)用戶賬號(hào) 94配置HTTP 95配置SSH 95HTTP認(rèn)證 96SSH認(rèn)證 96Diffusion使用教程:符號(hào)索引 97概述 97填充索引 97集成Differential 98Diviner使用教程 98概述 99生成文檔 99.book文件 99Drydock使用教程 100概述 100Events使用教程:安裝Event監(jiān)聽(tīng)器 100概述 101安裝Event監(jiān)聽(tīng)器(Phabicator) 101安裝Event監(jiān)聽(tīng)器(Arcanist) 101監(jiān)聽(tīng)器實(shí)例 101可用事件 102調(diào)試監(jiān)聽(tīng)器 107下一步 108Herald使用教程 108概述 108全局和個(gè)人規(guī)則 108規(guī)則,條件和操作 109可用的操作 109測(cè)試規(guī)則 109高級(jí)Herald規(guī)則 109JumpNav使用教程 110概述 110支持的指令 110libphutil庫(kù)使用教程 111概述 111創(chuàng)建一個(gè)新庫(kù) 111通過(guò)Phabricator連接 112類(lèi)寫(xiě)入 113你可以擴(kuò)展和引用的庫(kù) 113Notifications使用教程:安裝和配置 114概述 114運(yùn)行Aphlict服務(wù)器 114調(diào)試服務(wù)器錯(cuò)誤 115OwnersTool使用教程 115工具包 115相關(guān)提交 115需要注意的提交 115Phame使用教程 116概述 116草稿 116帖子 116博客 116評(píng)論工具 116下一步 116Phriction使用教程 117概述 117Remarkup參考 117概述 117快速參考 117基本風(fēng)格 118布局 118連接URIs 123連接到對(duì)象 123內(nèi)嵌對(duì)象 124引用文本 125內(nèi)嵌多媒體類(lèi)型 125圖像宏 126模塊 126提醒用戶 126Phriction文檔 126文字塊 126表格 127全屏模式 128Slowvote使用教程 128概述 128Pluralityvs.Approval 128使用教程:賬戶角色 129概述 129管理員(Administrators) 129系統(tǒng)代理(SystemAgents) 129禁用賬戶(DisableUsers) 129使用教程:配置一個(gè)外置編輯器 130概述 130配置編輯器 130配置:TextMate(OSX) 130配置:其他編輯器 131使用教程:管理Phabricator的郵件 131概述 131減少郵件 131郵件規(guī)則 131郵件頭 131使用教程:Reviewvs.Audit 132概述 132回查的優(yōu)勢(shì) 133審核的優(yōu)勢(shì) 134下一步 134使用教程:UTF-8和字符編碼格式 134概述 134檢測(cè)和修復(fù)文件 134支持其他編碼格式 135

本文為官方手冊(cè)翻譯,如文中有不妥之處,可參考:/book/phabricator/介紹篇(introduction)安裝向?qū)П竟?jié)介紹獲得以及運(yùn)行Phabricator所需的最基本安裝指引。簡(jiǎn)單的配置和安裝過(guò)程可以參考:.tw/blog/categories/phabricator/安裝要求Phabricator是一個(gè)LAMP應(yīng)用套件,因此最基本的要求就是LAMP環(huán)境:Linux:Linux的不同發(fā)行版及變種是必需的。MacOSX是一個(gè)可接受的Linux變種,Windows不是。Phabricator不能安裝在Windows系統(tǒng)上。在MacOSX,AmazonLinux,Ubuntu,RHEL和CentOS上運(yùn)行的Phabricator有活躍的貢獻(xiàn)者;如果你運(yùn)行在其他的Linux發(fā)行版上,請(qǐng)發(fā)送補(bǔ)丁或投訴。Apache(或nginx,或lighttpd):需要Apache2.2.7以上版本。MySQL:MySQL必需PHP:需要PHP5.2以上版本注意:Phabricator的命令行接口--Arcanist,可以在Windows上正常運(yùn)行。查看詳細(xì)說(shuō)明Aranist使用教程:Windows(官方頁(yè)面:ArcanistUserGuide:Windows)。你可能也需要一個(gè)域名和一臺(tái)能連接互聯(lián)網(wǎng)的電腦。安裝必需的組件如果你在Ubuntu或Redhat及其衍生版本上安裝,這里有可用的安裝腳本,這些腳本可以自動(dòng)處理下面文檔中討論的大部分操作:RedHat衍生版本:/rsrc/install/install_rhel-derivs.shUbuntu:/rsrc/install/install_ubuntu.sh如果以上安裝腳本可以正常安裝,那么你可以直接跳過(guò)下面的操作,轉(zhuǎn)到配置章節(jié),了解如何配置。這里對(duì)應(yīng)的系統(tǒng)下載對(duì)應(yīng)的安裝腳本,這里在對(duì)應(yīng)目錄(推薦/usr/<name_you_like>下)執(zhí)行wget/rsrc/install/install_ubuntu.sh即可。下載完畢后執(zhí)行,執(zhí)行腳安裝本按照屏幕提示進(jìn)行操作。下面列出的必要軟件,以及Phabricator源碼都會(huì)由腳本來(lái)下載/安裝。這里還要注意的是在安裝mysql時(shí),會(huì)有幾次讓你輸入root密碼的提示。這里推薦將密碼設(shè)置為空,以方便后面的使用。如果不幸,你已經(jīng)設(shè)置了root密碼,就需要將這個(gè)密碼擦除,參考之后“擦除mysql密碼”步驟。否則,如下所列將是你必須安裝的:git(在包管理系統(tǒng)中通常叫作git)Apache(通常叫作httpd或apache2)(或nginx)MySQL服務(wù)器(通常叫作mysqld或mysql-server)PHP(通常叫作php)必需的PHP擴(kuò)展:mbstring,iconv,mysql(或mysqli),curl,pcntl(或者"php-mysql"或"php5-mysql")可選的PHP擴(kuò)展:gd,apc(安裝該擴(kuò)展如果有困惑,請(qǐng)看下面的APC安裝說(shuō)明),xhprof(下面有說(shuō)明,僅在你對(duì)Phabricator做二次開(kāi)發(fā)時(shí)需要)如果你已經(jīng)設(shè)置好LAMP環(huán)境,你可以已經(jīng)獲得你所需的任何東東。既然你已經(jīng)安裝以上所需的軟件,下面獲取Phabricator以及其依賴(lài)包:$cdsomewhere/#picksomeinstalldirectory切換到安裝目錄somewhere/$gitclonegit:///facebook/libphutil.gitsomewhere/$gitclonegit:///facebook/arcanist.gitsomewhere/$gitclonegit:///facebook/phabricator.git擦除mysql密碼(可選)1.停止mysql進(jìn)程/etc/init.d/mysqlstop或servicemysqlstop2.無(wú)密碼進(jìn)入mysqlmysql–skip-grant-table&3.擦除root密碼當(dāng)執(zhí)行完以上語(yǔ)句,可以看到命令行為“mysql>”或與之類(lèi)似的標(biāo)示,這時(shí)可以通過(guò)SQL語(yǔ)句進(jìn)行操作。Mysql>usemysql;Mysql>updateusersetpassword=password(“”)whereuser=”root”;Mysql>flushprivileges;這里需要注意的是每句命令需要用分號(hào)“;”結(jié)尾。執(zhí)行完以上得操作,root的密碼就被清空。4.啟動(dòng)mysql/etc/init.d/mysqlstart或servicemysqlstart安裝APC(可選)如同所有寫(xiě)在PHP中的東西一樣,Phabricator在APC安裝完畢后,運(yùn)行會(huì)更快。你首先需要先安裝“pcre-devel”:sudoyuminstallpcre-devel#或sudoapt-getinstallpcre-devel然后你有兩個(gè)選擇。一個(gè)是安裝viaPECL(需要首先測(cè)試一下)sudoyuminstallphp-pearsudopeclinstallapc如果它不工作,在PECL文件夾中找到apc,具體的文檔在:/package/APC安裝APC是可選的,但是這里

強(qiáng)烈推薦安裝,特別是在主機(jī)端。一旦APC安裝完成,測(cè)試就可以執(zhí)行了:php-i|grepapc如果以上命令無(wú)法執(zhí)行,那就添加:extension=apc.so..在"/etc/php.d/apc.ini"文件中,或者"php.ini"文件中,可以通過(guò)"php-i"來(lái)找對(duì)應(yīng)的文件。安裝XHProf(可選)XHProf是一個(gè)PHP性能測(cè)試工具。你不需要安裝它,除非你需要對(duì)Phabricatoe進(jìn)行性能測(cè)試。你可以通過(guò)如下命令行進(jìn)行安裝:$peclinstallxhprof如果你已經(jīng)安裝了PEAR,并且是1.9.3之前的版本,你可能會(huì)運(yùn)行phpize的時(shí)候失敗。如果是這樣,你可以下載其源文件,然后對(duì)其進(jìn)行編譯:$cdextension/$phpize$./configure$make$sudomakeinstall你可能需要在你的php.ini文件中添加"extension=xhprof.so"選項(xiàng)。參考

/bug.php?id=59747

獲取更多相關(guān)信息。更新Phabricator由于Phabricator一直處于發(fā)展?fàn)顟B(tài),所以你應(yīng)該經(jīng)常更新它。如何更新:停止webserver的運(yùn)行運(yùn)行g(shù)it拉取libphutil/,arcanist/,phabricator運(yùn)行phabricator/bin/storageupgrade重新啟動(dòng)webserver參看配置向?qū)б垣@取更多細(xì)節(jié)。你也可以使用類(lèi)似如下的腳本以自動(dòng)化的方式更新:/rsrc/install/update_phabricator.sh配置篇(Configuration)軟件/服務(wù)配置向?qū)П竟?jié)包含了Phabricator所需的最基本的配置指引。前提該文檔假定你已經(jīng)安裝了所有必需的組件。如果沒(méi)有,請(qǐng)查看安裝向?qū)АO乱徊剑号渲媚愕膚ebserver(Apache,nginx或lighttpd)通過(guò)瀏覽器訪問(wèn)Phabricator按照指引完成設(shè)置WEB服務(wù)器:配置Apache注意:下面是Apache配置指引。如果使用nginx或lighttpd,可以訪問(wèn)官網(wǎng)的相關(guān)頁(yè)面。運(yùn)行Apache,并使用一個(gè)測(cè)試頁(yè)來(lái)驗(yàn)證其是否正常工作。Apache測(cè)試需要做如下工作:1.加入sververname(1)修改httpd.conf,這個(gè)文件在剛裝完Apache時(shí)應(yīng)該是空的。(2.4.x版本在/etc/apache2路徑下創(chuàng)建httpd.conf文件即可)加入如下內(nèi)容:ServerNamelocalhost(2)保存退出。2.驗(yàn)證Apache安裝(1)重啟Apache服務(wù)/etc/init.d/apache2restart(2)驗(yàn)證頁(yè)面打開(kāi)瀏覽器,在地址欄中輸入localhost??词欠駮?huì)出現(xiàn)“Itworks”的字樣,如果出現(xiàn)代表Apache運(yùn)行正常。否則,就需要去查看一下httpd.conf是否配置正確了。如果有問(wèn)題,請(qǐng)查看Apache的幫助文檔。確保mod_php和mod_rewrite啟用,如果你設(shè)置SSL,請(qǐng)開(kāi)啟mod_ssl模塊。這里得模塊都是默認(rèn)開(kāi)啟的。如果你還沒(méi)有設(shè)置一個(gè)域名指向你將要安裝的主機(jī)上。你可以安裝Phabricator到一個(gè)二級(jí)域名(如)上或一個(gè)完整域名上,但你不能安裝到一個(gè)已經(jīng)存在的網(wǎng)站的某個(gè)子目錄下。輸入你將要安裝到的域名以確保Apache可以為其正常服務(wù),并且DNS已經(jīng)正確配置。注意:域名必須包含點(diǎn)(.),而不只是一個(gè)名稱(chēng),如http://example/。否則,一些web瀏覽器將無(wú)法設(shè)置cookies。現(xiàn)在,可以創(chuàng)建一個(gè)VirtualHost條目(放置Phabricator到一個(gè)二級(jí)域名上)或編輯Directory條目的DocumentRoot。將如下所示:(2.4.x版本在/etc/apache2路徑下創(chuàng)建httpd.conf文件即可)httpd.conf(/etc/apache2/httpd.conf)<VirtualHost*>#Changethistothedomainwhichpointstoyourhost.ServerName#Changethistothepathwhereyouput'phabricator'whenyoucheckedit#outfromGitHubwhenfollowingtheInstallationGuide.##Makesureyouinclude"/webroot"attheend!DocumentRoot/path/to/phabricator/webrootRewriteEngineonRewriteRule^/rsrc/(.*)-[L,QSA]RewriteRule^/favicon.ico-[L,QSA]RewriteRule^(.*)$/index.php?__path__=$1[B,L,QSA]</VirtualHost>如果當(dāng)前的Apache配置不能為你所放置的Phabricator文檔目錄服務(wù),你需要添加如下的部分到httpd.conf中。當(dāng)官方給出的配置方法無(wú)法讓服務(wù)器正常工作,可以嘗試以下的配置方式。ServerName<VirtualHost*>#Changethistothedomainwhichpointstoyourhost.#Changethistothepathwhereyouput'phabricator'whenyoucheckedit#outfromGitHubwhenfollowingtheInstallationGuide.##Makesureyouinclude"/webroot"attheend!DocumentRoot/path/to/phabricator/webrootRewriteEngineonRewriteRule^/rsrc/(.*)-[L,QSA]RewriteRule^/favicon.ico-[L,QSA]RewriteRule^(.*)$/index.php?__path__=$1[B,L,QSA]</VirtualHost>按照官方給出的去修改httpd.conf文件,Apache可能會(huì)找不到服務(wù)器。會(huì)有如下提示:httpd:Couldnotreliablydeterminetheserver'sfullyqualifieddomainname,usingforServerName(這里的有時(shí)也會(huì)是)紅色字部分與官方給出得不一致,這樣在修改完重啟Apache服務(wù)器后就不會(huì)出錯(cuò)。適用與Apache版本為2.4之前版本ApacheOlderThan2.4<Directory"/path/to/phabricator/webroot">Orderallow,denyAllowfromall</Directory>適用與Apache版本為2.4或之后版本Apache2.4andNewer<Directory"/path/to/phabricator/webroot">Requireallgranted</Directory>更改后,重啟Apache,然后跳轉(zhuǎn)到下面的設(shè)置步驟。配置域名在以上的配置都正確的前提下,需要去修改hosts文件,需要對(duì)域名進(jìn)行直接的映射。Hosts路徑:/etc/hosts添加:server機(jī)IP域名(例如:hostlocal)配置完hosts后需要對(duì)網(wǎng)絡(luò)服務(wù)進(jìn)行重啟:執(zhí)行以下命令,重啟網(wǎng)絡(luò)服務(wù)即可:sudo/etc/init.d/networkingrestart設(shè)置現(xiàn)在,輸入你設(shè)置的域名。你將會(huì)看到設(shè)置指引。文檔的余下部分為其他具體設(shè)置步驟的附加說(shuō)明。存儲(chǔ):配置MySQL設(shè)置中,你需要配置MySQL。運(yùn)行MySQL,驗(yàn)證是否能正常連接。如果有問(wèn)題,請(qǐng)參考MySQL的幫助文檔。如果MySQL正常工作,你需要加載Phabricator的模式,運(yùn)行命令:phabricator/$./bin/storageupgrade根據(jù)提示進(jìn)行操作即可,將Phabricator的配置文件加載到mysql中。如果你配置了一個(gè)無(wú)特權(quán)的用戶以連接數(shù)據(jù)庫(kù),你將不得不重新設(shè)置為root用戶或其他的管理員以使模式能被應(yīng)用。phabricator/$./bin/storageupgrade--user<user>--password<password>可以使用--force參數(shù)來(lái)避免腳本進(jìn)行提示,對(duì)mysql強(qiáng)行加載配置文件。phabricator/$./bin/storageupgrade--force注意:每當(dāng)Phabricator進(jìn)行了更新,都需要運(yùn)行storageupgrade。每當(dāng)server關(guān)閉后再次開(kāi)啟,需要重新啟動(dòng)phabricator。頁(yè)面信息會(huì)提示你該怎么做。驗(yàn)收Phabricator:在MySQL配置完成后,可以到網(wǎng)頁(yè)上去登陸一下Phabricator,看工作是否正常。登陸頁(yè)面。會(huì)出現(xiàn)管理員注冊(cè)界面,按照提示填寫(xiě)管理員的真實(shí)信息。進(jìn)入phabricator的主頁(yè)面,在瀏覽器上部會(huì)出現(xiàn)如下圖顯示點(diǎn)擊“youhave9unresolvedsetupissues..”進(jìn)入issue頁(yè)面(我使用的當(dāng)前phabricator版本是2509c6b0f57dc533607fb6811adc02529b0d6fd8)。可以看到issue如下圖所示。其中有一個(gè)比較重要的設(shè)置,就是登陸界面的設(shè)置。NoAuthenticationProvidersConfigured(登陸issue)點(diǎn)擊進(jìn)入issue頁(yè)面→點(diǎn)擊“usingthe"Auth"application”→點(diǎn)擊"AddAuthenticationProvider",可以看到如下頁(yè)面。選擇一種登陸或身份驗(yàn)證方式。這里我們選擇“用戶名/密碼”的方式。確認(rèn)添加后進(jìn)入下一頁(yè),將所有選項(xiàng)都進(jìn)行勾選(默認(rèn)),也可以是根據(jù)需要進(jìn)行設(shè)置。這里有一個(gè)最短密碼長(zhǎng)度的設(shè)置account.minimum-password-length,可以在之后進(jìn)行設(shè)置。當(dāng)再次確認(rèn)后,登陸方式就被確認(rèn)應(yīng)用了。再次刷新頁(yè)面,這個(gè)issue就被修復(fù)了。如果不幸,你在管理員登陸完成后,沒(méi)有去修復(fù)這個(gè)issue,下一次在想進(jìn)入服務(wù)器就基本上是不可能了。這里提供一個(gè)辦法。因?yàn)槭褂玫檬莔ysql數(shù)據(jù)庫(kù)存儲(chǔ)我們的配置,這里我們可以將數(shù)據(jù)庫(kù)中得配置進(jìn)行刪除或者說(shuō)恢復(fù)成默認(rèn)的。這里我們需要一個(gè)清理數(shù)據(jù)庫(kù)的php文件,假設(shè)為clean.php。<?php$user="root";//數(shù)據(jù)庫(kù)用戶名$password="";//數(shù)據(jù)庫(kù)密碼$db_name="mysql";//數(shù)據(jù)庫(kù)名$link=mysql_connect("localhost:3306",$user,$password);mysql_select_db("$db_name",$link);echo"<p>正在清空數(shù)據(jù)庫(kù),請(qǐng)稍等<br>";$result=mysql_query("SHOWtables",$link);while($currow=mysql_fetch_array($result)){mysql_query("dropTABLEIFEXISTS$currow[0]");echo$currow[0]."<br>";}echo"<br>恭喜你清理MYSQL成功<br>";?>之后運(yùn)行phpclean.php,就可以重新再登陸進(jìn)入phabricator主頁(yè)面了。注意:這里root密碼是空的。如果root有密碼,可以參考擦除mysql密碼步驟。MySQLSTRICT_ALL_TABLESModeNotSet(mysql表格模式設(shè)定)點(diǎn)擊進(jìn)入issue頁(yè)面就會(huì)出現(xiàn)下圖所示的內(nèi)容。這個(gè)issue的解決辦法:在/etc/mysql/f中的[mysqld]字段下面即可,類(lèi)似這樣:[mysqld]##*BasicSettingsuser=mysqlpid-file=/var/run/mysqld/mysqld.pidsocket=/var/run/mysqld/mysqld.sockport=3306basedir=/usrdatadir=/var/lib/mysqltmpdir=/tmplc-messages-dir=/usr/share/mysqlsql-mode=STRICT_ALL_TABLESskip-external-locking….然后使用/etc/init.d/mysqlrestart重新啟動(dòng)mysql,使剛才的修改可能會(huì)遇到的問(wèn)題:當(dāng)將“sql-mode=STRICT_ALL_TABLES”放在了“skip-external-locking”的下一行時(shí),會(huì)出現(xiàn)如下錯(cuò)誤:Can'tconnecttolocalMySQLserverthroughsocket'/var/run/mysqld/mysqld.sock'在我的嘗試的時(shí)候沒(méi)有很好的辦法來(lái)覺(jué)得這個(gè)問(wèn)題,唯一的辦法就是將mysql卸載干凈后重裝:刪除mysql

sudoapt-getautoremove--purgemysql-server-5.0

sudoapt-getremovemysql-server

sudoapt-getautoremovemysql-server

sudoapt-getremovemysql-common//這個(gè)很重要

上面的其實(shí)有一些是多余的。清理殘留數(shù)據(jù)dpkg-l|grep^rc|awk'{print$2}'|sudoxargsdpkg-P然后在用安裝腳本進(jìn)行安裝,再運(yùn)行bin/storageupgrade將初始化的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)即可。NoSendmailBinaryFound(設(shè)置郵件服務(wù))點(diǎn)擊進(jìn)入issue界面后,會(huì)有如同下圖的顯示。點(diǎn)擊頁(yè)面上的“Editmetamta.mail-adapter”,進(jìn)入郵件適配器頁(yè)面??梢詤⒖枷聢D進(jìn)行配置:選擇合適的“value”,保存即可解決這個(gè)issue。ServerTimezoneNotConfigured(設(shè)置服務(wù)器的時(shí)區(qū))時(shí)區(qū)的配置是很重要的。php默認(rèn)顯示的時(shí)間都是格林威治標(biāo)準(zhǔn)時(shí)間,和北京時(shí)間差了正好8個(gè)小時(shí)。點(diǎn)擊進(jìn)入issue頁(yè)面,會(huì)出現(xiàn)如下圖的顯示:如圖中說(shuō)的,這里需要配置兩個(gè)地方。第一個(gè)地方:修改/etc/php5/apache2/php.ini配置文件,在[date]字段后面找到被注釋掉的“;date.timezone=”,將注釋打開(kāi)。但是填什么這是個(gè)問(wèn)題。這里我們就要看一下頁(yè)面中給出的“PHPDocumentation”了。打開(kāi)“PHPDocumentation”頁(yè)面,找到“date.timezone”字符,點(diǎn)擊進(jìn)入對(duì)應(yīng)頁(yè)面。隨后打開(kāi)的頁(yè)面支持“簡(jiǎn)體中文”顯示,如果英文不太好的同學(xué)就可以在這里找“所支持的時(shí)區(qū)列表”如果英文沒(méi)問(wèn)題的同學(xué)直接找“ListofSupportedTimezones”兩個(gè)連接其實(shí)是一個(gè),點(diǎn)擊進(jìn)入后,在頁(yè)面的上部就有對(duì)應(yīng)支持區(qū)域的連接,這里是“七大洲”+“太平洋地區(qū)”+“大西洋地區(qū)”+“其他”組成的。我們需要按照自己服務(wù)器所在地域來(lái)對(duì)時(shí)區(qū)進(jìn)行設(shè)置。我們這里選擇Asia(亞洲),頁(yè)面跳轉(zhuǎn)后,可以看到一些知名城市的名字。這些城市里面,中國(guó)的城市有:(按頁(yè)面中的出現(xiàn)順序)Asia/Chongqing(重慶)Asia/Harbin(哈爾濱)Asia/Hong_Kong(香港)Asia/Macao(澳門(mén))Asia/Shanghai(上海)Asia/Taipei(臺(tái)北)Asia/Urumqi(烏魯木齊)所以,配置文件中寫(xiě)成date.timezone=Asia/Shanghai即可。大家也可以根據(jù)自己的實(shí)際情況,對(duì)時(shí)區(qū)進(jìn)行配置。note1:網(wǎng)絡(luò)上說(shuō)是設(shè)置成“PRC”(中華人民共和國(guó))也沒(méi)有問(wèn)題,不過(guò)在文檔中,我們沒(méi)有看到。保險(xiǎn)起見(jiàn),我們使用了Asia/Shanghai。note2:很奇怪,文檔里面沒(méi)有北京第二個(gè)地方:再就是對(duì)phabricator的時(shí)區(qū)進(jìn)行設(shè)置,點(diǎn)擊“Editphabricator.timezone”進(jìn)入對(duì)應(yīng)頁(yè)面,在“Value”欄中輸入“Asia/Shanghai”。然后保存設(shè)置即可。UploadLimitNotYetConfigured(配置上載文件大?。┻@個(gè)在后期的管理以及對(duì)數(shù)據(jù)的備份上是比較重要的。點(diǎn)擊issue進(jìn)入對(duì)應(yīng)頁(yè)面:之后點(diǎn)擊“Editstorage.upload-size-limit”,在“Value”欄中填寫(xiě)你認(rèn)為適當(dāng)?shù)拇笮?,例如下圖所示:大家可以根據(jù)自己的需要進(jìn)行配置。配置完成后,保存即可。MissingRepositoryLocalPath(配置本地庫(kù))這個(gè)庫(kù)不是用戶的庫(kù),是Phabricator存儲(chǔ)一些必要依賴(lài)文件的庫(kù)。點(diǎn)擊issue,進(jìn)入對(duì)應(yīng)頁(yè)面,會(huì)出現(xiàn)如下圖所示的內(nèi)容:這里是Phabricator的默認(rèn)地址,如果/var/repo/這個(gè)地址已經(jīng)被其他的軟件使用或者你想把他放到別的地方,可以點(diǎn)擊“Editrepository.default-local-path”對(duì)其進(jìn)行地址配置。因?yàn)槲覀兪褂玫氖且粋€(gè)剛裝好的系統(tǒng),所以不存在/var/repo/這個(gè)目錄,也不存在被占用的情況。我們就直接去創(chuàng)建它,然后刷新頁(yè)面,這個(gè)issue也被修復(fù)了。BaseURINotConfigured(配置服務(wù)器基址)這里會(huì)和域名解析相關(guān)。個(gè)人不推薦設(shè)置這個(gè)基址,一旦設(shè)置了,只能通過(guò)對(duì)應(yīng)域名或者IP進(jìn)行訪問(wèn)。./bin/configsetphabricator.base-uri'/'或./bin/configsetphabricator.base-uri'0'在phabricator安裝目錄下執(zhí)行對(duì)應(yīng)的命令后,提示“Set'phabricator.base-uri'inlocalconfiguration.”。再刷新網(wǎng)頁(yè),該issue就被修復(fù)了。PhabricatorDaemonsAreNotRunning(開(kāi)啟守護(hù)線程)守護(hù)線程的開(kāi)啟對(duì)于Phabricator,意味著可以啟動(dòng)后臺(tái)程序,比如:發(fā)送郵件。在phabricator安裝目錄下的bin目錄下執(zhí)行phabricator/bin/#./phdstart后,出現(xiàn)一下提示代表守護(hù)線程已經(jīng)被開(kāi)啟。Preparingtolaunchdaemons.NOTE:Logswillappearin'/var/tmp/phd/log/daemons.log'.Launchingdaemon"PhabricatorRepositoryPullLocalDaemon".Launchingdaemon"PhabricatorGarbageCollectorDaemon".Launchingdaemon"PhabricatorTaskmasterDaemon".Launchingdaemon"PhabricatorTaskmasterDaemon".Launchingdaemon"PhabricatorTaskmasterDaemon".Launchingdaemon"PhabricatorTaskmasterDaemon".Done刷新頁(yè)面后,這個(gè)issue也就被修復(fù)了。'apc.stat'EnabledinProduction(開(kāi)啟phabricator開(kāi)發(fā)者模式)這里為了安全考慮,“phabricator.developer-mode”變量默認(rèn)為false。而在php中對(duì)應(yīng)的設(shè)置需要去從必要得文件中獲取這些信息。點(diǎn)擊issue就有如上圖所示的內(nèi)容:*如果不開(kāi)啟,需要去修改php的配置文件,不會(huì)影響使用。*如果開(kāi)啟,進(jìn)入“Editphabricator.developer-mode”頁(yè)面,將開(kāi)發(fā)者模式開(kāi)啟即可。這里我們選擇了開(kāi)啟,為了后期方便一些未知問(wèn)題的處理。下一步繼續(xù):設(shè)置你的管理帳號(hào)和登陸/注冊(cè),請(qǐng)參見(jiàn)

配置賬戶及注冊(cè)機(jī)制(官方頁(yè)面:ConfiguringAccountsandRegistration;了解更高級(jí)的配置主題,請(qǐng)參見(jiàn)

ConfigurationUserGuide:AdvancedConfiguration;配置上傳的文件和附件的存儲(chǔ)位置,請(qǐng)參見(jiàn)

ConfiguringFileStorage;配置Phabricator以支持發(fā)送郵件,請(qǐng)參見(jiàn)

ConfiguringOutboundEmail;配置Phabricator以支持接收郵件,請(qǐng)參見(jiàn)

ConfiguringInboundEmail;導(dǎo)入版本倉(cāng)庫(kù),請(qǐng)參見(jiàn)

DiffusionUserGuide;了解守護(hù)進(jìn)程工作,請(qǐng)參見(jiàn)

ManagingDaemonswithphd;配置備份工作,請(qǐng)參見(jiàn)

ConfiguringBackups;為Phabricator貢獻(xiàn)力量,請(qǐng)參見(jiàn)ContributorIntroduction.配置賬戶及注冊(cè)機(jī)制介紹如何配置,可以讓用戶對(duì)Phabricator進(jìn)行訪問(wèn)。概述Phabricator支持多種登陸系統(tǒng)。你可以通過(guò)配置這些登陸系統(tǒng)(開(kāi)啟或關(guān)閉),改變現(xiàn)有用戶的登陸方式,以及新用戶的注冊(cè)方式。登陸方式這里稱(chēng)為“身份驗(yàn)證”。例如,開(kāi)啟“用戶名/密碼”登陸模式,這是一種比較傳統(tǒng)的登陸方式,使用“用戶名”和“密碼”匹配進(jìn)行“身份驗(yàn)證”。用戶名/密碼”登陸這里還提供了其他的登陸方式,可以用某些“憑證”(或稱(chēng)為“證書(shū)”)來(lái)進(jìn)行驗(yàn)證登陸。例如:Username/Password:

Usersuseausernameandpasswordtologinorregister.LDAP:

UsersuseLDAPcredentialstologinorregister.OAuth:

UsersuseaccountsonasupportedOAuth2provider(likeGitHub,Facebook,orGoogle)tologinorregister.OtherProviders:

Moreprovidersareavailable,andPhabricatorcanbeextendedwithcustomproviders.Seethe"Auth"applicationforalistofavailableproviders.在Phabricator安裝完畢后,默認(rèn)情況下這些登陸系統(tǒng)都是不開(kāi)啟的,需要你使用具有管理員權(quán)限的用戶添加一種或多種登陸系統(tǒng),來(lái)支持用戶的登陸/注冊(cè)。當(dāng)你添加了一種方式后,你可以連接已經(jīng)存在的賬號(hào)(比如:可以直接將一個(gè)GitHubOAuth賬戶連接成Phabricator賬戶)?;蛘哂脩艨梢杂眠@種方式注冊(cè)新賬號(hào)(前提:需要開(kāi)啟一些與注冊(cè)有關(guān)的選項(xiàng))恢復(fù)管理員賬戶如果管理員意外將用戶鎖住或無(wú)法登陸(比如:忘記密碼),你可以使用Phabricator下的bin/auth來(lái)恢復(fù)管理員賬戶。使用下面的命令進(jìn)行恢復(fù)操作:phabricator/$./bin/authrecover<username>...<username>處是你要恢復(fù)的管理員賬號(hào)的用戶名。這個(gè)操作將會(huì)給出一個(gè)連接,使用該連接登陸,系統(tǒng)會(huì)將你認(rèn)為是管理員用戶。賬戶管理使用管理員賬號(hào)登陸,到<phabricator>/people/或點(diǎn)擊主頁(yè)面上的“People”連接,之后就可以看到很多選項(xiàng)可以用來(lái)創(chuàng)建賬戶或者修改賬戶信息。手動(dòng)創(chuàng)建新賬戶有兩種手動(dòng)創(chuàng)建賬戶的方式:現(xiàn)階段使用頁(yè)面的方式配置賬戶,可能無(wú)法設(shè)置密碼。1.通過(guò)主頁(yè)面上的“People”選項(xiàng)(簡(jiǎn)單)2.通過(guò)CLI(command-lineinterface,命令行界面)運(yùn)行accountadimin腳本。(這種方式需要添加一些選項(xiàng))。有些選項(xiàng)(例如:密碼和賬戶的級(jí)別)只能在命令行界面下使用。你可以通過(guò)這個(gè)方式恢復(fù)一個(gè)擁有管理員權(quán)限的用戶(當(dāng)你不小心將把你的管理員級(jí)別取消了)或者創(chuàng)建一個(gè)管理員或普通用戶。phabricator/$./bin/accountadmin下面給出對(duì)應(yīng)的命令:(1.紅色為手動(dòng)輸入。2.[Y/n]選項(xiàng),大寫(xiě)為默認(rèn)選項(xiàng)。)phabricator/$./bin/accountadminEnterausernametocreateanewaccountoreditanexistingaccount.Enterausername:testThereisnoexistinguseraccount'test'.Doyouwanttocreateanew'test'account?[Y/n]YEnteruserrealname:wangEnteruseremailaddress:wang@Enterapasswordforthisuser[blanktoleaveunchanged]:Shouldthisuserbeasystemagent?[y/N]NShouldthisuserbeanadministrator?[y/N]NACCOUNTSUMMARYOLDVALUENEWVALUEUsernametestRealNamewangEmailwang@PasswordUpdatedSystemAgentNNAdminNNSavethesechanges?[Y/n]YSavedchanges.當(dāng)在命令行界面執(zhí)行完畢后,“People”中的顯示如下圖:使用命令行界面創(chuàng)建普通用戶備份配置及執(zhí)行遷移對(duì)phabricator備份的一些建議。概述目前Phabricator還沒(méi)一個(gè)全面的備份系統(tǒng),不過(guò)創(chuàng)建備份對(duì)于Phabricator也不是很困難。Phabricator自帶的的一些工具可以有效的幫助你完成備份工作。下面列出的數(shù)據(jù),很有必要去做備份。theMySQLdatabases;(數(shù)據(jù)庫(kù)信息)uploadedfiles;(上傳的文件)yourPhabricatorconfigurationfiles.(Phabricator的配置文件)下面我們將會(huì)討論如何去備份這些數(shù)據(jù)備份:MySQL數(shù)據(jù)庫(kù)Phabricator中的很多數(shù)據(jù)都存在MySQL數(shù)據(jù)庫(kù)中,所以備份這些數(shù)據(jù)是很有必要的。你可以再Phabricator安裝的目錄下找到bin/storagedump,該腳本可以獲取MySQL中所有的數(shù)據(jù)庫(kù)。我們也可以使用MySQL中自帶的數(shù)據(jù)庫(kù)獲取腳本——mysqldump。這個(gè)腳本也可以完成獲取MySQL所有數(shù)據(jù)庫(kù)的功能。從腳本中獲取的數(shù)據(jù)可能會(huì)很多,這些數(shù)據(jù)時(shí)可以進(jìn)行壓縮。以下的命令可以幫助你使用gzip來(lái)儲(chǔ)存從MySQL數(shù)據(jù)庫(kù)中獲取出來(lái)的數(shù)據(jù)。phabricator/$./bin/storagedump|gzip>backup.sql.gz然后,可以將備份好的壓縮包放在一個(gè)安全的地方(如同將一個(gè)小盒子埋在老樹(shù)樁下)?;謴?fù):MySQL可以使用如下命令對(duì)MySQL進(jìn)行恢復(fù)$gunzip-cbackup.sql.gz|mysql備份:上載文件上載文件可能存儲(chǔ)在不同的位置,備份過(guò)程需要得到文件存儲(chǔ)的地址。Default/MySQL:在默認(rèn)的情況下,上載文件都存在MySQL數(shù)據(jù)庫(kù)中,所以備份MySQL數(shù)據(jù)庫(kù)就等于備份了所有上載文件。所以,這里就不用做一些額外的工作。AmazonS3:如果使用的是AmazonS3(Amazon

SimpleStorageService,亞馬遜簡(jiǎn)易儲(chǔ)存服務(wù))。當(dāng)完全安裝后,冗余和備份都內(nèi)置在服務(wù)中。當(dāng)你不大確定Amazon的服務(wù)能對(duì)你的數(shù)據(jù)進(jìn)行備份是,你可以在Phabricator外圍備份你的S3庫(kù)。(感覺(jué)這番話說(shuō)的沒(méi)什么用)LocalDisk:如果你使用本地磁盤(pán)存儲(chǔ)引擎,你需要手動(dòng)備份上載文件。你可以將存儲(chǔ)著數(shù)據(jù)的根目錄進(jìn)行簡(jiǎn)單的復(fù)制,將復(fù)制的備份放到安全的地方保存。(根目錄可從storger.localdisk.path配置變量中得到)關(guān)于如何存儲(chǔ)文件的信息,可以參考ConfiguringFileStorage?;謴?fù):上載文件將備份完畢的數(shù)據(jù)做回拷貝,去替換對(duì)應(yīng)位置的數(shù)據(jù)即可。備份:配置文件配置文件也是很有必要做備份,這里包括一些部署和管理Phabricator的腳本(例如自定義升級(jí)腳本)。這里比較好的做法是:檢查一下當(dāng)前的配置文件能使系統(tǒng)正常工作。驗(yàn)證沒(méi)有問(wèn)題后,將他們存入一個(gè)私人庫(kù)中,以便將來(lái)更新和還原?;謴?fù):配置文件要恢復(fù)配置文件,只需要將正確的配置文件拷貝會(huì)正確的位置即可。安全性MySQL獲取的數(shù)據(jù)沒(méi)有內(nèi)置加密,并且很多數(shù)據(jù)以原始形式和可訪問(wèn)形式存儲(chǔ)在Phabricator中,所以給用戶訪問(wèn)備份是一個(gè)很像給他們?cè)L問(wèn)本機(jī)上運(yùn)行的phabricator。用戶可以可以從備份中得到很多信息,例如:讀取了原則上他們應(yīng)該看不到的數(shù)據(jù)獲取了Phabricator保存的所有郵件地址,以及秘鑰文件獲取了其他用戶的會(huì)話和管道標(biāo)記,并效仿他們一些信息會(huì)保存很久,所以即使一個(gè)很早之前的備份被泄露都會(huì)存在風(fēng)險(xiǎn)。在限制訪問(wèn)的phabricator主機(jī)或數(shù)據(jù)庫(kù)的同時(shí),也應(yīng)該限制用戶對(duì)備份的訪問(wèn)。配置上載文件限制概述在多個(gè)應(yīng)用程序?qū)又校募蟼鞔笮∈怯善闻渲脕?lái)限制的。一般情況下,設(shè)定最大值上傳值是多種限制因素中最有效的一個(gè)。有時(shí)需要調(diào)高上限的閥值,才能將要上載大文件上傳到服務(wù)器端。限制上載的因素有列舉如下:HTTPServer:HTTP服務(wù)器就會(huì)設(shè)置最大請(qǐng)求大小。當(dāng)你的文件大小超出了限制,將會(huì)看到來(lái)自服務(wù)器的警告提示。以下限制指令,限制了請(qǐng)求上傳文件的大小,所以要上傳的文件不能大于上限閥值。Apache:Apache限制請(qǐng)求是通過(guò)

LimitRequestBody

指令。nginx:nginx通過(guò)nginx

client_max_body_size

指令來(lái)限定.這個(gè)指令的默認(rèn)值是

1M。lighttpd:lighttpd通過(guò)

server.max-request-size

指令來(lái)進(jìn)行限制.PHP:PHP也有一些限制上載的指令。這些指令可以在php.ini文件中找到。upload_max_filesize:設(shè)置最大可上載文件指令。默認(rèn)值為

2M。post_max_size:設(shè)置最大投遞大小指令。默認(rèn)值為

8M。memory_limit:對(duì)于上載的文件來(lái)說(shuō),在Phabricator調(diào)整內(nèi)存限制之前,都需要讀入到內(nèi)存中去。如果文件大小超過(guò)了之前設(shè)置好的大小,PHP將會(huì)提示你。max_input_vars:當(dāng)文件上載是通過(guò)HTML5的拖拽動(dòng)作完成時(shí),PHP會(huì)通過(guò)“投遞參數(shù)”來(lái)分析文件。當(dāng)上載文件里面有過(guò)多的“碎片”,可能會(huì)觸發(fā)到max_input_vars

指令。(你可能需要在這里設(shè)置一些“天文數(shù)字”)StorageEngines:一些存儲(chǔ)引擎也可以設(shè)置最大可上傳文件值。上傳文件時(shí),你必須保證你的文件沒(méi)有超過(guò)存儲(chǔ)引擎設(shè)置好的上限。下面列出Phabricator支持的存儲(chǔ)引擎:MySQLEngine:通過(guò)Phabricator的

storage.mysql-engine.max-size變量來(lái)進(jìn)行設(shè)置。AmazonS3:在Phabricator的實(shí)現(xiàn)中,上載文件的最大值被限定為5G。LocalDisk:最大上載文件大小,小于磁盤(pán)剩余空間即可。ResourceConstraints(資源約束):文件上傳的最大值也會(huì)受到硬件資源的影響。在上載文件被移動(dòng)到存儲(chǔ)引擎前,需要整體寫(xiě)進(jìn)磁盤(pán)中;如果文件過(guò)大,將會(huì)無(wú)法寫(xiě)入到磁盤(pán)中。同樣,服務(wù)器都會(huì)有些硬性限制,會(huì)從根本上阻止Phabricator處理那些超級(jí)大的文件(GB/TB級(jí)別)。所以在某些情況下,Phabricator的表現(xiàn)可能會(huì)不大理想。PhabricatorMasterLimit:主要限制指令

storage.upload-size-limit,將會(huì)在圖形頁(yè)面上顯示最大上載限制值。這些設(shè)置在Phabricator不會(huì)都用到,這些值需要通過(guò)如下所示的手工設(shè)置的方式來(lái)完成。在軟件端(PHP,MySQL)設(shè)置你要限制的大小,例如

100M。將以上的設(shè)置都調(diào)整到很高,以便你能上載更多的文件。不過(guò)這里也需要對(duì)安全性進(jìn)行商榷。設(shè)置

storage.upload-size-limit

為你想要的值。圖形界面將會(huì)顯示你設(shè)置的數(shù)值。上傳一個(gè)大文件,確定它在服務(wù)器上能正?!肮ぷ鳌啊E渲冒l(fā)送\接收郵件郵件收發(fā)功能在Phabricator中也是一個(gè)必不可少的功能。在圖形界面端,新用戶的注冊(cè)對(duì)這個(gè)功能的依賴(lài)是很強(qiáng)的,新用戶可以通過(guò)郵件激活他們的賬號(hào)。配置發(fā)送郵件概述Phabricator通過(guò)各種不同得適配器發(fā)送郵件:本地主機(jī)上基于SMTP的sendmain服務(wù)本地主機(jī)上基于SMTP的postfix亞馬遜的SES(SimpleEmailService,簡(jiǎn)單郵件服務(wù))SendGrid的RESTAPI自己寫(xiě)的適配器將郵件存放在一個(gè)地方,并不發(fā)送它在這其中,sendmail是默認(rèn)選項(xiàng),但是需要做一些配置。SES和SendGrid配置起來(lái)都很簡(jiǎn)單,但是需要花錢(qián),并且還有一些限制。寫(xiě)一個(gè)自定義得解決方案,需要去深挖代碼。下面將會(huì)對(duì)每種配置方法進(jìn)行詳細(xì)介紹。Phabricator也可以用以下兩種方式發(fā)送郵件:馬上發(fā)送,當(dāng)信息產(chǎn)生后(默認(rèn))通過(guò)域名后臺(tái)發(fā)送在后臺(tái)發(fā)送郵件需要啟動(dòng)Phabricator得守護(hù)進(jìn)程,但是可以大大提高醫(yī)用程序得速度。更多使用域名的信息,可參考ManagingDaemonswithphd.基本配置無(wú)論以何種方式發(fā)送電子郵件,你都要在相關(guān)的配置文件中配置這些關(guān)鍵字。metamta.default-address決定默認(rèn)的郵件發(fā)送方。如果你的域名為,就要設(shè)置一些類(lèi)似這樣的郵箱地址:"noreply@".metamta.domain需要設(shè)置你的域名,例如""。metamta.can-send-as-user在大多數(shù)情況下應(yīng)該是false,更多信息需要瀏覽default.conf.php的文檔。配置郵件適配器選擇如何發(fā)送郵件,配置關(guān)鍵字metamta.mail-adapter的值??赡艿闹等缦滤荆篜habricatorMailImplementationPHPMailerLiteAdapter:默認(rèn)值,使用"sendmail",可見(jiàn)"Adapter:Sendmail"節(jié).PhabricatorMailImplementationPHPMailerAdapter:使用SMTP,可見(jiàn)"Adapter:SMTP"節(jié)PhabricatorMailImplementationAmazonSESAdapter:使用AmazonSES,可見(jiàn)"Adapter:AmazonSES"節(jié).PhabricatorMailImplementationSendGridAdapter:使用SendGrid,可見(jiàn)"Adapter:SendGrid"節(jié).SomeCustomClassYouWrite:使用自己寫(xiě)的適配器,可見(jiàn)"Adapter:Custom"節(jié).PhabricatorMailImplementationTestAdapter:這個(gè)值將完全禁用郵件發(fā)送。如果你不想對(duì)外發(fā)送郵件,可以使用該值?;蛘邥簳r(shí)跳過(guò)這一步,以后再來(lái)配置。Adapter:Sendmail這是默認(rèn)選項(xiàng),使能時(shí)需要選擇PhabricatorMailImplementationPHPMailerLiteAdapter作為metamta.mail-adapter的值。需要有sendmail服務(wù)已經(jīng)在系統(tǒng)中安裝。大多數(shù)MTA(例如,sendmail,qmail,postfix)都需要預(yù)裝sendmail服務(wù)(在這個(gè)服務(wù)在你的機(jī)器上不是默認(rèn)安裝好的)。為了安裝順利,可以參考相關(guān)內(nèi)容,在你喜歡的MTA的文檔中。既然你要發(fā)送郵件,就應(yīng)該有一些東西,類(lèi)似SPF規(guī)則、黑洞和MTA設(shè)置等等。不過(guò),這已經(jīng)超過(guò)了本指南的范疇。如果你已經(jīng)可以用命令行發(fā)送電子郵件或者知道應(yīng)該如何配置它了,這個(gè)選項(xiàng)就很明朗了。如果你不知道應(yīng)該怎么去把郵件發(fā)送出去,可以參考使用亞馬遜SES。Adapter:SMTP對(duì)于多數(shù)情況都是使用SMTP發(fā)送郵件,你可以使用'sendmail'或'postfix'來(lái)做這件事。但是,多數(shù)SMTP服務(wù)器需要認(rèn)證,以及'sendmail'郵件發(fā)送器不工作。如果你想試試postfix,為了安裝順利,參照'postfix作為MTA的文檔,然后你可以配置使用SMTP。為了使Phabricator使用SMTP,需要對(duì)如下的關(guān)鍵字進(jìn)行配置:metamta.mail-adapter:設(shè)置為"PhabricatorMailImplementationPHPMailerAdapter".phpmailer.mailer:設(shè)置為"smtp".phpmailer.smtp-host:設(shè)置smtp服務(wù)器的名字phpmailer.smtp-port:設(shè)置smto服務(wù)器對(duì)應(yīng)的端口。phpmailer.smtp-user:設(shè)置用戶名,用于認(rèn)證。phpmailer.smtp-password:設(shè)置密碼,用于認(rèn)證。Adapter:AmazonSES亞馬遜SES是亞馬遜云郵件服務(wù)。它是付費(fèi)得,但是比sendmail服務(wù)更容易去配置,還有更簡(jiǎn)單的發(fā)送郵件配置。使用亞馬遜SES,你需要在亞馬遜上注冊(cè)一個(gè)賬號(hào),可以通過(guò)這個(gè)連接/ses/進(jìn)行注冊(cè)。為了使Phabricator使用亞馬遜SES,設(shè)置如下得關(guān)鍵字:metamta.mail-adapter:設(shè)置為"PhabricatorMailImplementationAmazonSESAdapter".amazon-ses.access-key:設(shè)置你的亞馬遜SES訪問(wèn)鍵。amazon-ses.secret-key:設(shè)置你的亞馬遜SES密鑰。NOTE:亞馬遜SES需要驗(yàn)證你的“發(fā)送方”地址。通過(guò)"metamta.default-address"關(guān)鍵字配置默認(rèn)“發(fā)送方”地址,然后按照亞馬遜SES驗(yàn)證過(guò)程進(jìn)行驗(yàn)證。在驗(yàn)證沒(méi)有結(jié)束之前,你是不能發(fā)送郵件的。NOTE:亞馬遜SES接收郵件有延遲(大概1~2秒),并且使用后臺(tái)發(fā)送郵件的方式,會(huì)提高應(yīng)用程序的性能。Adapter:SendGridSendGrid是一個(gè)郵件傳送服務(wù),類(lèi)似于亞馬遜SES。你可以從該連接得到更多信息/。它配置起來(lái)比較容易,但是付費(fèi)的??梢杂脙煞N方式來(lái)配置SenfGrid:通過(guò)SMTP。通過(guò)RESTAPI。如果使用SMTP,僅僅需要配置sendmail服務(wù),并使用Phabricator安裝后的默認(rèn)值。如果使用RESTAPI,按照以下說(shuō)明進(jìn)行。配置Phabricator使用SendGrid,設(shè)置如下關(guān)鍵字:metamta.mail-adapter:設(shè)置成"PhabricatorMailImplementationSendGridAdapter"sendgrid.api-user:設(shè)置SendGrid登陸名sendgrid.api-key:設(shè)置SendGrid密碼當(dāng)你登陸到了你的SendGrid賬戶,你可以在(/developer)很容易找到這些信息。Adapter:自定義你可以通過(guò)一個(gè)子類(lèi)實(shí)例,提供自定義的適配器。metamta.mail-adapter需要設(shè)置成PhabricatorMailImplementationAdapterTODO:需要有較好的記錄,來(lái)描述這一次對(duì)Phabricator的擴(kuò)展。Adapter:關(guān)閉郵件收發(fā)機(jī)制當(dāng)你不需要發(fā)送任何郵件或不想對(duì)它進(jìn)行配置時(shí),你可以使用PhabricatorMailImplementationTestAdapter完全讓郵件發(fā)送機(jī)制失效。將metamta.mail-adapter設(shè)置成"PhabricatorMailImplementationTestAdapter"。配置MetaMTA使用守護(hù)進(jìn)程發(fā)送郵件無(wú)論是如何從服務(wù)器端發(fā)送出電子郵件的,你可以切換到MTA主處理過(guò)程和進(jìn)入一個(gè)守護(hù)線程。這將極大的提高應(yīng)用程序得性能。特別是對(duì)于DifferentialRevisions和ManiphestTasks操作,發(fā)送出“通知”郵件。如果你設(shè)置metamta.send-immediately為false,MetaMTA將隊(duì)列中得郵件通過(guò)PhabricatorTaskmasterDaemon(一個(gè)守護(hù)線程)進(jìn)行發(fā)送。更多有關(guān)使用守護(hù)線程的信息,可參考ManagingDaemonswithphd.測(cè)試/調(diào)試發(fā)送郵件你可以使用bin/mail腳本來(lái)進(jìn)行測(cè)試、調(diào)試、檢查發(fā)送郵件。phabricator/$./bin/maillist-outbound#Listoutboundmail.phabricator/$./bin/mailshow-outbound#Showdetailsaboutmessages.phabricator/$./bin/mailsend-test#Sendtestmessages.運(yùn)行bin/mailhelp<command>會(huì)有更多有關(guān)這些命令的幫助信息。你可以使用守護(hù)程序控制臺(tái),對(duì)守護(hù)線程進(jìn)行監(jiān)控(/daemon/,或者在主頁(yè)面點(diǎn)擊DaemonConsole)。配置接收郵件序言這里有幾種基本方法可用:使用SendGrid(/),使用起來(lái)很簡(jiǎn)單,但是收費(fèi).使用你己有的MTA(MailTransferAgent,郵件傳輸代理),配置起來(lái)有些折騰人,不過(guò)免費(fèi)。如果你想使用其他服務(wù)來(lái)支持這個(gè)功能,請(qǐng)讓Phabricator開(kāi)發(fā)組協(xié)助你,否則配置起來(lái)可能會(huì)有遇到很多的麻煩。配置Phabricator在默認(rèn)的情況下,Phabricator使用"noreply@"郵件地址作為發(fā)送方(可以通過(guò)配置

metamta.default-address變量來(lái)改變這個(gè)默認(rèn)值),以及為用戶生成“回復(fù)/通知”郵件(例如,通過(guò)評(píng)論)。當(dāng)用戶進(jìn)行某些操作時(shí),就會(huì)生成了郵件通知。用戶可以通過(guò)回復(fù)郵件來(lái)討論之前的改動(dòng),不過(guò),Phabricator不會(huì)記錄這些討論內(nèi)容,并且用戶不能通過(guò)這種郵件的方式進(jìn)行一些操作,例如:發(fā)布任務(wù),要求改變當(dāng)前版本的修訂。為了讓Phabricator捕捉到這些行為,并能讓用戶在Phabricator通過(guò)郵件的方式對(duì)服務(wù)器進(jìn)行操作,需要對(duì)下面變量進(jìn)行設(shè)置:metamta.differential.reply-handler-domain:對(duì)Differential(commitTasksandBugs)使用郵件通知。metamta.maniphest.reply-handler-domain:對(duì)Maniphest(RepositoryBrowser)使用郵件通知。可以通過(guò)如下的說(shuō)明,來(lái)設(shè)置這幾個(gè)“域名變量”。例如:主頁(yè)地址為""。一般的做法是將他們都設(shè)置在同一個(gè)“域”內(nèi),例如“”。當(dāng)設(shè)置完成并確定正確后,發(fā)送出去的郵件將會(huì)使用“回復(fù)”地址,例如"T123+273+af310f9220ad@"。并且系統(tǒng)會(huì)分析“回復(fù)”地址收到的郵件,允許用戶使用Maniphest發(fā)布任務(wù),以及使用Differential功能去修改當(dāng)前版本的修訂。如果你并不想phabricator占用整個(gè)域(或子域),可以配置一個(gè)通用前綴,這樣的話可以使用一個(gè)單獨(dú)的收件箱接收郵件。利用這個(gè)變量

metamta.single-reply-handler-prefix

來(lái)決定你所選擇的前綴。并且,phabricator將會(huì)為“回復(fù)”地址,預(yù)先處理它。接收器的地址是上面所設(shè)置的前綴和'+'字符以及后面的域名,不過(guò)對(duì)于后面來(lái)說(shuō),這些在本質(zhì)上都是被忽略的??梢詾槿蝿?wù)創(chuàng)建設(shè)置一個(gè)個(gè)郵件地址,例如

bugs@,當(dāng)它接收到封郵件時(shí),都會(huì)去創(chuàng)建Maniphest任務(wù)。為了完成這個(gè)功能,需要設(shè)置

metamta.maniphest.public-create-email

。這里會(huì)對(duì)安全性有些影響,在后面我們會(huì)闡述。安全性郵件回復(fù)通道被認(rèn)證的。每個(gè)回復(fù)地址的收件人是唯一的、包含用戶信息哈希值和唯一的目標(biāo)ID,所以它只能用來(lái)更新目標(biāo)對(duì)象的信息,并且只能代表收件人進(jìn)行操作。但是,這里便會(huì)有問(wèn)題了。如果收件地址泄露,任何人都可以通過(guò)回復(fù)方式來(lái)對(duì)服務(wù)器上的目標(biāo)文件進(jìn)行操作。在實(shí)現(xiàn)上,為了實(shí)用性和安全性的平衡,這兩邊都需要做出一些讓步。因?yàn)?,?duì)于發(fā)送者得認(rèn)證是比較困難的。例如,在開(kāi)源項(xiàng)目中,需要和用戶進(jìn)行交互,用戶的郵件我們是無(wú)法進(jìn)行控制的。如果不小心將一些回復(fù)泄露出去,可以改變

phabricator.mail-key

的值使所有舊哈希值失效。同樣可以對(duì)

metamta.public-replies進(jìn)行設(shè)置,這個(gè)變量可以改變Phabricator提供得電子郵件。并不是通過(guò)個(gè)人回復(fù)郵箱給每個(gè)收件人發(fā)送唯一郵件,而是使用一個(gè)公共回復(fù)地址給所有人發(fā)送單獨(dú)的郵件。這種方式降低了安全性,因?yàn)槿魏稳硕伎梢砸砸粋€(gè)用戶的身份欺騙“發(fā)送方”。但為了增強(qiáng)實(shí)用性,可以使用郵件列表。在“回復(fù)”地址中,仍然包含目標(biāo)對(duì)象的哈希值。所以用戶沒(méi)收到包含目標(biāo)對(duì)象的哈希值的郵件時(shí),不能盲目的與郵件的發(fā)送方進(jìn)行交互。當(dāng)你使能

metamta.maniphest.public-create-email變量時(shí),會(huì)對(duì)“發(fā)送方”采用弱認(rèn)證機(jī)制。NOTE:目前,Phabricator并不會(huì)試圖去驗(yàn)證“發(fā)送方”地址,因?yàn)樵诩夹g(shù)方面比較復(fù)雜,在一般的情況下,這樣做是沒(méi)有必要的。如果你在一個(gè)比較特殊的環(huán)境下,可以通過(guò)一個(gè)合理的機(jī)制來(lái)讓“發(fā)送方”提供認(rèn)證來(lái)進(jìn)行認(rèn)證。(例如,DKIM(DomainKeysIdentifiedMain,域名密鑰識(shí)別驗(yàn)證標(biāo)準(zhǔn))簽名,就可以驗(yàn)證“發(fā)送方”是否是“自己人”?;蛘吣闳ヒ笏械糜脩舳荚陔娮余]件里面添加這樣的簽名。)測(cè)試/調(diào)試接收郵件你可以使用

bin/mail

腳本來(lái)測(cè)試和檢查接收郵件的功能。以下操作將會(huì)幫助你判斷郵件是否能夠投遞到Phabricator服務(wù)器端:phabricator/$./bin/maillist-inbound#Listinboundmessages.phabricator/$./bin-mailshow-inbound#Showdetailsaboutamessage.也可以對(duì)接收郵件進(jìn)行測(cè)試,但是需要注意的是,這里只是模擬接收郵件的情況,并沒(méi)有通過(guò)網(wǎng)絡(luò)發(fā)送任何信息。它的主要目的是開(kāi)發(fā)郵件處理程序:當(dāng)你得接收郵件配置錯(cuò)誤或者未使用,這個(gè)程序都會(huì)工作。phabricator/$./bin/mailreceive-test#Receivetestmessage.運(yùn)行

bin/mailhelp<command>

會(huì)有更多有關(guān)這些命令的幫助信息。配置SendGrid為了使用SendGrid,你需要一個(gè)SendGrid賬號(hào)為接收到得郵件做“API解析”。如果這個(gè)賬號(hào)已經(jīng)有了,就需要如下得配置:根據(jù)SendGrid的指令來(lái)配置MX記錄。例如,添加

MX10.或類(lèi)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論