Phabricator部署手册

参考:https://secure.phabricator.com/book/phabricator/article/installation_guide/

 

概述

phabricator由facebook公司开发,是一个开源的代码审查系统,帮助软件公司建立更好的软件。该系统能够部署在多数linux发行版以及os x系统上。本文档仅是该系统部署的一个简单指导,详细内容请查看官网说明和解释,本说明的部署仅针对Ubuntu 14.04 LTS版本操作系统。

 

安装

脚本

官方网站提供了一个安装脚本,大大简化了安装过程。该脚本路径https://secure.phabricator.com/diffusion/P/browse/master/scripts/install/install_ubuntu.sh

安装时,需要先选定安装路径,因为安装脚本是默认使用当前工作路径安装的,当然,你也可以修改脚本上的安装路径。

启动安装脚本,按照提示一步一步的执行。安装时会检查系统是否已安装必须的组件(MYSQL、APACHE2等),如果没有安装,则脚本会自动安装。安装到最后会提示是否修复问题(Fix issue),选择修复并继续执行,执行完成后,即已安装完成。

安装过程中会从github中克隆出该系统的源码和相关文件,这个过程可能会比较耗时,需要耐心等待。

https://github.com/phacility/libphutil.git

https://github.com/phacility/arcanist.git

https://github.com/phacility/phabricator.git

 

安装完成后安装目录会出现一个phabricator目录,该目录包含了该系统的所有文件以及源码。安装完成后请检查MySQL以及Apache2是否安装成功,以及服务是否可以正常启动。

部署webserver

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

这里使用一个域名作为ServerName值,这个域名可以无效也可以是一个可解析或者已注册的域名。

DocumentRoot

这里是Phabricator站点文件保存的路径,也就是安装路径。这些设置需要重启Apache2服务器才能生效使用,可以使用Service apache2 restart命令重启。

启用该配置文件后,打开浏览器输入主机IP或者域名和端口访问该站点。

Port

该端口是该站点的监听端口,例如20001。该监听端口必须保存在/etc/apache2/ports.conf配置文件中。

 

需要注意的是,Phabricator需要独占一个域名。在浏览器中访问时需要输入该域名访问。如果使用默认的80端口,那么也应该需要

 

配置

数据库MySQL

如果MySQL数据库设定了root账户密码的话,安装成功会在浏览器进入站点时,会出现无法链接数据库的错误提示页面。此时需要对数据库连接做配置,修改数据库连接的主机、端口、用户名以及用户登录密码。

 

Phabricator默认使用MySQL的root账户连接数据库服务器,所以此时应该使用配置其密码或者更改为其他的账户。

如果连接的数据库是其他主机的话,那么还需要配置数据库连接的主机以及端口号。

连接设定成功后刷新页面将会出现另一个数据库问题,该问题是该系统的一个初始动作,必须执行!按照页面上的提示执行数据库存储升级即可。该过程可能会耗时较长,请耐心等待。需要注意的是该命令对应的程序时保存在phabricator安装路径下的bin目录。

./bin/storage upgrade

 

系统管理员配置

设定成功后刷新页面应该进入系统管理员配置页面了,此时注册并设定系统管理员账户,该账户将会拥有超级权限,能够修改系统任何内容!

只有设定了系统管理员后才能执行后续的设置操作,而这个才是刚刚开始!

 

Setup Issues

系统管理员配置完成后,将会真正的进入到了该系统。此时出现的是系统setup issues页面。

该页面之处系统安装和部署时存在的潜在的问题。这些问题不是所有都是严重的,多数是系统运行的潜在性能问题以及系统使用是否方便。下面几个问题是必须解决的,否则系统运行不正常!

No Authentication Providers Configured

该问题是用户登录配置,系统刚刚安装完成是没有登录途径的,也没有注册途径。此时应该选定一个,后期可以继续增加用户注册授权方式。

点击进入issue页面 → 点击“using the "Auth" application” → 点击"Add Authentication Provider",可以看到如下页面。

  

