Local WordPress development with Laravel Valet (+ a GUI)
Tags: wordpress, valet, laravel, localdev
Published: 2022-07-28 20:26:00

[Laravel Valet](https://github.com/laravel/valet) is a development environment for macOS and configures your Mac to always run [Nginx](https://www.nginx.com/) in the background when your machine starts, and then, using [DnsMasq](https://en.wikipedia.org/wiki/Dnsmasq), proxies all requests on the `*.test` domain to point to sites installed on your local machine.

It is a blazing fast development environment that uses roughly 7 MB of RAM, it’s very minimalistic and without a GUI (although we will see at the of the article how to use a GUI).

>“Valet is a Laravel development environment for Mac minimalists. No Vagrant, No Apache, No Nginx, No `/etc/hosts` file. You can even share your sites publicly using local tunnels. Yeah, we like it too.“

**Prerequisites**

So in order for this to work we need some tools installed:

- Homebrew
- Composer
- WP-CLI (optional)
- MacOS (of course)

**Installing HomeBrew**

[Homebrew](https://brew.sh/) is a free and open-source software package management system that simplifies the installation of software on Apple’s operating system, macOS, as well as Linux. The name is intended to suggest the idea of building software on the Mac depending on the user’s taste.

```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```

**Installing Valet**

To get started, you first need to ensure that Homebrew is up to date using the update command:

```
brew update
```

Next, you should use Homebrew to install PHP:

```
brew install php
```

After installing PHP, you are ready to install the Composer package manager. In addition, you should make sure the `~/.composer/vendor/bin` directory is in your system’s “PATH”. After Composer has been installed, you may install Laravel Valet as a global Composer package:

```
composer global require laravel/valet
```

Finally, you may execute Valet’s install command. This will configure and install Valet and DnsMasq. In addition, the daemons Valet depends on will be configured to launch when your system starts:

```
valet install
```

Once Valet is installed, try pinging any `*.test` domain on your terminal using a command such as ping `valet.test`.

From now on, Valet will automatically start its required services each time your machine boots.
How to serve websites

The `park` command registers a directory on your machine that contains your applications. Once the directory has been “parked” with Valet, all of the directories within that directory will be accessible in your web browser at `http://<directory-name>.test`:

```
cd ~/Sitesvalet park
```

That’s all there is to it. Now, any application you create within your “parked” directory will automatically be served using the `http://<directory-name>.test` convention. So, if your parked directory contains a directory named “laravel”, the application within that directory will be accessible at `http://laravel.test`.

So right now, you can download a WordPress install using [WP-CLI](https://wp-cli.org/) (or download a copy from the download page) and navigate to `http://<directory-name>.test` you will see the 5-min WordPress install.

But there is one more thing you need to run your local website…

**Databases**

Laravel Valet doesn’t come with a database service but you can easily run a mysql service with two ways:

**via Homebrew**

You can install MySQL easily using Homebrew by running:

```
brew install mysql
```

And start the MySQL server by running:

```
brew services start mysql
```

You can connect to your database with a GUI tool at `127.0.0.1` using the `root` username and an empty string for the password.

From now on your Mac will re-start MySQL at reboot. In case you want to stop this behavior (and also stop MySQL) you can run

```
brew services stop mysql
```

**With DBngin**

[DBngin](https://dbngin.com/) provides a free, all-in-one database management tool that includes MySQL, PostgreSQL, and Redis. After DBngin has been installed, you can connect to your database at `127.0.0.1` using the `root` username and an empty string for the password.

**PHP Versions**

Valet allows you to switch PHP versions using the valet use php@version command. Valet will install the specified PHP version via Homebrew if it is not already installed:

```
valet use php@7.2
```

By default, Valet uses your global PHP installation to serve your sites. However, if you need to support multiple PHP versions across various sites, you may use the `isolate` command to specify which PHP version a particular site should use. The `isolate` command configures Valet to use the specified PHP version for the site located in your current working directory:

```
cd ~/Sites/example-sitevalet isolate php@8.0
```

To revert a site back to Valet’s globally installed PHP version, you may invoke the `unisolate` command from the site’s root directory:

```
valet unisolate
```

**Securing Sites With TLS**

By default, Valet serves sites over HTTP. However, if you would like to serve a site over encrypted TLS using HTTP/2, you may use the `secure` command. For example, if your site is being served by Valet on the `laravel.test` domain, you should run the following command to secure it:

```
valet secure laravel
```

To “unsecure” a site and revert back to serving its traffic over plain HTTP, use the unsecure command. Like the secure command, this command accepts the hostname that you wish to unsecure:

```
valet unsecure laravel
```

**Wait, I’m not a terminal type of user, is there a GUI?**

By default, Valet doesn’t come with a GUI and all of the commands are given via a terminal, but I get, not everyone is comfortable with terminal commands or it’s just some times you need to do something fast.

[Nico Verbruggen](https://twitter.com/nicoverbruggen) has created an amazing lightweight macOS menubar app called [PHP Monitor](https://github.com/nicoverbruggen/phpmon) to effortlessly manage PHP and Valet services. It provides a GUI to manage PHP versions, locate config files, stop & start Valet services and shows helpful information about your setup.

You can run the following commands to install PHP Monitor:

**Warning!**

You have to install Valet first for PHP Monitor to work.

```
brew tap nicoverbruggen/homebrew-cask
brew install --cask phpmon
```

After that you can find the app at your MacOS Launchpad.

If you get a message says that Brew has not not been added to sudoers.d, run the following command:

```
sudo valet trust
```

And voilà:


![PHP Monitor](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/27g5g9dwbpfj6u6ansvo.jpg)

If you want PHP Monitor to start up when you boot your Mac, you can do it by dragging PHP Monitor.app into the **Login Items** section in **System Preferences > Users & Groups** for your account.

So this is it! You can now start developing locally your next WordPress (or Lavarel) project. If you have any thoughts I will be glad to hear them in the comments bellow, or mention me at my Twitter handle @kosvrouvas.