Using the newly released spatie/laravel-remote package, you can quickly execute Artisan commands on a remote server.
Here's an example that will clear the cache on the remote server.
php artisan remote cache:clear
In this blog post, I'd like to tell you all about it!
Using laravel-remote #
You can install the package in any Laravel app using
composer require spatie/laravel-remote
No surprises there!
The package contains a
remote command that will connect to your remote server and execute a given artisan command there.
By setting these environment variables in your .env file, the package knows where to connect to. Here's an example for a site hosted on Forge.
#in your .env file REMOTE_HOST=example.com REMOTE_USER=forge REMOTE_PATH=/home/forge/example.com
With this in place, you can clear the cache on your server with:
php artisan remote cache:lear
Of course, you can use an Artisan command you'd like.
If you want to execute a bash command, use the
Here we will get a list of files on the server.
php artisan remote ls --raw
You can define hosts in the config file. By default, the
default host is used. To execute a command on another host, use the
php artisan remote cache:clear --host=my-other-host
Shorten the command using bash aliases #
For many years I have been aliasing "php artisan" to "a". This allows me to execute any artisan command very quickly.
It's a small improvement, but I'm sure that the alias has saved me quite some time summed up over all the years.
I've now added another alias, "ar," which maps to "php artisan remote".
It's pretty cool with how little efforts this allows me to execute commands on a remote server.
How it works under the hood #
remote, the package will connect to your server via SSH, cd to your app's directory, and execute the command.
In this streaming session, you can see me build up the package from scratch.
In closing #
I think spatie/laravel-remote can save you a lot of time if you regularly want to execute commands on a remote server.
Be sure to take a look at this list of packages our team has created previously.