phabricator是针对git项目的code-review工具,还可以跟踪bug、记录需求、WIKI编写等
概述
项目地址:https://github.com/phacility/phabricator
Phabricator是一套基于Web的软件开发协作工具,一个Web应用用于帮助软件公司构建更好的软件。
原是facebook员工开发的可视化代码评审工具,现在离开facebook去Phacility,并持续维护
主要包含以下几个功能:
1. 源码的review与审核
2. 代码托管,代码浏览
3. BUG跟踪
4. 项目管理
5. 团队成员交流
6. 组织风险讨论
7. 事件备注,以及回顾(统计等)
8. 权限设置
9. 其他功能
安装
安装向导:https://secure.phabricator.com/book/phabricator/article/installation_guide/
Phabricator :一个基于LAMP架构的应用(Linux, Apache, MySQL, PHP)
环境要求:
1. 一个安装Linux操作系统的普通计算机,Linux版本不限(不支持Windows操作系统)
2. 一个共享域名(如phabricator.mycompany.com),测试时可以使用(127.0.0.1/局域网IP限局域网内使用),域名中必须包含‘.’,官方解释是为了兼容浏览器cookie,如果没有,域名校验不通过是无法访问的
3. 基本的Linux系统管理员技术(包括域名,IP,权限等配置,软件的安装等等)
4. web服务器(可以根据自身情况进行选择,包括Apache, Nginx, lighttpd等)
5. PHP, MySQL, and Git(基础组件的安装)
注意事项:
1. 共享主机域名:这个是必须的,而且必须用'.',Phabricator会对域名进行校验
2. Web服务器:(Apache + mod_php),(nginx + php-fpm)
3. ( MySQL 5.5+)(PHP 5.2+)
环境组件:
1. 官方提高了Ubuntu和RedHat安装脚本,如果使用这两款操作系统,可以直接使用脚本进行安装,不过还是推荐自行安装,可以遇到很多问题,然后有个更深入的理解,安装完后,直接参考配置向导进行配置。
2. git:项目版本控制
3. Apache, httpd, nginx
4. MySQL Server (mysqld, mysql-server)
5. PHP
6. Phabricator项目clone
APC安装(可选,推荐):pcre-devel
配置
配置向导:https://secure.phabricator.com/book/phabricator/article/configuration_guide/
Phabricator:简单的基础配置介绍
基础配置:
1. 服务器配置(本文以Nginx配置为例,操作系统 MAC OS X)
2. 浏览器访问:Phabricator
3. 根据指示完成配置
nginx.conf
server {
server_name phabricator.example.com;
root /path/to/phabricator/webroot;
location / {
index index.php;
rewrite ^/(.*)$ /index.php?__path__=/$1 last;
}
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;
}
}
Nginx作为前端代理服务器,配置也比较简单,主要为虚拟主机配置
1. server_name(主机、域名配置),phabricator强制要求域名中必须包含'.',否则在域名校验的时候会失败,因为这个使我花了半小时找问题,结果使用127.0.0.1进行访问,问题成功解决。官方解释是为了保证浏览器cookie的正常使用
2. root(根路径配置):/path/to/phabricator/webroot
3. location / (首页配置) :index.php,phabricator使用php构建的
4. rewrite(重定向配置) :
5. proxy(代理配置):使用fastcgi协议进行Nginx与phabricator的通信,主要就是请求的转发
1. fastcgi_pass —— 代理主机以及端口配置
2. fastcgi_index —— 代理首页
3. fastcgi_param —— 相关参数配置,请求状态码,请求方式,等等参数
加载Phabricator数据库:
phabricator/ $ ./bin/storage upgrade
如果使用的是没有root权限的用户进行配置,需要修改Phabricator的默认用户配置(使用Root或管理员权限用户进行配置,或者将当前用户赋予root权限)
phabricator/ $ ./bin/storage upgrade --user <user> --password <password>
强制执行命令:
phabricator/ $ ./bin/storage upgrade –force
注:当更新Phabricator后,及时对数据库进行更新
接下来的配置:
* setting up your admin account and login/registration with Configuring Accounts and Registration; or (设置管理员账号,登录与注册配置)
* understanding advanced configuration topics with Configuration User Guide: Advanced Configuration; or (高级配置)
* configuring an alternate file domain with Configuring a File Domain; or (备用文件主机配置)
* configuring a preamble script to set up the environment properly behind a load balancer, or adjust rate limiting with Configuring a Preamble Script; or (使用脚本来进行负载均衡配置,和限速配置)
* configuring where uploaded files and attachments will be stored with Configuring File Storage; or (文件上传以及附件存储配置)
* configuring Phabricator so it can send mail with Configuring Outbound Email; or (配置phabricator的邮件发送)
* configuring inbound mail with Configuring Inbound Email; or (接入邮箱配置)
* importing repositories with Diffusion User Guide; or (导入代码仓库)
* learning about daemons with Managing Daemons with phd; or (守护进程的配置和学习)
* learning about notification with Notifications User Guide: Setup and Configuration; or (通知的学习)
* configuring backups with Configuring Backups and Performing Migrations; or (备份配置)
* contributing to Phabricator with Contributor Introduction. (加入phabricator的开发维护)
登录注册配置
用户访问配置:
Phabricator支持多种登录方式,通过管理原账号可以开启或关闭相应的登录方式。
认证方式:
1. 用户名/密码,注册登录
2. LDAP(Lightweight Directory Access Protocol ):LDAP认证注册登录,具体详解-》go
3. oAuth认证协议进行注册登录(GitHub, Sina, Facebook, Google)
4. 其他认证方式:自定义认证方式
默认情况下,这些认证方式都是关闭的,需要管理原手动开启
覆盖管理员账号:此处的username是指Phabricator中的账号名称
phabricator/ $ ./bin/auth recover <username>
注:这里有两个概念,一个是Phabricator注册登录的username,一个是操作系统的用户,这两个将在后面的配置中会遇到,请不要弄混淆。
使用Web控制接口管理账号:
使用管理员账号登录,在首页中点击/people/,进行管理
手动创建账号:
有两种方式:1.通过上文提到的Web接口进行创建,2.通过命令行进行设置。很显然第一种方式比较简单phabricator/ $ ./bin/accountadmin
高级配置
https://secure.phabricator.com/book/phabricator/article/advanced_configuration/(高级配置向导)
对环境配置与部署:通过配置,让Phabricator适应多种部署环境,
这是一个相对复杂的专题,并不是必须的。
配置源:优先级从高到低排列
1. 数据库:数据被存储在数据库中,管理员可以通过Web页面进行修改,拥有最高的优先级,并可以对其他配置源进行覆盖。
2. 本地数据:数据被存储在~/conf/local/config.json,可以通过命令行进行修改或者进行用终端进行修改。
3. 配置文件:数据被存储在/conf/文件夹下,通过修改conf/local/ENVIRONMENT文件或设置环境变量PHABRICATOR_ENV生效。
4. 默认值:通过硬编码实现,不可编辑,优先级最低,可以被以上任何一个配置所覆盖
配置文件:配置文件通过了一个相对数据库配置的另一种动态选择,可以用于多环境部署。
创建配置文件:
1. exampleconfig.conf.php,文件名可自行定义,路径:phabricator/conf/custom/exampleconfig.conf.php
2. 内容如下所示:以键值对形式存在,'mysql.host' => 'localhost',如果存在多个则以","进行分隔
<?php
return array(
// Specify whichever keys and values you want to set.
'example.key' => 'examplevalue',);
3. 选择配置文件:将配置文件的名称写入phabrictor/conf/local/ENVIRONMENT文件中
phabricator/ $ echo custom/exampleconfig > conf/local/ENVIRONMENT
phabricator/ $ cat conf/local/ENVIRONMENTcustom/exampleconfigphabricator/ $
或者设置全局变量:PHABRICATOR_ENV,设置该变量后要设置Web服务器环境
# Shell
export PHABRICATOR_ENV=custom/exampleconfig
# Apache
SetEnv PHABRICATOR_ENV custom/exampleconfig
# nginx
fastcgi_param PHABRICATOR_ENV "custom/exampleconfig";
# lighttpd
setenv.add-environment = (
"PHABRICATOR_ENV" => "custom/exampleconfig",
)