【Phabricator】教科书通常的Phabricator安装教程(配合官方文档并带有踩坑解决方案)

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

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

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

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

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

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

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

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

2、安装教程参考docker

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

来自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/

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

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

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

(2)一个正常注册而且可以被正常解析的域名

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

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

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

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

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

如下过程总结自官方文档并结合我的实践简化而来。本教程强化如何顺利部署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,进行后续的管理操做。

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

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

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

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

本人遇到了以下问题,在这里作一下我的总结。

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

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

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

安装gcc

3.遭遇时区设置警告

不用管

4.提示数据库未初始化

按照提示初始化数据库

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

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

6.链接mysql错误

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

相关文章
相关标签/搜索