介绍

phabricator不止具有codereview功能,他是一个全家桶,还包含项目管理和wiki,还能聊天

必备环境

php安装(必须)

注:php版本必须要5.5以上,php72w-fpm是如果web服务器选择nginx的话,搭配使用

yum install php72w php72w-mysqlnd php72w-mbstring php72w-gd php72w-curl php72w-cli php72w-common php72w-process
php72w-fpm php72w-pecl-apcu

phacility代码下载(必须)

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

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

语法高亮配置(非必须)——版本对比的预发高亮

yum install python-pygments

webserver安装(必须)

   1).Apache +mod_php
   2). nginx +php-fpm
   3).lighttpd

   4)PHP Builtin Server

   5)或者其他能运行php的web服务器

   我使用的是nginx,用dokcer或者yun安装都可以,yum install nginx或者docker run nginx

mysql(必须)

1.MySQL 版本必须5.5以上,mysql8.0以上数据库连接的密码认证方式变了,Mysql8.0默认采用了新的caching_sha2_password的身份验证方式如果要使用mysql8.0以上,必须使用php8.0以上;如果使用mysql8.0以下,必须使用php7.4以及以下;

2.如果想用mysql8.0,php版本比较低,那就单独创建一个用户使用老的密码认证方式,同时给这个用户授权 CREATE USER 'phabricator'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; GRANT ALL ON *.* TO 'phabricator'@'%';

yum install mysql或者docker run mysql

必知概念,对于服务端安装后运行非常重要

创建用户

www-data用户,就是运行webserver服务的用户,如果使用php-fpm,用root账户启动php-fpm,默认会创建一个apache用户,这个apache就是这个webserver服务对应的用户;

daemon-user用户,就是phabricator的守护进程,运行phd进程的用户,用来收发邮件,或者导入gitlab之类的代码,垃圾回收,日志清理等都是靠这个进程执行,排队执行,跟定时任务有点像;

vcs-user用户,就是clone代码如果要用ssh连接需要;ssh连接像vcs-user@phabricator.yourcompany.com;
注;
1.如果用http方式clone代码可以不用创建vcs-user,www-data用户如果使用php-fpm,也可以不用创建,默认会创建;phd用户必须创建;
2.vcs-user与www-data用户都需要sudo到phd用户来与代码存储库交互;

修改sudoers,sudoers默认只有读的权限,chmod 755 sudoers; vim /etc/sudoers;修改完再收回sudoers的权限 chmod u-w sudoers
在sudoers,sudoers加入这两行,如果不用ssh,不用加vcs-user,/path/to/x是vcs-user与www-data用户需要执行二进制文件对应的路径;

sudoers配置修改完webserver服务和phd进程需要重启才生效

www-user ALL=(daemon-user) SETENV: NOPASSWD: /path/to/x, /path/to/y, ...
vcs-user ALL=(daemon-user) SETENV: NOPASSWD: /path/to/x, /path/to/y, ...
www-user和vcs-user所属的组最好也配置下,不然切换daemon-user执行可能还需要输入密码
www-user用户所在组 ALL=(daemon-user) SETENV: NOPASSWD: /path/to/x, /path/to/y, ...
vcs-user用户所在组 ALL=(daemon-user) SETENV: NOPASSWD: /path/to/x, /path/to/y, ...
www-user需要执行的二进制文件, sudo到daemon-user:
  • git (如果使用 Git)
  • git-http-backend (如果使用Git)
  • hg (如果使用 Mercurial)
  • ssh (如果配置 clusters)

vcs-user需要执行的二进制文件, sudo到 daemon-user:

  • git (如果使用 Git)
  • git-upload-pack (如果使用 Git)
  • git-receive-pack (如果使用 Git)
  • hg (如果使用 Mercurial)
  • svnserve (如果使用 Subversion)
  • ssh (如果配置 clusters)

环境安装后的配置

php-fpm配置

php-fpm.ini修改监听端口,也可以使用默认的,不用改这个配置,改完重启php-fpm ;  sercice php-fpm restart

 

 

 

nginx配置
在nginx的配置nginx.conf加入如下配置,然后重启;   nginx -s reload;

server {
       root /usr/local/phabricator/phabricator/webroot;
       listen 9001;
       client_max_body_size 2m;
       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;
}

}

注:

