概述

其实在网上搭建Phabricator环境文章很多,我写这篇文章的主要目的就是记录自己遇到的坑,顺便写一下安装步骤,其实安装步骤按照官网文档一步一步配置即可,很简单。只不过官方提供的一键安装脚本都是基于apache的,如果想使用Nginx的话,则不能使用官方提供过的脚本安装。

遇到的坑-Phabricator连接不上MySQL

为什么连接不上MySQL呢???使用./bin/storage upgrade可以正常初始化Phabricator的数据库,但是使用页面访问时就是连接不上。

搜了大量文章也没有说明这一点的,可能就是大家比较幸运,没遇到这个问题。这个问题的根源就是MySQL的问题,是这样的。

Ubuntu中默认使用apt install mysql-server安装MySQL,安装完之后启动mysql服务,发现使用mysql -uroot -p登录时,无论怎么输入密码都能正确登录,即使我输错密码也可以,很奇怪。这时使用./bin/storage upgrade初始化Phabricator的数据库没有问题,但是打开页面时却提示连接不上数据库。很奇怪,可能是哪里配置有问题,这种配置很讨厌,你不熟悉的话很容易被坑一下。还不如使用官方的方式安装MySQL。

怎么解决???使用官方提供的MySQL安装方式,一定要完全卸载完旧的mysql再安装新的,包括配置文件,完全卸载!。安装步骤在下面,但是这时还需要注意一下,安装时MySQL的密码加密方式,选择第二个(5.x)的方式,不要选择MySQL推荐的,否则会出现./bin/storage upgrade时连接不上MySQL的问题。

准备环境

本文使用的系统是ubuntu-18.04.2,因为Phabricator是基于PHP开发的,所以我使用了Nginx配合php-fpm进行访问的。

安装软件

安装Nginx

运行命令apt install nginx安装Nginx即可。

配置文件在:/etc/nginx/nginx.conf

安装MySQL

使用MySQL标准的安装步骤,从官网上下载deb包(mysql-apt-config_0.8.12-1_all.deb)。

运行dpkg -i mysql-apt-config_0.8.12-1_all.deb进行安装,进入字符界面,直接点OK即可。

然后执行apt update更新源,发现列出了MySQL的源。

然后执行apt install mysql-server,然后输入两次密码,选择密码加密方式,一定要选择第二个(5.x)的那个,选择第一个时Phabricator会连接不上。

安装PHP

运行apt install php php-fpm php-mysql安装php。

其中php-fpm是配置ngxin解析php的,php-mysql就是连接mysql的。

下载Phabricator

使用git下载到你想要的目录中,我放在/var/www/phabricator目录中。

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

一定要保证libphutil、arcanist和phabricator位于同级目录。

配置

配置nginx和php

进入nginx的/etc/nginx/sites-enabled目录中,有一个默认的配置文件,因为该文件配置绑定了80端口,所以我们将其移除,因为该文件是连接文件,所以改名是无效的。移除后,新建phabricator.conf文件,将官方推荐配置写入

server {
listen 80; # 官方没有加,这里需要加
server_name phabricator.example.com;
root /var/www/phabricator/phabricator/webroot; # 修改为你的phabricator目录 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;
}
}

写入完之后,配置php的user和group, 编辑/etc/php/7.2/fpm/pool.d/www.conf文件,修改一下内容

user = nginx
group = nginx
# 注释掉listen = /run/php/php7.2-fpm.sock
# 增加listen = localhost:9000
listen = localhost:9000

配置phabricator

运行如下命令配置连接数据库

cd phabricator
mkdir conf/custom
vim conf/custom/mysql.conf.php

写入如下信息

<?php
return array(
'mysql.host' => 'localhost',
'mysql.port' => '3306',
'mysql.user' => 'root',
'mysql.pass' => '',
);

将配置文件加入到phabricator的配置中

echo custom/mysql > conf/local/ENVIRONMENT

然后运行./bin/storage upgrade进行phabricator的数据库初始化

启动nginx和php-fpm

# 启动nginx
nginx # 启动php-fpm
systemctl start php7.2-fpm

然后通过浏览器打开网页进行后续配置即可。

