安装Phabricato
Toc
  1. 安装
  2. 域名
  3. web端软件
    1. 1. mysql
    2. 2. php_fpm
    3. 3. nginx

翻了一下介绍文档,facebook的一个代码审核工具phabricator可以方便我们代码走查,可以在web页面查看每次commit的修改内容,可以方便添加修改意见和评论,目前我们也只是一些简单的需要。
刚刚在我自己的笔记本上做了安装,为了后续备忘,简单整理了一下,以下是安装过程,系统为OS X.

安装

使用已有webserver根目录,安装路径为:/Library/WebServer/Documents

popozhu ~$ cd /Library/WebServer/Documents
popozhu /Library/WebServer/Documents$ sudo git clone git://github.com/facebook/libphutil.git
popozhu /Library/WebServer/Documents$ sudo git clone git://github.com/facebook/arcanist.git
popozhu /Library/WebServer/Documents$ sudo git clone git://github.com/facebook/phabricator.git

域名

选取本地域名: my.pha.com
写入hosts

popozhu ~$ grep pha.com /etc/hosts
127.0.0.1   my.pha.com

web端软件

使用的组合是: nginx + php-fpm + mysql, 都是之前安装的,直接使用。

1. mysql

启动mysql,使用的帐号是root,密码是我的system-login-in-psssword(好像是以前安装mysql默认设置的),导入phabricator的db到mysql:

popozhu ~$ cd /Library/WebServer/Documents/phabricator
popozhu /Library/WebServer/Documents/phabricator$ sudo ./bin/storage upgrade -uroot -p{system-login-in-password}

popozhu ~$ mysql -uroot -p***
mysql> show databases like 'pha%';    // 导入了40个db
+--------------------------+
| Database (pha%)          |
+--------------------------+
| phabricator_audit        |
| phabricator_auth         |
| phabricator_cache        |
| phabricator_calendar     |
| phabricator_chatlog      |
| phabricator_conduit      |
......

导入mysql的密码到配置中

popozhu ~$ cd /Library/WebServer/Documents/phabricator
popozhu /Library/WebServer/Documents/phabricator$ sudo ./bin/config set mysql.pass ***

popozhu /Library/WebServer/Documents/phabricator$ ./bin/config get mysql.pass // 查看配置项
{
  "config" : [
    {
      "key"    : "mysql.pass",
      "source" : "local",
      "value"  : "***"
    }
  ]
}

顺便导入自定义的uri

popozhu /Library/WebServer/Documents/phabricator$ sudo ./bin/config set phabricator.base-uri "http://my.pha.com"
Set 'phabricator.base-uri' in local configuration.

popozhu /Library/WebServer/Documents/phabricator$ ./bin/config get phabricator.base-uri
{
  "config" : [
    {
      "key"    : "phabricator.base-uri",
      "source" : "local",
      "value"  : "http:\/\/my.pha.com"
    }
  ]
}

2. php_fpm

启动php-fpm

popozhu ~$ sudo cp /private/etc/php-fpm.conf.default /private/etc/php-fpm.conf
popozhu ~$ sudo /usr/sbin/php-fpm    // 若启动报错,根据报错信息修改配置文件

popozhu ~$ netstat -an | grep 9000
tcp4       0      0  127.0.0.1.9000         *.*                    LISTEN        // 9000端口已经在监听了

3. nginx

