先来看一看整体解释图,大概了解一下整体
这篇我们主要是讲解如何部署、配置、运行phabricator
准备工作
-
购买轻量应用服务器:系统镜像-ubuntu22.04
-
已经备案的域名
-
下载finalShell,用于ssh连接服务器,下载地址:http://www.hostbuf.com/t/988.html
轻量应用服务器购买后要做的事情是
- 重置登录密码。
- 域名解析,把域名解析到服务器IP
1、用finalShell连接服务器,
按如下命令依次安装配置phabricator
//打开根目录
cd ../
//创建存放phabricator目录
mkdir var/www
mkdir var/www/pha
//打开刚刚创建的目录
cd var/www/pha
//下载phabricator、libphutil、arcanist
git clone https://github.com/phacility/libphutil.git
git clone https://github.com/phacility/arcanist.git
git clone https://github.com/phacility/phabricator.git
//下载安装nginx
add-apt-repository ppa:nginx/stable
apt-get update
apt install -y nginx
//检查是否监听80端口
netstat -na | grep 80
//此时,访问你的服务器ip地址显示welcome to nginx....就可以了
//将系统的语言环境设为en_US.UTF-8(美国英语 UTF-8编码)
//然后向系统中添加一个名为ppa:ondrej/php的PPA(Personal Package Archive),其中包含了PHP软件包。
//PPA允许用户在Ubuntu系统中安装/更新软件包,这个PPA通常包含最新版本的PHP软件包。
LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
//更新本地apt软件包数据库的索引列表
apt-get update
//安装各类所需要的php环境
apt-get -y install php7.1 php7.1-mysql php7.1-fpm php7.1-curl php7.1-xml php7.1-mcrypt php7.1-json php7.1-gd php7.1-mbstring
//返回根目录
cd ../../../
//修改fpm的配置,输入后按i开始编辑修改
vim /etc/php/7.1/fpm/pool.d/www.conf
//在listen = /run/php/php7.1-fpm.sock之后加入如下2行
listen = 9000 # 增加
listen.allowed_clients = 127.0.0.1 # 增加
//加入后,按esc,再输入:wq保存退出即可完成修改
//重启PHP
service php7.1-fpm stop
service php7.1-fpm start
//测试配置是否生效
netstat -na | grep 9000
//显示tcp6 0 0 :::9000 :::* LISTEN表示成功
2、配置Nginx
域名比如是:p.mydomain.com,那么创建配置文件:/etc/nginx/conf.d/p.mydomain.com.conf
继续输入以下命令
vim /etc/nginx/conf.d/p.mydomain.com.conf
然后再按i进入编辑模式
添加如下内容:
server {
server_name p.mydomain.com; # 换成自己的域名
root /var/www/pha/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;
}
}
添加好以后,按esc退出编辑模式,再输入”:wq“保存并退出即可
3、连接数据库
查看微信云托管mysql云数据库的外网域名、端口、用户名、密码,备用。
开始连接使用微信云托管的云数据库,按如下命令配置连接
//打开对应目录
cd var/www/pha/phabricator
//配置外网域名、端口、用户名、密码
//host填写外网域名xxxx.com
./bin/config set mysql.host 'xxxx.com'
./bin/config set mysql.user '用户名'
./bin/config set mysql.password '密码'
./bin/config set mysql.port '端口'
//初始化数据库
./bin/storage upgrade
//设置phabricator的url,自己的域名
./bin/config set phabricator.base-uri 'http://xxxxx.com'
//重新加载nginx
service nginx reload
4、设置管理员
这时,浏览器应该可以访问Phabricator了:http://p.mydomain.com(自己设置的域名)
作为第一个访问用户,可创建管理员账号。
注意,管理员不是标准用户。
如果能创建管理员,说明安装过程成功。
5、添加认证方式
这时可以添加认证方式(Auth Provider)。phabricator提供了多种认证方式,其中最基本的是用户名/密码的provider。
作为管理员,点击左侧菜单的Auth,选择Add Provider ,然后添加 Username/Password Provider即可。
安装过程到此基本结束,但还不能:
- 发送用户邀请邮件及其他通知邮件
- 创建git repository
下一部分将解决这些问题。
6、配置邮件发送
6.1、在var/www/pha/phabricator目录下执行以下命令,配置metamta.default-address和metamta.can-send-as-user:
./bin/config set metamta.default-address 2925956259@qq.com
./bin/config set metamta.can-send-as-user false
6.2、执行下面命令来创建其他配置的mailers.json文件
vim ./conf/local/mailers.json
mailers.json内容如下:
[
{
"key": "stmp-mailer",
"type": "smtp", // 采用smtp协议
"options": {
"host": "smtp.qq.com", // 邮箱服务器的地址 也可以是域名
"port": 465, // 发送端口不加密是25 加密是465
"user": "2925xxxx@qq.com",// 发送邮箱的账号
"password": "hcprexxxxx", // 发送邮箱的密码,就是QQ邮箱的smtp授权码
"protocol": "ssl" // 是否加密,如果上面是25 这一项就不需要写
}
}
]
添加好以后,按esc退出编辑模式,再输入”:wq“保存并退出即可
6.3、执行以下命令,将mailers.json加入到phabricator的local.json配置文件中
./bin/config set cluster.mailers --stdin < ./conf/local/mailers.json
6.4、 重启phabricator配置文件生效:
./bin/phd restart
6.5、测试发送邮件命令:
./bin/mail send-test --to xxxxx@qq.com --subject hello < ./conf/local/mailers.json
//成功的话,你的邮箱就可以收到一条邮件了
7、配置diffusion.allow-http-auth
访问前面设置的域名,如http://p.mydomain.com,依次点击左侧菜单config-settings-diffusion.allow-http-auth,设置diffusion.allow-http-auth的值为Allow HTTP Basic Auth
8、创建phabricator代码仓库
依次按照以下顺序来创建phabricator代码仓库。
1、点击左侧菜单的Diffusion
2、点击create repository
3、点击create git repository
4、输入name、description,然后create repository即可
5、点击左侧菜单URls
6、点击http://xxxxxxxxxx.git链接
7、点击Edit URl
8、I/O type 选No I/O,然后save changes
9、点击左上角的URls返回
10、点击Add New URl
11、URl填gitee平台的仓库链接,例如:https://gitee.com/yxh01/xxxx.git(前提是已经建好gitee平台的代码仓库)
12、I/O Type 选择observe(意思就是从gitee拉取代码回来到phabricator代码仓库,类似导入),然后create repository URl
13、点击Set Credential,然后add new credential ,然后输入name、username、password(其中username和password是gitee平台的账号密码),然后create credential,然后set credential
14、点击左上角的URls返回代码仓库界面,再点击左侧菜单的basics,再点Activate Repository激活仓库
15、等待片刻即可刷新界面,到此把gitee的代码导入phabricator代码仓库完成
16、点击view repository,检查是否能正常看到代码文件。如果此时查看仓库view repository的时候,界面报错提示类似 ‘/var/repo/5’ To add an exception for this directory, call: git config --global --add safe.directory /var/repo/5,出现这个情况是因为git觉得/var/repo/5目录不安全,则需要去服务器执行此命令:
//登录服务器后,执行以下命令
git config --system --add safe.directory "*"
16、URls-然后add new URl,URl填入gitee平台的仓库链接(例如:http:xxx.git),I/O Type选择Mirror(意思就是代码有了变动,可以手动推送代码到gitee平台)
17、点击I/O Type是observe的那个git链接,点击edit url,I/O type 选No I/O,然后save changes
18、再点击最下面的phabricator仓库自有git链接,点击edit url,I/O type 选Read/Write,然后save changes
19、点击view Repository,再点击clone,点击🔑钥匙图案进去设置仓库密码(VCS密码是clone代码的密码)
20、最后一步,检查仓库的各项状态是否正常。点击xxx仓库,再点击manage repository,滑到下面,如看到status,如果报错 Missing Binary git-http-backend,则要进入var/www/pha/phabricator目录执行以下命令:
//登录服务器后,执行以下命令
//返回根目录
cd ../
cd var/www/pha/phabricator
./bin/config set environment.append-paths '["/usr/lib/git-core", "/bin"]'
说明:如果不解决这个问题,无法clone拷贝下载代码到本地,所以如果这个报错,必须解决!!!
此时,就可以复制仓库的代码http://xxxxx.git链接clone代码到本地了。
21、但此时还无法push推送代码,需要登录服务器执行以下命令:
//打开根目录
cd ../
//赋值权限
chmod -R 777 ./var
此时就可以push推送代码到phabricator仓库了。
9、配置HeraId代码审核规则
以下两种push推送代码到phabricator代码仓库的情况都需要经过代码审核,才能push推送。
- 把开发分支合并到master分支的时候需要代码审核。
- 不小心直接在master分支修改代码并且直接提交的时候也需要代码审核
所以规则设置操作内容如下:
9.1、为了把开发分支合并到master分支的时候需要代码审核,所以配置Create Herald Rule: Commit Hook: Commit Content:
操作流程如下:
1、More Applications
2、HeraId
3、create HeraId Rule
4、Create Herald Rule: Commit Hook: Commit Content
5、Global Rule
6、填写Rule Name
7、New Condition增加选项,选项按如下内容配置:
When all of these conditions are met:
Branches contains master
Accepted Differential revision does not exist
Is merge commit is true
Take these actions every time this rule matches:
Block push with message: must code review
9.2、为了把开发分支合并到master分支的时候必须创建commit,所以配置commits:
1、create HeraId Rule
2、commits
3、Global Rule
4、填写Rule Name
5、New Condition增加选项,选项按如下内容配置:
When all of these conditions are met:
Branches contains master
Take these actions every time this rule matches:
Do nothing.
9.3、为了避免不小心直接在master分支修改代码并且直接提交,所以配置master分支修改也必须要审核,再配置一份Create Herald Rule: Commit Hook: Commit Content:
规则如下:
When all of these conditions are met:
Branches contains master
Accepted Differential revision does not exist
Take these actions every time this rule matches:
Block push with message: code must review
10、团队成员如何注册和注销
团队成员注册有2种方式:
- 团队成员自行注册、管理员批准:
1、访问http://dev.ijsj.top/
2、点击注册新用户
3、输入用户名、真实姓名、密码、邮箱
4、管理员root登录phabricator平台,点击左侧“people”,点击新申请的用户,approve user(批准用户即可)
5、此时用户就可以accept revision(接收同意同事的代码修改)
- 管理员邀请团队成员,团队成员自行设置密码,
1、点击create new user
2、点击create standard user,输入username,邮箱,确认创建即可
3、用户收到邮件后,点击创建密码即可完成新用户的创建
团队成员如何注销:
1、点击people
2、点击manage
3、点击disable user或者delete user即可
到此,phabricator代码审核平台部署配置完成
下一篇再讲解团队成员如何使用phabricator代码审核工具来协同开发以及项目如何从0到上线的过程