How to install a WordPress development environment

WordPress 4.0 has forced me to update the plugins I created a long time ago to explicitly state that they are still compatible. I understand the rationale, so, eventually and reluctantly, I “decided” to comply.

To feel modern myself, I’ve been playing with Varying Vagrant Vagrants. It’s fantastic: It downloads and installs tons of stuff all by itself. It was a real pleasure to see it work… when eventually did.

First issue: (host) brew was outdated

In fact the installation for me wasn’t completely effortless, which should be VVV’s target. To be able to “4. Install the vagrant-hostsupdater” I needed to force brew to update. I did it like this:

That allowed me to complete the steps from “1. Start” all the way up to “7. …change into the new directory…” without a glitch.

Second issue: (guest) SSH was not working

But as soon as I tried to ´vagrant up´

I got lots of retries. Eventually they ended, but the new virtual machine was broken, BADLY broken. In fact I could not connect to it using ´vagrant ssh´ even if according to ´vagrant status´ it was peacefully running. Neither ´vagrant destroy´ worked of course.

My only option was to kill the virtual machine from VirtualBox and look into the Vagrantfile and see if I could tweak it somehow here and there. I tried really hard but the result never changed.

So I tried one last thing: Get rid of the virtual box and repeat ´vagrant up´ once more. VirtualBox virtual machines on OSX are stored into folders like ´vvv_default_1412029772978_15676´ usually into ´~/VirtualBox VMs´.

If there were many such subfolders, the right one is obtained first by finding out the id of the virtual machine at hand and then looking for it into the list of installed virtual machines.

After unregistering the virtual machine, removing the folder and issuing ´vagrant up´ again… magic… SSH was working and the install script could complete. Why not before? No idea. But here was the pleasure I referred to earlier. It went on and on for many minutes, printing thousands of green lines until it gracefully ended.

Third issue: (outgoing) mail was not delivered

Then I could work on everything I wanted. Connect to the databases with Sequel Pro. Open all the WordPress instances in Chrome. Install my plugins. Everything perfect. And the synced folders… awesome, they were allowing me to comfortably develop in my beloved IDE on my Mac.

I knew there was something wrong, though. I still hadn’t received any welcome emails from the WordPress instances. Well, I thought, that’s understandable. The install script never asked for my email… there must be some bogus one configured. I checked and I was right.

After entering my real email address in a WordPress instance, I triggered an email notification and waited. And waited. And waited. Nothing. Ever. Delivered. Then I checked the log.

Don’t get fooled by the message “You have new mail.” Those use to be internal notifications, like bounces.

That must be the previous problem: ´Host or domain name not found. Name service error for name=local.dev type=AAAA: Host not found´.

That must be the current problem: ´connect to gmail.com[173.194.116.246]:25: Connection timed out´.

As much as I could understand, somewhere internally the port 25 might be closed, basically according to the answer given by kasperd here. Then I found this article from 2014 (which is really this article from 2008) and tried it out with sendmail.

Which again didn’t deliver anything but added these lines to the mail log.

Then the problem became: ´SASL authentication failed´. This one was pretty hard. I tried many different configurations. In the end I had to give up and read what Google advised right in the error message. That in turn made me follow (very reluctantly) the steps for Allowing less secure apps to access your account.

Notice that you are supposed to Allow less secure apps from the specific gmail account that you want to use for authenticating (through the server) when trying to relay, i.e. the one you set up into ´/etc/postfix/sasl_passwd´. For me that meant I had to open the link from the Chrome user associated to that account.

And as soon as I completed that LAST step, I started receiving all the messages that Ubuntu had been queueing after I had sent them. Then we both went to sleep.

How to kill an unresponsive Vagrant instance

I just tried to follow the instructions on VVV to install a WordPress development environment, but was not lucky. The ssh couldn’t connect and so even $ vagrant destroy could not complete.

It turns out you can kill an instance from VirtualBox like this: