在对Phabricator 进行配置之前,我们有必要先了解一下Phabricator读取配置文件的优先级。

Configuration Sources

Phabricator 从下面几处读取配置信息,并且优先级从高到低。

  • Database: 储存在数据库中的配置只能通过administrators在Phabricator后台进行修改,他们拥有最高的优先级,在其他地方的配置都会被覆盖。
  • Local: 储存在 conf/local/config.json 中的配置可以通过 bin/config 进行设置
  • Config Files: 我们可以在 conf/ 目录下新建配置文件,然后写入到 conf/local/ENVIRONMENT, 或设置PHABRICATOR_ENV环境变量.
  • Defaults: 一些默认的配置硬编码在 Phabricator 的源文件中, 是不能直接修改的,它们拥有最低的优先级,上面任何一处的配置都可以覆盖这些默认值. 所以,Phabricator读取某一个配置项的值的流程看起来应该是这样:

Configuring Phabricator for multiple environments
Configuring Phabricator for multiple environments
关于这部分更多的介绍,可以查看官方文档: https://secure.phabricator.com/book/phabricator/article/advanced_configuration/

配置数据库

Ok,有了上面的认识之后,我们就开始对Phabricator 进行配置。我们知道储存在Database中的配置项拥有最高的优先级,并且只有通过administrators在Phabricator后台进行修改,但是我们没有配置数据库之前,是无法新建用户和登录后台的,所以我们需要先配置数据库。

在安装了Phabricator并设置好WebServer之后,我们直接访问时,已经给出了提示Can Not Connect To MySQL,并提示我们如何设置。

cd /opt/codereview/phabricator # 切换到安装目录
phabricator/ $ ./bin/config set mysql.host localhost    #默认为localhost 可不设置
phabricator/ $ ./bin/config set mysql.port 3306         #默认为
phabricator/ $ ./bin/config set mysql.user root         #默认为 root
phabricator/ $ ./bin/config set mysql.host yourpwd

设置了之后,我们可以通过 ./bin/config get key 读取配置的值。

phabricator/ $ ./bin/config get mysql.pass
{
 “config” : [
   {
     “key”    : “mysql.pass”,
     “source” : “local”,
     “value”  : “mypassword”
   }
 ]
}

这时再刷新浏览器,你会看到这样的提示:

set Phabricator Mysql schema
set Phabricator Mysql schema

哦,太心急了,还没有初始化数据呢. phabricator/ $ ./bin/storage upgrade 运行完之后,进入mysql,show databases发现多了很多以phabricator开头的数据库。是的,新建了多个数据库,而不是只建一个库!

 mysql> show databases;
+————————–+
| Database |
+————————–+
| information_schema |
| mysql |
| performance_schema |
| phabricator_audit |
| phabricator_auth |
| phabricator_cache |
| phabricator_calendar |
| phabricator_chatlog |
| phabricator_conduit |
| phabricator_config |
| phabricator_conpherence |
| phabricator_countdown |
| phabricator_daemon |
| phabricator_dashboard |
| phabricator_differential |
| phabricator_diviner |
| phabricator_doorkeeper |
| phabricator_draft |
| phabricator_drydock |
| phabricator_fact |
| phabricator_feed |
| phabricator_file |
| phabricator_flag |
| phabricator_harbormaster |
| phabricator_herald |
| phabricator_legalpad |
| phabricator_maniphest |
| phabricator_meta_data |
| phabricator_metamta |
| phabricator_nuance |
| phabricator_oauth_server |
| phabricator_owners |
| phabricator_passphrase |
| phabricator_pastebin |
| phabricator_phame |
| phabricator_phlux |
| phabricator_pholio |
| phabricator_phortune |
| phabricator_phragment |
| phabricator_phrequent |
| phabricator_phriction |
| phabricator_policy |
| phabricator_ponder |
| phabricator_project |
| phabricator_releeph |
| phabricator_repository |
| phabricator_search |
| phabricator_slowvote |
| phabricator_system |
| phabricator_token |
| phabricator_user |
| phabricator_worker |

现在连接数据库的用户名和密码已经设置了,也初始化了数据。应该可以正常访问了吧?你自己在浏览器输入绑定的域名试试嘛。