Phabricator on ArchLinux
- Magnus Therning
At work we’ve been using Trac for quite a while now, but it’s always interesting to look at other options. When listening to a recent episode of git Minutes on Blender’s move to using git I heard of Phabricator for the first time. There are good instructions for how to install it on Ubuntu, but I couldn’t find any for ArchLinux.
These are my notes for installing Phabricator on ArchLinux. Hopefully someone will find them useful.
Basic setup
I performed this install in a virtual machine (using VirtualBox). The virtual machine is configured with a bridged network and I gave it the FQDN of phabarch.vbox.net
.
Packages
Beyond the packages installed as part of the basic install I needed the following packages:
- lighttpd
- git
- mariadb
- php
- php-cgi
- php-apcu
- php-gd
Setup of mariadb
Following the instructions on the ArchLinux wiki page on mariadb
is first started the service and then finished the installation:
# systemctl start mysqld.service
# mysql_secure_installation
After this I restarted the service, and made sure it’ll restart on system start:
# systemctl restart mysqld.service
# systemctl enable mysqld.service
I picked the root password mariaroot.
Setup of lighttpd
Modify /etc/lighttpd/lighttp.conf
to look something like this:
server.modules = (
"mod_rewrite",
"mod_fastcgi",
)
server.port = 80
server.username = "http"
server.groupname = "http"
server.document-root = "/srv/http"
server.errorlog = "/var/log/lighttpd/error.log"
dir-listing.activate = "enable"
index-file.names = ( "index.php", "index.html" )
static-file.exclude-extensions = ( ".php" )
mimetype.assign = (
".html" => "text/html",
".txt" => "text/plain",
".css" => "text/css",
".js" => "application/x-javascript",
".jpg" => "image/jpeg",
".jpeg" => "image/jpeg",
".gif" => "image/gif",
".png" => "image/png",
"" => "application/octet-stream"
)
fastcgi.server += ( ".php" =>
((
"bin-path" => "/usr/bin/php-cgi",
"socket" => "/var/run/lighttpd/php.socket",
"max-procs" => 1,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "4",
"PHP_FCGI_MAX_REQUESTS" => "10000",
),
"bin-copy-environment" => (
"PATH", "SHELL", "USER",
),
"broken-scriptfilename" => "enable",
))
)
$HTTP["host"] =~ "phabarch(\.vbox\.net)?" {
server.document-root = "/srv/http/phabricator/webroot"
url.rewrite-once = (
"^(/rsrc/.*)$" => "$1",
"^(/favicon.ico)$" => "$1",
# This simulates QSA (query string append) mode in Apache
"^(/[^?]*)\?(.*)" => "/index.php?__path__=$1&$2",
"^(/.*)$" => "/index.php?__path__=$1",
)
}
Setup of php
Modify /etc/php/php.ini
and enable the following extensions:
mysqli.so
openssl.so
iconv.so
apcu.so
gd.so
posix.so
Also disable the open_basedir
setting.
Getting and setting up Phabricator
Checking it out
I placed it in /srv/http
:
# cd /srv/http
# git clone git://github.com/facebook/libphutil.git
# git clone git://github.com/facebook/arcanist.git
# git clone git://github.com/facebook/phabricator.git
Database configuration
# cd /srv/http/phabricator
# ./bin/storage upgrade --user root --password mariaroot
# ./bin/config set mysql.user root
# ./bin/config set mysql.pass mariaroot
Set the base URI
# cd /srv/http/phabricator
# ./bin/config set phabricator.base-uri 'http://phabarch.vbox.net/'
Diffusion configuration
# mkdir /var/repo
# ./bin/config set diffusion.allow-http-auth true
At this point I started lighttpd and used the web interface to configure environment.append-paths
to include the path of git-core
, /usr/lib/git-core
.
phd configuration
First create the daemon user
# useradd -r -M -d /tmp phabd
Then create the phd log dir and set its owner and group:
# mkdir /var/tmp/phd/log
# chown -R phabd:phabd /var/tmp/phd/
Also make the daemon user the owner of the repo folder used by Diffusion:
# chown phabd:phabd /var/repo
Configure sudo
Create the file /etc/sudoers.d/phabricator
with this content:
http ALL=(phabd) SETENV: NOPASSWD: /usr/lib/git-core/git-http-backend
User configuration
In the web interface set a VCS password for the user.
Play
Now the system should be ready to be played with :)