随着一声惊雷和滂沱的大雨,我的Phabricator页面终于在我的学生机上跑了起来。

想起在这五个小时内踩过的坑甚如大学隔壁炮王干过的妹子,心里的成就感不禁油然而生。

接下来,我将和大家分享一下本人在CentOS7.4版本,利用lnmp搭建Phabricator的实战过程和踩过的坑。这一方面是为我下一步在docker上部署并制作镜像做好铺垫,更重要的是,我能够有幸和游走在这令人头秃的修罗场里的勇士们,分享我自认为史诗一般难得的宝贵经验。好,那么接下来我们进入正题。

一、什么是phabricator?我为什么要搭建一个phabricator应用?

官网:https://www.phacility.com/ 
项目地址:https://github.com/phacility/phabricator

Phabricator是一套基于Web的软件开发协作工具,一个Web应用用于帮助软件公司构建更好的软件。 
原是facebook员工开发的可视化代码评审工具,现在跑路了并投奔了Phacility,好在他依然在持续维护。
简单说来,这个玩意儿主要包含以下几个功能:

1. 源码的review与审核
2. 代码托管,代码浏览
3. BUG跟踪
4. 项目管理
5. 团队成员交流
6. 组织风险讨论
7. 事件备注,以及回顾(统计等)
8. 权限设置
9. 其他功能

然而目前这些都与我无关,我只是为了好玩。

二、安装教程参考

我相信一定有天选之子可以不费吹灰之力过关斩将,你只需要一具阿姆斯特朗回旋喷气加速炮(不定期更新大家认为的优质教程,欢迎留言)。

来自CSDN的教程1:https://blog.csdn.net/u010285974/article/details/81222976

来自思否的教程1:https://segmentfault.com/a/1190000011183530

当然,我的同事黄同学一直告诉我,需要看官方文档。所以,这次我就索性看官方文档啦!

官方文档:https://secure.phabricator.com/book/phabricator/article/installation_guide/

三、适用本教程的基础条件检查

本人在本教程中运用的资源:

(1)一台放开了所有端口的公网云服务器(腾讯云学生机),安装有centos7.4版本系统,网络连接通畅

(2)一个正常注册并且能够被正常解析的域名

(3)一个数据库实例(腾讯云学生特惠实例6元/月,mysql),通过域名/IP+端口,再加上正确的账户密码,可以保证被第三方程序正常访问

(4)一台高性能的电脑,其中高性能用于装逼,实际通过navicat mysql和xshell(学生版)对服务器和数据库进行管理

请务必仔细检查您的上述条件,这些条件不是必须,只是说明本人的环境部署。如果您严格按照我后续教程操作依然出现问题,烦请检查一下是否满足上述条件。

注意!该配置,特别是放开所有端口这一配置,严禁用于生产环境!!!

四、依托官方文档的安装过程(如遇到问题,可参考第五大点-本人遇到的问题)

以下过程总结自官方文档并结合个人实践简化而来。本教程强化如何顺利部署Phabricator,而不关心数据库、安全考量。

1.解压项目文件、安装基本包和php扩展

很多文件都可能需要现场编译,得先检查一下C编译器,安装gcc。

由于数据库分离,无需考虑数据库。因而基本服务器服务需要安装nginx、php-fpm。其中nginx负责http请求,php-fpm负责php执行请求。

由于需要从github下载项目文件,所以需要安装git。

然后再安装php的常用扩展 pcre-devel php-pear php-devel php-mbstring php-mysql。

全部安装完成且无报错后,运行sudo pecl install apc 全部默认设置,直接回车。

以上命令,熟悉yum的同学应该明白,可以合并成一条指令。

检查一下,运行php -i | grep apc ,看是否有带有apc的包罗列出来,如果没有,添加extension=apc.so在php.ini文件内的[php]标签下任意位置。之后再检查一下。

以上算是配置一个nginx-php配合环境的基本步骤,别忘了我们是要能运行Phabricator的~