配置nginx,使用指导页面上的内容,写入nginx配置文件/opt/local/conf/nginx.conf

    server {        
        # 自定义的本地host
        server_name  my.pha.com;
        # phabricator的根目录
        root    /Library/WebServer/Documents/phabricator/webroot;

        try_files $uri $uri/ /index.php;

        location / {
            index   index.php;

            if ( !-f $request_filename )
            {
                rewrite ^/(.*)$ /index.php?__path__=/$1 last;
                break;
            }
        }

        location /index.php {
            fastcgi_pass   localhost:9000;
            fastcgi_index   index.php;

            #required if PHP was built with --enable-force-cgi-redirect
            fastcgi_param  REDIRECT_STATUS    200;

            #variables to make the $_SERVER populate in PHP
            fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
            fastcgi_param  QUERY_STRING       $query_string;
            fastcgi_param  REQUEST_METHOD     $request_method;
            fastcgi_param  CONTENT_TYPE       $content_type;
            fastcgi_param  CONTENT_LENGTH     $content_length;

            fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;

            fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
            fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

            fastcgi_param  REMOTE_ADDR        $remote_addr;
        }

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

然后启动nginx

popozhu ~$ sudo nginx -s quit
popozhu ~$ sudo nginx
popozhu ~$ ps -ef | grep nginx | grep -v grep
    0 32373     1   0 11:50下午 ??         0:00.00 nginx: master process nginx
   -2 32374 32373   0 11:50下午 ??         0:00.01 nginx: worker process

最后,浏览器输入my.pha.com,提示完成安装,建立admin帐号,还有5个问题需要配置,算了,明天吧。
界面

ref: http://www.phabricator.com/docs/phabricator/index.html

2013-12-20 更新

我期望的是导入svn仓库中的子项目,但pha对子项目提取的svn版本处理有误:超前了一个版本。比如在svn仓库svn://*.*.26.190/sys_dev/下有一个子项目proj_a,其url为:svn://*.*.26.190/sys_dev/proj_a, 目录proj_a的最初svn版本为114576,但pha却从114575开始去提取proj_a的svn记录,当然不可能成功,于是svn报错,pha则会一直显示:导入中……

我提了这个问题,但一个月后,仍没有得到回复:https://github.com/facebook/phabricator/issues/408

pha的代码并没有按版本发布,初次安装会从github上拉取「最新」的代码。在这一个月内,我又多次从gitpub上拉取代码,但让我非常无语,有一次更新我本地代码后,重新导入svn仓库的子项目,竟然遇到新的问题:找不到svn密码。 因为pha把svn/git的用户名和密码提取成一个key,相同的key可以用于不同的项目中,这本是一个很好的改动,但从项目中分离出用户名和密码之后,再执行svn命令却提示找不到密码。而我一个月之前提的问题,仍然没有解决。

很遗憾我不懂php,这个季度也很忙,没有时间去学习这个系统。此刻我以非常恶心的感受,失望地删除pha,个人觉得:

  1. 还是需要有stable版本发布出来
  2. 测试不充分就提交了代码,issue页面还是能见到一些略低端问题

anyway,因为我个人原因,不想再使用这个项目。目前是采用Versions + DiffMerge来实现代码差异对比和走查,懒人也就用这个了。


删除文件

sudo rm -rf /Library/WebServer/Documents/libphutil
sudo rm -rf /Library/WebServer/Documents/arcanist
sudo rm -rf /Library/WebServer/Documents/phabricator

停了php-fpm

ps -ef | grep php-fpm | grep -v grep | awk '{print $2}' | xargs sudo kill

删除nginx.conf中关于pha的配置

sudo vim /opt/local/conf/nginx.conf

删除hosts中的127.0.0.1 my.pha.com

删除db

drop database phabricator_audit       ;
drop database phabricator_auth        ;
drop database phabricator_cache       ;
drop database phabricator_calendar    ;
drop database phabricator_chatlog     ;
drop database phabricator_conduit     ;
drop database phabricator_config      ;
drop database phabricator_conpherence ;
drop database phabricator_countdown   ;
drop database phabricator_daemon      ;
drop database phabricator_differential;
drop database phabricator_diviner     ;
drop database phabricator_doorkeeper  ;
drop database phabricator_draft       ;
drop database phabricator_drydock     ;
drop database phabricator_fact        ;
drop database phabricator_feed        ;
drop database phabricator_file        ;
drop database phabricator_flag        ;
drop database phabricator_harbormaster;
drop database phabricator_herald      ;
drop database phabricator_legalpad    ;
drop database phabricator_maniphest   ;
drop database phabricator_meta_data   ;
drop database phabricator_metamta     ;
drop database phabricator_nuance      ;
drop database phabricator_oauth_server;
drop database phabricator_owners      ;
drop database phabricator_passphrase  ;
drop database phabricator_pastebin    ;
drop database phabricator_phame       ;
drop database phabricator_phlux       ;
drop database phabricator_pholio      ;
drop database phabricator_phortune    ;
drop database phabricator_phragment   ;
drop database phabricator_phrequent   ;
drop database phabricator_phriction   ;
drop database phabricator_policy      ;
drop database phabricator_ponder      ;
drop database phabricator_project     ;
drop database phabricator_releeph     ;
drop database phabricator_repository  ;
drop database phabricator_search      ;
drop database phabricator_slowvote    ;
drop database phabricator_token       ;
drop database phabricator_user        ;
drop database phabricator_worker      ;
drop database phabricator_xhpastview  ;
drop database phabricator_xhprof      ;



– EOF –

Categories: in_mac
Tags: