Fork me on GitHub

Machine management

Start a machine

If you haven’t updated the Vagrantfile in a while, do so before starting the machine.

A project can only have one machine running at any given time. If you have other projects running, stop them all before starting a new one to avoid problems and save system resources. If you need to have multiple projects at once, make sure the config.yml has a unique name and domains.

Run vagrant up in the project directory to start the machine. On Windows, always run Cygwin as an administrator before running vagrant up.


Stop a machine

Run vagrant halt in the project directory to stop the machine. launch the VirtualBox GUI program and terminate the virtual machine if it’s still in the running state.


Remove a machine

Stop the machine from running before removing it.

Run vagrant destroy --force in the project directory to remove the machine. Then, launch the VirtualBox GUI program, and delete the virtual machine if it’s still listed.

Remove the .vagrant directory and clean up the WordPress and host entries for a fresh start. Update the Vagrantfile if you had issues with the machine.

SSH to a machine

Run vagrant ssh in the project directory after starting the machine.

$ vagrant ssh
Connecting to development environment... (ssh -- )
...

Project files

Update Vagrantfile

Before touching the Vagrantfile, always remove the machine.

The most recent Vagrantfile is available on GitHub. Download and replace the file manually, or use curl if it’s already installed.

$ curl -L raw.githubusercontent.com/Seravo/wordpress/master/Vagrantfile > new
...

$ mv new Vagrantfile

After making the changes, run vagrant box update and remove the old boxes.


Toggle beta version

Before touching the Vagrantfile, always remove the machine. You should also ensure that you have the most recent Vagrantfile.

Open Vagrantfile with a text editor. Look for a line with config.vm.box.

To enable beta version, change the line to config.vm.box = 'seravo/wordpress-beta'.

To disable beta version, change the line to config.vm.box = 'seravo/wordpress'.

After making the changes, run vagrant box update and remove the old boxes.


WordPress cleanup

If WordPress fails to install, or you receive PHP errors, try deleting the vendor directory and composer.lock file.

$ rm -rf vendor composer.lock

When you start the machine, the files will regenerate.


Vagrant cleanup

Stop all machines

Get a list of all available machines.

$ vagrant global-status
id       name          provider   state   directory                           
------------------------------------------------------------------------------
a4a9e26  wordpress-box virtualbox running /home/user/my-wp-site1       
d12fa1b  wordpress-box virtualbox running /home/user/my-wp-site2

Stop all machines using the id in the first column.

$ vagrant halt a4a9e26
...

$ vagrant halt d12fa1b
...

If a machine cannot be stopped, it may not exist at all. Running vagrant global-status —prune will clear the global machine cache.

Finally, launch the VirtualBox GUI program and terminate any virtual machines that were left running.


Remove all machines

Before removing any machines, stop them all. Then, using the same id, remove them.

$ vagrant destroy --force a4a9e26
...

$ vagrant destroy --force d12fa1b
...

If a machine cannot be removed, it may not exist at all. Running vagrant global-status —prune will clear the global machine cache.

Using the directory in the last column, delete all machine files in .vagrant directory.

$ rm -rf /home/user/my-wp-site1/.vagrant

$ rm -rf /home/user/my-wp-site2/.vagrant

Finally, launch the VirtualBox GUI program and delete any remaining virtual machines.


Remove all plugins

Before removing any plugins, ensure that all machines have been removed.

Run the following to remove all plugins:

  • vagrant plugin expunge --force --global-only
  • vagrant plugin expunge --force --local-only

Remove old boxes

Before removing any old boxes, ensure that all machines that may be running the old version are removed.

Running vagrant box prune should result in only one wordpress and wordpress-beta version being listed.

$ vagrant box prune
The following boxes will be kept...
seravo/wordpress      (virtualbox, 20201205.0.0)
seravo/wordpress-beta (virtualbox, 20220404.0.0)

Remove host entries

This workflow is only applicable to Linux and macOS.

Make certain that all machines have been removed. Open /etc/hosts with a text editor. Remove any lines that contain wordpress.local or the name of your website.

When you start the machines, the correct lines will regenerate.

Information gathering

Find VirtualBox version

Launch the VirtualBox GUI program and open About VirtualBox under the Help menu. The version number should be in x.x.xx format (e.g. 6.1.34).


Find Vagrant version

Run vagrant version.

$ vagrant version
Installed Version: 2.2.19
Latest Version: 2.2.19