在/usr/share/nginx 目录下,运行这三条命令。

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

到现在为止,基础环境就绪。

2.配置nginx.conf

配置nginx.conf以达到和php的相互衔接,配置监听端口,识别主机名【重要】,读取网站根目录。

运行vim /etc/nginx/nginx.conf,在http大括号内,原测试server大括号下,再增加一个server,内容如下:

server {server_name 你的域名;root        /usr/share/nginx/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-redirectfastcgi_param  REDIRECT_STATUS    200;#variables to make the $_SERVER populate in PHPfastcgi_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.conf的同学可能会注意到我把root路径写死了,但也一定知道为什么,我前面的教程是指定大家在/usr/share/nginx/这个目录下clone的git仓库。

运行nginx

运行php-fpm & 来运行php依赖并保证在后台运行。

查看systemctl status nginx,看nginx服务是否正常运行。正常应该显示running

查看ps -ef | grep php,应该能看到php-fpm的主进程和工作进程。

3.配置Phabricator数据库连接信息并初始化数据库

Phabricator需要初始化数据库,我们还需要告诉Phabricator数据库连接信息。按如下指令进行配置:

首先,进入Phabricator目录。cd /usr/share/nginx/phabricator

然后,依次运行以下几条命令:

./bin/config set mysql.host 你的数据库服务器地址
./bin/config set mysql.port 你的数据库服务器端口
./bin/config set mysql.user 你要登录到服务器的用户名
./bin/config set mysql.pass 你要登录到服务器的用户的密码

可能中间会有连接拒绝的信息,但可以尝试等待,直到提示数据已成功更改。(如果网络连接正常,等待2分钟还无反应,直接ctrl+c中止,并排查问题)

之后更新Phabricator连接到的数据库(本次执行,实际效果即为初始化)

Phabricator需要得到更新。还是确保呆在/usr/share/nginx/phabricator目录内,运行:

./bin/storage upgrade

确定(即输入y并回车),继续。不报错,说明更新完毕。使用navicat登入你的数据库,应该能够看到大批量的数据库被生成。

4.进入Phabricator,进行后续的管理操作。

电脑打开浏览器,浏览器内输入你的域名。回车。

聪明的你可能明白了,这样一套整下来,如此简单和清晰的步骤,一定能够方便的写成脚本的!

五、本人在其中遇到的问题

本人实际的步骤怎么可能这么一帆风顺?

本人遇到了如下问题,在这里做一下个人总结。

1.修改nginx.conf文件后并启动nginx,访问网站提示文件找不到

可能和目录权限有关系,使用nginx默认的展示目录/usr/share/nginx即可。

2.报错,提示找不到C编译器

安装gcc

3.遭遇时区设置警告

不用管

4.提示数据库未初始化

按照提示初始化数据库

5.提示需要安装相关扩展

按照提示安装扩展,如果还有问题,百度或者是谷歌去(官方自己这么说的)

6.连接mysql错误

检查设置的mysql服务器地址、端口、用户、密码

转载于:https://www.cnblogs.com/sbhyc/p/11215358.html

【Phabricator】教科书一般的Phabricator安装教程(配合官方文档并带有踩坑解决方案)...相关推荐

  1. 基于vue的微信小程序开发5分钟上手教程(官方文档转)

    使用手册 mpvue 继承自 Vue.js,其技术规范和语法特点与 Vue.js 保持一致. 注:其实就是官方文档,只是习惯看博文学习才直接copy过来的,详见官方文档 本文档适用于有一定 Vue.j ...

  2. GitLab安装配置附官方文档地址

    建议直接跳到看后面附录的官方文档 目录 一.包下载 二.安装 三.配置 1. 地址配置 2. 邮件配置 常用的GitLab命令 附录:官方文档地址 一.包下载 wget --content-dispo ...

  3. qnx 镜像文件_QNX开发最完整图文教程(官方文档,非官方翻译)

    我一直以来,就是一个用着诺基亚的黑莓控,关注BB很久很久了.(事先说明这不是BB10的开发教程,所以大家是黑莓移动应用的开发者可以移步了,这未必是你们想要的资料.;-)在我们正式开发之前,先来闲聊放松 ...

  4. docker-compose的介绍与安装(结合官方文档)

    夫陶公清风千古,余又何人,敢称庶几 一.docker-compose简介 1.1 功能 单个主机上的多个隔离环境 创建容器时保留卷数据 仅重新创建已更改的容器 变量并在环境之间移动组合 Feature ...

  5. Docker CE for CentOS的安装(对官方文档的翻译)

    2019独角兽企业重金招聘Python工程师标准>>> 安装docker之前,你的系统必须满足以下先决条件. 先决条件 要求 安装Docker CE,你需要一个维护版 CentOS ...

  6. Swift 编程语言教程(官方文档)

    Swift 编程语言中文教程 the swift programming language

  7. 迅搜安装流程(基于官方文档)

    运行下面指令下载.解压安装包 wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2 tar -xjf xunsear ...

  8. vim中文教程-来自官方文档

    欢 迎 阅 读 < V I M 教 程 > -- 版本 1.7 前言: Vim 是一个具有很多命令的功能非常强大的编辑器.限于篇幅,在本教程当中就不详细介绍了.本教程的设计目标是讲述一些必 ...

  9. [WebApp开发]基础教程-Google官方文档-第四篇

    文档内容 在Android Browser中使用控制台API 在WebView中使用控制台API 参考 调试 如果你是在为Android开发web应用,那么,你可以使用控制台(console)的Jav ...

  10. MySQL8.0.28安装教程全程参考MySQL官方文档

    MySQL8.0.28详细安装教程.提供了Windows10下安装MariaDB与MySQL8.0同时共存的方法,以及Linux发行版Redhat7系列安装MySQL8.0详细教程.Windows10 ...

最新文章

  1. git 换行符问题,统一linux风格
  2. 安卓makefile与linux,分析linux make命令与Makefile的区别
  3. 成功解决raise Py4JError py4j.protocol.Py4JError: py4j.protocol.Py4JError: Could not find py4j jar at
  4. jieba分词实现原理(C++版 + python篇)(二)
  5. android开源项目框架大全:《IT蓝豹》
  6. python 字典添加元素乱序了_Python有序字典的两个小“惊喜”
  7. linux 统计当前目录下文件或者文件夹的数量
  8. android sqlite 多对多,SQLite多对多的关系?
  9. 解码(六):sws_scale像素格式转换代码演示
  10. 获取元素在文档上的正确坐标
  11. DevOps冲击下的软件测试
  12. 如何在Python中解析XML?
  13. python 两个列表比较_如何在Python中比较两个列表
  14. Warning:Null pointer access: The variable addStrings can only be null at this location
  15. Apache详解(五)WEB相关工具
  16. N沟道MOSFET所需的高于电池的电源电压
  17. deepin做服务器稳定吗,deepin从兴致勃勃到彻底放弃
  18. ubuntu安装nvidia显卡驱动黑屏nvidia-smi黑屏-显卡故障
  19. Java-龙与地下城怪物设计
  20. 无法启动此程序,因为计算机中丢失MSVCRTD.dll(MFC42D.dll, MFCO42D.dll)

热门文章

  1. 光阴深处岁月静好可待流年
  2. 智慧社区安防核心硬件:无障碍人脸识别终端
  3. 谷歌翻译不能用,解决方案
  4. 织梦CMS采集织梦模板程序通用
  5. 街头篮球服务器维护,《街头篮球》4月23日新版活动抢先看
  6. java提取一个字符串中的整数和小数部分
  7. 《Linux运维总结:SVN提示Node remains in conflict解决办法》
  8. c语言水王争霸链表,水王争霸(water)
  9. UVa10653.Prince and Princess
  10. Blue Coat推移动设备安全(MDS)服务