概述
其实在网上搭建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
写入如下信息
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
然后通过浏览器打开网页进行后续配置即可。