【Phabricator】教科书一般的Phabricator安装教程(配合官方文档并带有踩坑解决方案)
随着一声惊雷和滂沱的大雨,我的Phabricator页面终于在我的学生机上跑了起来。
想起在这五个小时内踩过的坑甚如大学隔壁炮王干过的妹子,心里的成就感不禁油然而生。
接下来,我将和大家分享一下本人在CentOS7.4版本,利用lnmp搭建Phabricator的实战过程和踩过的坑。这一方面是为我下一步在docker上部署并制作镜像做好铺垫,更重要的是,我能够有幸和游走在这令人头秃的修罗场里的勇士们,分享我自认为史诗一般难得的宝贵经验。好,那么接下来我们进入正题。
一、什么是phabricator?我为什么要搭建一个phabricator应用?
官网:https://www.phacility.com/
项目地址:https://github.com/phacility/phabricator
Phabricator是一套基于Web的软件开发协作工具,一个Web应用用于帮助软件公司构建更好的软件。
原是facebook员工开发的可视化代码评审工具,现在跑路了并投奔了Phacility,好在他依然在持续维护。
简单说来,这个玩意儿主要包含以下几个功能:
. 源码的review与审核
. 代码托管,代码浏览
. BUG跟踪
. 项目管理
. 团队成员交流
. 组织风险讨论
. 事件备注,以及回顾(统计等)
. 权限设置
. 其他功能
然而目前这些都与我无关,我只是为了好玩。
二、安装教程参考
我相信一定有天选之子可以不费吹灰之力过关斩将,你只需要一具阿姆斯特朗回旋喷气加速炮(不定期更新大家认为的优质教程,欢迎留言)。
来自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-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.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服务器地址、端口、用户、密码
【Phabricator】教科书一般的Phabricator安装教程(配合官方文档并带有踩坑解决方案)的更多相关文章
- linux安装oracle的官方文档
1:https://docs.oracle.com/cd/E11882_01/install.112/e47689/toc.htm 2:https://oracle-base.com/articles ...
- 在 centos6 安装 MySQL5.7 官方文档
Adding the MySQL Yum Repository First, add the MySQL Yum repository to your system's repository list ...
- MySQL8.0.28安装教程全程参考MySQL官方文档
前言 为了MySQL8.0.28安装教程我竟然在MySQL官方文档逛了一天,至此献给想入门MySQL8.0的初学者.以目前最新版本的MySQL8.0.28为示例进行安装与初步使用的详细讲解,面向初学者 ...
- centos7安装oracle11g(根据oracle官方文档安装,解决图形界面安装问题)
一.系统及安装包 操作系统:centos 7.4 oracle版本:oracle 11g r2 二.centos环境配置 安装数据库所需要的软件包 [root@localhost data]# yum ...
- 2DToolkit官方文档中文版打地鼠教程(三):Sprite Collections 精灵集合
这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...
- 2DToolkit官方文档中文版打地鼠教程(二):设置摄像机
这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...
- 2DToolkit官方文档中文版打地鼠教程(一):初始设置
这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...
- CentOS7.3利用kubeadm安装kubernetes1.7.3完整版(官方文档填坑篇)
安装前记: 近来容器对企业来说已经不是什么陌生的概念,Kubernetes作为Google开源的容器运行平台,受到了大家的热捧.搭建一套完整的kubernetes平台,也成为试用这套平台必须迈过的坎儿 ...
- 比官方文档更易懂的Vue.js教程!包你学会!
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由蔡述雄发表于云+社区专栏 蔡述雄,现腾讯用户体验设计部QQ空间高级UI工程师.智图图片优化系统首席工程师,曾参与<众妙之门> ...
随机推荐
- 基于事件驱动的DDD领域驱动设计框架分享(附源代码)
原文:基于事件驱动的DDD领域驱动设计框架分享(附源代码) 补充:现在再回过头来看这篇文章,感觉当初自己偏激了,呵呵.不过没有以前的我,怎么会有现在的我和现在的enode框架呢?发现自己进步了真好! ...
- Android零基础入门第82节:Activity数据回传
上一节学习了将简单的数据从MainActivity传递到SecondActivity,本节一起来学习数据如何从SecondActivity回传到MainActivity. 一.简介 前面己经提到,Ac ...
- win32内存调用图
https://msdn.microsoft.com/en-us/library/ms810603.aspxhttps://www.codeproject.com/Articles/14525/Hea ...
- Tencent://Message/协议的实现原理(Windows提供协议注册)
腾讯官方通过 Tencent://Message/协议可以让QQ用户显示QQ/TM的在线状态发布在互联网上:并且点击 XXX ,不用加好友也可以聊天 官方链接: http://is.qq.com/w ...
- 阻止系统自动睡眠的小软件,附C#制作过程(执行SetThreadExecutionState API函数,让系统误判)
因为有时下载东西的时候,不想让电脑自动深入睡眠,所以就开启了离开模式.这样不但不节能环保,而且到真正想要睡眠的时候就是一翻蛋疼. 改过自新,关闭了离开模式,同时无操作30分钟后也会进入睡眠模式.但是在 ...
- LaTeX 中插入GIF图片
参见博文:liam.page 和 voidcn 前提条件 安装 ImageMagick 软件 (因为要把 gif 图片转换成 png 序列),使用它的命令行工具 convert.exe 命令行下把 g ...
- Apicloud 接入海康摄像头
1准备工作 , 加载apicloud 海康视频模块. 引入 SDK 重新生成项目测试 再config.xml写入appid 话不多说直接上代码 video=api.require("haik ...
- 2019攻防世界web新手区
robots 看了题目描述,发现与robots协议有关,过完去百度robots协议.发现了robots.txt,然后去构造url访问这个文件 http://111.198.29.45:42287/ro ...
- Netty源码分析-- 处理客户端接入请求(八)
这一节我们来一起看下,一个客户端接入进来是什么情况.首先我们根据之前的分析,先启动服务端,然后打一个断点. 这个断点打在哪里呢?就是NioEventLoop上的select方法上. 然后我们启动一个客 ...
- 并发编程-concurrent指南-ReadWriteLock-ReentrantReadWriteLock(可重入读写锁)
几个线程都申请读锁,都能获取: import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantRea ...