Ansible playbooks for setting up a LE(M)P stack for Grav.
- Local development environment with Vagrant
- High-performance production servers
- One-command deploys
These playbooks were shamelessly ripped off from the excellent Trellis, a collection of ansible playbooks for a WordPress server.
These playbooks will configure a server with the following and more:
- Ubuntu 14.04 Trusty LTS
- Nginx (with optional FastCGI micro-caching)
- PHP 7.0
- SSL support (scores an A+ on the Qualys SSL Labs Test)
- Let's Encrypt integration for free SSL certificates
- HTTP/2 support (requires SSL)
- Composer
- WP-CLI
- sSMTP (mail delivery)
- MailHog
- Memcached
- Fail2ban
- ferm
Make sure all dependencies have been installed before moving on:
- Ansible >= 2.0.0.2
- Virtualbox >= 4.3.10
- Vagrant >= 1.5.4
- vagrant-bindfs >= 0.3.1 (Windows users may skip this)
- vagrant-hostmanager
The recommended directory structure looks like:
example.com/ # → Root folder for the project
├── ansible-grav/ # → Your clone of this repository
└── site/ # → Grav folder- Create a new project directory:
$ mkdir example.com && cd example.com - Clone ansible-grav:
$ git clone --depth=1 [email protected]:afonsoduarte/ansible-grav.git && rm -rf ansible-grav/.git - Install the Ansible Galaxy roles:
$ cd ansible-grav && ansible-galaxy install -r requirements.yml - Download Grav: https://getgrav.org/downloads, unpack, rename folder to
site, and put it in your project root folder
This project does not have its own documentation. Instead, please check the Trellis documentation on which this project is based.
- Configure your Grav sites in
group_vars/development/grav_sites.ymland ingroup_vars/development/vault.yml - Run
vagrant up
Read the local development docs for more information.
A base Ubuntu 14.04 server is required for setting up remote servers.
- Configure your Grav sites in
group_vars/<environment>/grav_sites.ymland ingroup_vars/<environment>/vault.yml(see the Vault docs for how to encrypt files containing passwords) - Add your server IP/hostnames to
hosts/<environment> - Specify public SSH keys for
usersingroup_vars/all/users.yml(see the SSH Keys docs) - Run
ansible-playbook server.yml -e env=<environment>to provision the server
Read the remote server docs for more information.
- Add the
repo(Git URL) of your Grav project in the correspondinggroup_vars/<environment>/grav_sites.ymlfile - Set the
branchyou want to deploy - Run
./deploy.sh <environment> <site name> - To rollback a deploy, run
ansible-playbook rollback.yml -e "site=<site name> env=<environment>"
Read the deploys docs for more information.
Contributions are welcome from everyone. We have contributing guidelines to help you get started.
Keep track of development and community news.
- Participate on the Roots Discourse
- Follow @rootswp on Twitter
- Read and subscribe to the Roots Blog
- Subscribe to the Roots Newsletter
- Listen to the Roots Radio podcast