Phabricator服务的搭建的更多相关文章

  1. nginx服务傻瓜搭建

    nginx服务傻瓜搭建 安装步骤: 一.先准备好相关源码包和程序包,如下图 所有包都在云服务器的/src目录下. 二.安装 1.安装nginx服务器,支持vod stream.fileupload c ...

  2. 基于SpringMVC下的Rest服务框架搭建【1、集成Swagger】

    基于SpringMVC下的Rest服务框架搭建[1.集成Swagger] 1.需求背景 SpringMVC本身就可以开发出基于rest风格的服务,通过简单的配置,即可快速开发出一个可供客户端调用的re ...

  3. dubbo服务简单搭建

    一.初识dubbo: 架构图: Provider: 暴露服务的服务提供方. Consumer: 调用远程服务的服务消费方. Registry: 服务注册与发现的注册中心. Monitor: 统计服务的 ...

  4. Centos 6.5 pptpd服务端搭建过程

    首先检测有没有启用ppp和tun cat /dev/ppp cat /dev/net/tun 如果显示是这样的 cat: /dev/ppp: No such device or address cat ...

  5. [Visual Studio] SOA服务框架搭建

    1.服务框架搭建 2.服务模板创建 3.Nuget引用 4.客户端调用 任务点: 1.分析SOA 2.修改SOA架构名称以及关键字 3.使用Nuget添加引用 4.选择服务模板进行创建 5.尝试调用 ...

  6. 【转载】Redis Sentinel 高可用服务架构搭建

    作者:田园里的蟋蟀 出处:http://www.cnblogs.com/xishuai/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 阅读 ...

  7. springcloud微服务架构搭建

    SpringCloud微服务框架搭建 一.微服务架构 1.1什么是分布式 不同模块部署在不同服务器上 作用:分布式解决网站高并发带来问题 1.2什么是集群 多台服务器部署相同应用构成一个集群 作用:通 ...

  8. ubuntu 16.04 nfs服务的搭建

    nfs服务是实现Linux和Linux之间的文件共享,nfs服务的搭建比较简单. 现在介绍如何在ubuntu16.04系统中搭建nfs服务,ubuntu的搭建比红帽的还要简单. 1.安装nfs服务 s ...

  9. Red Hat 6.5 nfs服务的搭建

    nfs服务是实现Linux和Linux之间的文件共享,nfs服务的搭建比较简单. 现在介绍如何在红帽6.5系统中搭建nfs服务. 1.关闭selinux服务 如果已经关闭该服务的可以直接跳过该步骤. ...

随机推荐

  1. Codeforces Round #530 (Div. 2) C D

    C: *可以保留删除或者增加 ? 保留或者删除 #include<bits/stdc++.h> using namespace std; int main(){ string s; int ...

  2. 看毛片就能AC算法

    KMP && ACA KMP: 吼哇! 反正网上教程满天飞,我就不写了. 发个自己写的模板 /** freopen("in.in", "r", ...

  3. Codeforces 1064D/1063B Labyrinth

    原题链接/原题链接(代理站) 题目翻译 给你一个\(n*m\)的迷宫和起始点,有障碍的地方不能走,同时最多向左走\(x\)次,向右走\(y\)次,向上向下没有限制,问你有多少个格子是可以到达的. 输入 ...

  4. python中os.path.isdir()函数的使用

    在python 中,os.path.isdir(path)函数主要用来判断函数内部的path是否为一个目录 具体关于这个函数的解说参考博客https://blog.csdn.net/xjp_xujip ...

  5. gulp学习笔记——最好的学习文档是官网

    官网:http://www.gulpjs.com.cn/docs/api/ 当然还有一个博客写的也很好,当我看不下去官网的时候,这个帮助了我很多,明了易懂:http://www.ydcss.com/a ...

  6. 【webpack】中file-loader和url-loader使用方法

    file-loader 可以指定要复制和放置资源文件的位置,以及如何使用版本哈希命名以获得更好的缓存.此外,这意味着 你可以就近管理图片文件,可以使用相对路径而不用担心部署时 URL 的问题.使用正确 ...

  7. 集合-Collections工具

    1.定义 Collections是集合类的一个工具类,它提供了一系列静态方法用于对容器中的元素进行排序和搜索等一系列操作. 注:Collection是一个集合接口,而Collections是一个有着操 ...

  8. 论文笔记:Deep feature learning with relative distance comparison for person re-identification

    这篇论文是要解决 person re-identification 的问题.所谓 person re-identification,指的是在不同的场景下识别同一个人(如下图所示).这里的难点是,由于不 ...

  9. vue之vuex学习

    知识点一:vuex是状态管理器(单向数据流) 每个Vuex应用程序的核心是商店.“商店”基本上是一个容纳您的应用程序状态的容器.有两件事使Vuex商店与普通的全局对象不同: Vuex商店是被动的.当V ...

  10. 【转】HashMap集合中key只能为引用数据类型,不能为基本类型

    在HashMap中,为什么不能使用基本数据类型作为key? 其实和HashMap底层的存储原理有关,HashMap存储数据的特点是:无序.无索引.不能存储重复元素. 存储元素采用的是hash表存储数据 ...