Install WordPress with HHVM, Nginx and MariaDB on an Ubuntu 12.04 LTS

HipHopHHVM is an open-source virtual machine designed for executing programs written in PHP. HHVM stands for HipHop Virtual Machine and it was initially developed by Facebook to boost up their application performance, and for those who don’t know MariaDB is a drop-in replacement for MySQL. In this tutorial we will show you step by step how to install WordPress with HHVM, Nginx and MariaDB on an Ubuntu 12.04 LTS VPS.

Update the system and install necessary packages.

root@vps:~# apt-get update && apt-get upgrade
root@vps:~# apt-get install python-software-properties curl

Install MariaDB and create a database.

root@vps:~# apt-key adv --recv-keys --keyserver hkp:// 0xcbcb082a1bb943db
root@vps:~# add-apt-repository 'deb precise main'
root@vps:~# apt-get update
root@vps:~# echo -e "Package: *\nPin: origin\nPin-Priority: 1000" | tee /etc/apt/preferences.d/mariadb
root@vps:~# apt-get install mariadb-server
root@vps:~# mysql -uroot -p
MariaDB [(none)]> CREATE DATABASE wpdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON wpdb.* TO 'wpuser'@'localhost' IDENTIFIED BY 'wpuser_passwd';
MariaDB [(none)]> \q

Install and configure Nginx 1.4.x

root@vps:~# add-apt-repository ppa:nginx/stable
root@vps:~# apt-get install nginx

Set the worker_processes to the number of processors in your system.

To find out the number of processors in your system and set the worker_processes, run the following command:

root@vps:~# sed -i "0,/^worker_processes/ s/^worker_processes .*$/worker_processes `grep -c processor /proc/cpuinfo`;/"  /etc/nginx/nginx.conf

Install hhvm and hhvm-fastcgi

root@vps:~# apt-key adv --recv-keys --keyserver 5A16E7281BE7A449
root@vps:~# echo deb precise main | tee /etc/apt/sources.list.d/hhvm.list
root@vps:~# apt-get update
root@vps:~# apt-get install hhvm-fastcgi

If you want to use php from the command line you will need to symlink php to hhvm

root@vps:~# ln -s $(which hhvm) /usr/local/bin/php
root@vps:~# php -v
HipHop VM v2.3.3 (rel)
Compiler: tags/HHVM-2.3.3-0-g4cf537888ba4ae253cc3dd0b04fe2c5bca5d24e4
Repo schema: 19f7626936db8612e50b3393be6e2cb7547771c8

Create a root directory for your website and download and extract WordPress

root@vps:~# mkdir -p /var/www/{public_html,logs}
root@vps:~# wget -q -O - | tar -xzf - --strip 1 -C /var/www/
root@vps:~# chown www-data: -R /var/www/

Create a new Nginx server block

root@vps:~# cat <<'EOF' > /etc/nginx/sites-available/
server {
  listen 80;
  root /var/www/;
  access_log /var/www/;
  error_log /var/www/;
  index index.php;

  location / {
    try_files $uri $uri/ /index.php?q=$uri&$args;

  location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
    access_log off;
    expires max;

  location ~ /\.ht {
    deny  all;

  location ~ \.php$ {
    fastcgi_index index.php;
    fastcgi_keep_conn on;
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
root@vps:~# ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/
root@vps:~# /etc/init.d/nginx restart

Set all services to start at boot

root@vps:~# update-rc.d nginx defaults
root@vps:~# update-rc.d hhvm-fastcgi defaults
root@vps:~# update-rc.d mysql defaults

Finally, open your browser, type the address of your website and follow the on-screen instructions.

Of course, if you are one of our Linux VPS Hosting customers, you don’t have to do any of this, simply ask our admins, sit back and relax. Our admins will set this up for you immediately.

PS. If you liked this post please share it with your friends on the social networks using the buttons on the left or simply leave a reply below. Thanks.

How to install Elkarte Community Forum on Ubuntu 14.04
How to install Railo on a CentOS 7 VPS
How to install X2CRM on an Ubuntu 16.04 VPS
  • Brian Lovett

    Thank you! I have spent two days trying to get HHVM running with Nginx on my centos 6 machine, and this tutorial did the trick.