1)./usr/local/phabricator/phabricator/webroot是git clone https://github.com/phacility/phabricator.git的代码里面有webroot,需要改成你自己下载这个webroot目录;

2).fastcgi_pass这个端口对应上面的配置php-fpm的端口

配置phd

配置文件/conf/local/local.json,phd服务的日志文件在/var/tmp/phd/log/daemons.log,启动有问题可以看这个日志文件,下面执行命令也是在修改这个配置文件,修改完phd的配置,要重启,./bin/phd restart

进去git clone https://github.com/phacility/phabricator.git的目录,可以看到有个bin目录;

配置连接mysql的用户名和密码和host

./bin/config set mysql.host localhost ./bin/config set mysql.port 3306 ./bin/config set mysql.user root ./bin/config set mysql.pass ******
./bin/storage upgrad

 配置邮箱

在/conf/local/local.json加入下面这一段

"cluster.mailers": [
   {
    "key": "my-mailer", #随便定一个名字即可
    "type": "smtp",
    "options": {
    "host": "smtp.xx.com", #邮箱的smtp服务
    "port": 465, #由于我使用的ssl,所以是465.这个看邮箱服务商的说明
    "user": "xxx", #发信邮箱
    "password": "xxx", #发信邮箱的smtp授权码不是登录密码
    "protocol": "ssl"
    }
  }
],

"metamta.default-address": "xxx",

测试邮箱配置是否正确,尝试发送邮件 ./mail send-test --to xxxx@xxx.com --subject hello <README.md,如果执行无错误,就是配置正确

配置http下载代码

,如果要使用ssh下载代码,不用配置;配置完,phabricator服务页面会显示一个vsc密码选项,这个是用来配置你下载代码的密码

1). ./bin/config set diffusion.allow-http-auth true;

2).   ./bin/config set environment.append-paths '["/bin","/usr/bin","/usr/local/bin","/usr/libexec/git-core"]' ,/usr/libexec/git-core这个目录是git-http-backend二进制所在目录,修改为你自己的目录

配置phd的运行用户

./bin/config set phd.user   daemon-user

配置uri

./bin/config set phabricator.base-uri  http://xxx.xxx.xxx.xxx:9001;这个端口跟nginx配置的listen端口一致,如果不一致,页面展示没有样式;

创建代码库并配置

mkdir /var/repo

./bin/config set repository.default-local-path '/var/repo'
chown -R daemon-user /var/tmp/phd
chown -R daemon-user /var/repo
chmod -R 755 daemon-user /var/repo
chmod -R 755 daemon-user /var/repo
daemon-user这个也就是phd进程对应的用户一定要有这两个目录的操作权限

使用

登录phabricator服务的网站,我配置的是http://127.0.0.1:9001

按步骤解决感叹号里的问题

设置php的时区,编码,有些有问题可以不用解决,看自己的情况

 

 

创建仓库

如果代码托管在gitlab还是要创建仓库,没有代码的话,那使用跟gitlab,创建完仓库,往上面提交代码就行,创建完仓库一定要启用

如果代码托管在gitlab,想使用phabricator,uris里面新建一个,填写gitlab的clone地址,io模式设置为observe,仓库激活就会去拉代码到phabricator的仓库;如果后面gitlab不适用了,等拉取结束就把io模式设置为no i/o;如果gitlab还要使用,就把io模式设置为mirror i/o模式,phabricator会把代码同步到gitlab,gitlab相当于只是个存储库里,使用者提交代码到phabricator,phabricator再同步到gitlab;

注:

1):如果同步有问题,可以看下phd这个守护进程的操作日志,同时进入mysql查看phabricator_repository.repository_pullevent这张表可以看到错误原因;

2)通过http下载代码,还要在web页面里设置,config--> all settings-->diffusion.allow-http-auth-->点开,设置值为:Allow HTTP Basic Auth

官方文档

我写的所有安装步骤官方文档里都有,还有不清楚的请看官方文档,phabricator使用的是2022最新的代码,如果是老代码或者更新的代码可能配置会存在差异,建议看官方文档;

建议要使用别人的dokcer镜像来运行前,官方目前没有镜像,一定要自己按操作步骤先安装遍,不然docker镜像运行报错都解决不了

https://secure.phabricator.com/book/phabricator/

posted on 2022-02-25 14:49  柳无情  阅读(121)  评论(0编辑  收藏  举报