选择一种登陆或身份验证方式。这里我们选择“用户名/密码”的方式。确认添加后进入下一页,将所有选项都进行勾选(默认),也可以是根据需要进行设置。这里有一个最短密码长度的设置account.minimum-password-length,可以在之后进行设置。当再次确认后,登陆方式就被确认应用了。再次刷新页面,这个issue就被修复了。

No Sendmail Binary Found

该问题是邮件收发服务问题。系统很功能后台会执行邮件收发动作,所以必须配置系统使用的邮件收发服务。该配置有些麻烦,并且容易出问题!请查看“邮件服务配置”一节。

 

Server Timezone Not Configured

这个事设置服务器的时区的。系统很多操作将会产生时间戳保存到数据库或者其他的通信操作,所以应该设定,否则系统默认使用格林威治标准时间,和北京时间差了正好8个小时。点击进入issue页面,会出现如下图的显示:

 

选择“Edit phabricator.timezone”连接执行设定。

Missing Repository Local Path

该操作执行本地代码库以及网络代码库本地保存路径。该路径可以是该系统默认使用的/var/repo,也可以其他的可用路径。系统刚安装完成是/var/repo路径是不存在的,如果使用它的话必须先创建。

请确保该程序运行用户具有该路径的读写执行权限,否则系统核心的审查功能将无法使用!

点击issue,进入对应页面,会出现如下图所示的内容:

 

Phabricator Daemons Are Not Running

后台守护进程将会执行系统跟踪、检测以及邮件收发等操作。所以该问题应该修复,后期如果出现了问题或者刷新的话,可以对它停止、调试、重启等操作。特别是在邮件收发服务失败时,应该多次重启这个守护进程。

 

在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命令查看邮件的详细内容。

 


SSH config

在使用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-userwww-user如同daemon-user一样可以使用sudo命令,需要对sudoers进行配置。这里,需要使用visudosudoedit命令,将这些用户加入/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服务配置

注意,这里的操作很危险!所以需要格外小心,并确保可跟踪!

SSH服务的配置分七步。

1、创建 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.shsshd_config关联起来,在sshd执行时会自动执行。

 

3、迁移默认的ssh端口

所在的系统应该安装有ssh,ssh默认使用22端口。

这里需要先将默认的端口迁移为另外一个端口,假设为222. 22端口会被phabricator sshd使用!

迁移ssh端口

Ssh的配置保存在/etc/ssh/sshd_config文件中,找到

Port 22

 

这一行,并修改22222,然后保存。使用

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

Phabricatorssh协议是使用ssh public key无密码登录验证的。所以,需要生成公私密钥对。

这里需要验证的是上面设置的vcs_userkey,先登录vcs_user,该账号的根目录下应该会存在一个隐藏文件夹.ssh,如果没有,请创建之。

进入.ssh目录,使用ssh-keygen创建秘钥,该命令会提示输入秘钥文件名,可以不输入,直接回车。接下来还提示你输入密码,可以不输入直接会回车。

执行完成后,该目录下回生成两个文件id_rsaid_rsa.pubid_rsa是私钥文件,id_rsa.pub是公钥文件。

 

6upload ssh public key 

将生成的id_rsa.pub文件内容复制保存到phabricator,具体的说就是进入phabricator站点,进入setting模块,该模块下有SSH Public Keys部分,此时选择【Upload Public Key】按钮保存即可,key name可自定义!

 

7、测试

上述配置完成后,应该检查是否配置成功!可以使用如下命令

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

安装

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

Daemons是Phabricator后台守护进程,它是一系列守护进程的集合。主要服务于邮件服务、代码repository管理和审查!所以请时刻确保该守护进程运行正常!

这些守护进程可以通过phd脚本执行,路径在/phabricator/bin。

 

重启Daemons

./bin/phd restart

运行状态

./bin/phd status

停止Daemons

./bin/phd stop

启动Daemons

./bin/phd start 

 

posted @ 2016-04-12 10:08  Chorulex  阅读(11069)  评论(0编辑  收藏  举报