X
    Categories: Tutorials

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

HHVM 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://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
root@vps:~# add-apt-repository 'deb http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu precise main'
root@vps:~# apt-get update
root@vps:~# echo -e "Package: *\nPin: origin ftp.osuosl.org\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)]> FLUSH PRIVILEGES;
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 keyserver.ubuntu.com 5A16E7281BE7A449
root@vps:~# echo deb http://dl.hhvm.com/ubuntu 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/yourwebsite.org/{public_html,logs}
root@vps:~# wget -q -O - http://wordpress.org/latest.tar.gz | tar -xzf - --strip 1 -C /var/www/yourwebsite.org/public_html
root@vps:~# chown www-data: -R /var/www/yourwebsite.org/public_html

Create a new Nginx server block

root@vps:~# cat <<'EOF' > /etc/nginx/sites-available/yourwebsite.org
server {
  server_name yourwebsite.org;
  listen 80;
  root /var/www/yourwebsite.org/public_html;
  access_log /var/www/yourwebsite.org/logs/access.log;
  error_log /var/www/yourwebsite.org/logs/error.log;
  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_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}
EOF
root@vps:~# ln -s /etc/nginx/sites-available/yourwebsite.org /etc/nginx/sites-enabled/yourwebsite.org
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.

View Comments

  • 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.