This script will automate the setup of a PHP developement box.
- Ubuntu 18.04 (LTS)
- Nginx 1.14+
- PHP 7.2+
- MariaDB 10.1+ (~MySQL 5.7+)
- Redis 5.0+
- Memcached
- Composer
- MacOS (Windows and Linux might work but aren't covered here)
- VirtualBox
- Vagrant
You clone this repo in a folder called Vagrant
in your home directory.
git clone https://github.com/milhouse1337/vagrant-lemp.git ~/Vagrant
cd ~/Vagrant
You need to remove the .git
folder, it will cause conflicts with your own Git repos later.
rm -rf .git
Open the following file:
~/Vagrant/_install/bootstrap.sh
- Update the MySQL root password.
- Validate if the rest of the script feels right for you and update as needed.
When everything seems fine you launch it. 🚀
vagrant up
You will have to wait a few seconds (minutes) ☕️ for the script to complete. When everything is done you have a complete LEMP setup to play with. 🤓
Create the following folders and PHP file:
mkdir -p ~/Vagrant/127.0.0.1/public
echo "<?php phpinfo(); ?>" > ~/Vagrant/127.0.0.1/public/index.php
Open the link on your browser:
You should see a phpinfo()
output. 👍
Note: If you want Vagrant to listen on port 80 (or 443 for TLS) you might have to forward the ports with pfctl (the built-in MacOS firewall). More information on this Stack Overflow if you want to know why and how to fix it.
We use the $host
variable from Nginx on the default vhost so the document root is /var/www/{$host}/public
for the VM and ~/Vagrant/{$host}/public
on your local machine. This emulates the same behavior as VirtualDocumentRoot
from Apache but for Nginx.
This means you can use ANY hostname you want (make sure it resolves to 127.0.0.1
) then you create the above folder structure (~/Vagrant/{$hostname}/public
) to make it work, pretty cool! 😎
vagrant up # Boot. (install if not already provisioned)
vagrant ssh # Login as user "vagrant".
vagrant reload # Reboot.
vagrant halt # Poweroff.
vagrant destroy # Delete.
The MIT License (MIT). Please see License File for more information.