参考: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 -default.conf

启用虚拟主机:sudo a2ensite -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-user和www-user如同daemon-user一样可以使用sudo命令,需要对sudoers进行配置。这里,需要使用visudo或sudoedit命令,将这些用户加入/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 /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.sh和sshd_config关联起来,在sshd执行时会自动执行。

3、迁移默认的ssh端口

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

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

迁移ssh端口

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

Port 

这一行,并修改22为222,然后保存。使用

Service ssh restart重启ssh服务。此时修改成功。

可以通过以下命令测试设置是否成功

ssh -p  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

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

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

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

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

6、upload 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 

Phabricator部署手册的更多相关文章

  1. MariaDB Galera Cluster部署手册

    MariaDB Galera Cluster部署手册 galara保证双主数据库的同步及一致性 1.环境准备 基于新部署.最小化安装centos6.5 1>  yum install opens ...

  2. LVS+MYCAT+读写分离+MYSQL主备同步部署手册

    LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1  ...

  3. 【转载】LVS+MYCAT+读写分离+MYSQL主备同步部署手册(邢锋)

    LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1  ...

  4. OpenStack Kilo版加CEPH部署手册

    OpenStack Kilo版加CEPH部署手册 作者: yz联系方式: QQ: 949587200日期: 2015-7-13版本: Kilo 转载地址: http://mp.weixin.qq.co ...

  5. [转帖]Oracle 11G RAC For Windows 2008 R2部署手册

    Oracle 11G RAC For Windows 2008 R2部署手册(亲测,成功实施多次) https://www.cnblogs.com/yhfssp/p/7821593.html 总体规划 ...

  6. Javamelody部署手册

    Javamelody部署手册 1.  Javamelody下载 下载地址:http://code.google.com/p/javamelody/downloads/list(注:需要FQ才能打开下载 ...

  7. Symantec Backup Exec部署手册

    转载  http://xiaxiaoguo.blog.51cto.com/858884/402810 Symantec Backup Exec部署手册 目录 1.Backup Exec 12.5安装. ...

  8. Kubernetes 1.13 的完整部署手册

    前言: 非常详细的K8s的完整部署手册,由于Kubernetes版本和操作系统的版本关系非常敏感,部署前请查阅版本关系对应表 地址:https://github.com/kubernetes/kube ...

  9. MySQL+MGR 单主模式和多主模式的集群环境 - 部署手册 (Centos7.5)

    MySQL Group Replication(简称MGR)是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案.MGR是MySQL官方在5.7.17版本引进的一个数据库高可用与 ...

随机推荐

  1. 数据库——DQL(语句查询)

    查询的基本结构: 概念: 查询(DQL)是数据库中最为常用和复杂的一种SQL结构,学会编写查询SQL是程序员必须具备的能力. 要从数据库中查询数据,我们要使用SQL的SELECT语句.标准SELECT ...

  2. C# 利用反射给不同类型对象同名属性赋值

    public class ObjectReflection { public static PropertyInfo[] GetPropertyInfos(Type type) { return ty ...

  3. NK3C:异常处理(前端)

    前端的提示有些也不是很规范,主要体现如下: 1.ResultInfo的返回值,false的情况下,未做处理: 2.ResultInfo的返回值,false的情况下,做了其他操作,未提示错误:(虽然没报 ...

  4. git和nginx安装

    原始地址: https://www.zybuluo.com/freeethy/note/192109 git安装 设置git的username和email (注册gitlab的账号密码) $$ git ...

  5. Linux Top 命令解析 比较详细

    [尊重原创文章出自:http://www.jb51.net/LINUXjishu/34604.html] TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占 ...

  6. modelsim(3) - summary ,issue,tips

    1) the OEM of modelsim is 10 times slower than offical questa 2)how to the file full path in the mod ...

  7. eclipse中jsp文档无语法着色,安装Eclipse Java Web Developer Tools插件

    一.安装Eclipse Java Web Developer Tools插件 1.eclipse菜单:help/install New Software,打开Available Software窗体: ...

  8. 在c#中把字符串转为变量名并获取变量值的小例子(转)

    public class Program { public string str = "spp"; public string spp = "Hello World!&q ...

  9. IOS--UIAlertView造成屏幕闪烁

    在异步操作中,如果直接Show一个UIAlertView可能会造成屏幕闪烁(目前在iPhone5上发现),解决办法如下: UIAlertView *alert = [[UIAlertView allo ...

  10. Action中获取servletAPI对象的方法

    1.ServletActionContext:可以从中获取当前Action对象需要的一切ServletAPI的相关对象: 常用的方法: 1.获取HttpServletRequest:ServletAc ...