目录
概述
遇到的坑 - Phabricator 连接不上 MySQL
准备环境
安装软件
安装 Nginx
安装 MySQL
安装 PHP
下载 Phabricator
配置
配置 nginx 和 PHP
配置 phabricator
启动 nginx 和 PHP-fpm
概述
其实在网上搭建 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
然后通过浏览器打开网页进行后续配置即可.
来源: https://www.cnblogs.com/wuqinglong/p/10544642.html