zoukankan      html  css  js  c++  java
  • 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 
  • 相关阅读:
    Redis在Windows上使用和集群配置
    Lzma(7-zip)和zlib
    Windump教程-参数介绍
    Windows 使用windump进行循环抓包
    wireshark长时间抓包分多个文件
    发现TCP的一种错误----客户端连接失败(10055错误号)
    MySQL [Err] 1055
    解决socket交互的10048和10055错误的总结
    Socket调用Close后如何终止套接口的问题
    linux下recv 、send阻塞、非阻塞区别和用法
  • 原文地址:https://www.cnblogs.com/chorulex/p/5381558.html
Copyright © 2011-2022 走看看