In this tutorial I will be guiding you with steps to install NGINX stable, HHVM 3.9 and PHP 5 FPM.
A little setup background:
First, Nginx:
add-apt-repository ppa:nginx/stableapt-get update && apt-get upgradeapt-get install nginx
Second, HHVM:
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449add-apt-repository "deb http://dl.hhvm.com/ubuntu $(lsb_release -sc) main"apt-get updateapt-get install hhvmupdate-rc.d hhvm defaults/usr/bin/update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60/usr/share/hhvm/install_fastcgi.sh
We want to run HHVM on a Unix Socket, so let’s edit it’s configuration:
nano /etc/hhvm/server.ini
Comment “hhvm.server.port = 9000” with ; and add “hhvm.server.file_socket = /var/run/hhvm/hhvm.sock”
It should look like this:
; php optionspid = /var/run/hhvm/pid
; hhvm specific;hhvm.server.port = 9000hhvm.server.file_socket = /var/run/hhvm/hhvm.sockhhvm.server.type = fastcgihhvm.server.default_document = index.phphhvm.log.use_log_file = truehhvm.log.file = /var/log/hhvm/error.loghhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc
Save with Ctrl + X and then ‘Y’
Now PHP-FPM:
apt-get install php5-fpm
This should install FPM and listen on /var/run/php5-fpm.sock by default
We are done installing! Let’s configure things now. Let’s start by creating a upstream conf file for nginx:
nano /etc/nginx/conf.d/upstream.conf
Add the following and save:
upstream php {server unix:/var/run/hhvm/hhvm.sock;server unix:/var/run/php5-fpm.sock backup;}
As you can see, PHP-FPM will be a backup in case HHVM fails.
Now let’s edit Nginx’s HHVM conf file:
nano /etc/nginx/hhvm.confg
Replace “fastcgi_pass 127.0.0.1:9000;” with “fastcgi_pass php;” . It should look like this:
location ~ \.(hh|php)$ {fastcgi_keep_conn on;fastcgi_pass php;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
Restart the services with:
service hhvm restart && service php5-fpm restart && service nginx restart
Test with:
curl -I localhost/test.php
Should be a 404 (As the actual test.php doesn’t exist) with these headers:
Server: nginx/1.8.0X-Powered-By: HHVM/3.9.0
And that’s all! We have latest stable Nginx with latest HHVM in fastcgi with php-fpm fallback!
Hacker Noon is how hackers start their afternoons. We’re a part of the @AMIfamily. We are now accepting submissions and happy to discuss advertising &sponsorship opportunities.
To learn more, read our about page, like/message us on Facebook, or simply, tweet/DM @HackerNoon.
If you enjoyed this story, we recommend reading our latest tech stories and trending tech stories. Until next time, don’t take the realities of the world for granted!