Click here for the full version
This Ansible Playbook is designed to setup a Mercury-Like environment on a Production server without the configuration hassle. This playbook was forked from WPEngine's Mercury Vagrant.
Essentially this server setup is a LEMP server except it runs HHVM by default instead of PHP-FPM.
Note: Remeber not to run weird scripts on your server as root without reviewing them first. Please review this playbook to ensure I'm not installing malicious software.
This Playbook will setup:
- Percona DB (MySQL)
- HHVM (Default)
- PHP-FPM (Backup)
- Nginx (Customized for WordPress)
- Clean WordPress Install (Latest Version)
- WP-CLI
Basic version does not include Varnish, Memcached and APC
- SSH onto a newly created server
- Add Ansible with
sudo add-apt-repository ppa:ansible/ansible
- Update Apt with
sudo apt-get update && sudo apt-get upgrade
- Install Git and Ansible with
sudo apt-get install ansible git
- Clone this repository with
git clone https://github.com/zach-adams/hgv-deploy-basic
- Edit
group_vars/all
with your specific details withvim|emacs|nano group_vars/all
- Edit
hosts
with your specific hostnamevim|emacs|nano hosts
- Run Ansible with
ansible-playbook -i hosts playbook.yml
- Remove the cloned git directory from your server
- You're good to go! A new WordPress install running HHVM and Varnish should be waiting for you at your hostname!
Your Nginx configuration should automatically facilitate switching to PHP-FPM if there's an issue with HHVM, however if you want to switch back manually you can do so like this:
- Open your Nginx configuration with
vim|emacs|nano /etc/nginx/sites-available/( Your Hostname )
- Find the following section towards the bottom:
location ~ \.php$ {
proxy_intercept_errors on;
error_page 500 501 502 503 = @fallback;
fastcgi_buffers 8 256k;
fastcgi_buffer_size 128k;
fastcgi_intercept_errors on;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass hhvm;
}
- Change
fastcgi_pass hhvm;
tofastcgi_pass php;
- Restart Nginx with
sudo service nginx restart
- You should now be running PHP-FPM! Check to make sure using
phpinfo();
Please report any issues through Github or email me at zach@zach-adams.com and I'll do my best to get back to you!