SrvYard
Sign in Start free
solutions / laravel

Laravel on a server you own, deployed the way you already would.

A release folder per deploy, a shared .env and storage, your own deploy script, and switches for the scheduler, Horizon, Reverb and Inertia SSR. It reads composer.lock to know which ones your app can use.

deploy script (an example, edit it freely)
# runs inside the new release folder
composer install --no-dev --optimize-autoloader
npm ci && npm run build
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cache

01What a Laravel site gets

Laravel card on the site overview
PieceWhat SrvYard does
Releases Each deploy builds in releases/<deployment id>; .env and storage are shared between them; current is switched when the script succeeds.
Scheduler One job that runs php artisan schedule:run every minute as the site user, with the site’s PHP version. No package needed.
Queues Plain queue workers as Supervisor daemons, or Horizon (laravel/horizon in composer.lock): a process for php artisan horizon and horizon:terminate added to the deploy script so it restarts on new code.
Reverb and Inertia SSR Each is a switch that creates the process and the Nginx proxy. Enabled only when the package is in composer.lock.
Octane Supported on sites that deploy in place. It keeps the app in memory and cannot follow a zero-downtime switch.
Maintenance mode Shows a 503 page (artisan down), with an optional bypass secret.
Environment Created from .env.example; a Normal and a Developer editor. Only roles with the environment permission can read or write it.
PHP PHP 8.1 to 8.5 side by side; each site picks one. Composer and npm credentials are kept per site.

02From repository to live site

about ten minutes
  1. Connect the repository

    GitHub, GitLab or Bitbucket by OAuth or token, with owner, repository and branch pickers. Or any Git URL.

  2. Create the site

    Type Laravel, a domain or a free srvy.sh address, zero downtime on or off. This choice cannot be changed later.

  3. Write the script

    The deploy script is yours: Composer, the build, migrations, caches. Test it with Deploy now and read the log.

  4. Switch on what you use

    Scheduler, Horizon or workers, Reverb, SSR. Then turn on push to deploy.

03Not covered

so you can rule it out early
  • Laravel Sail and Docker-based setups: SrvYard does not deploy or manage containers.
  • Octane together with zero-downtime releases.
  • Rolling back database migrations. A rollback repoints the release folder only.

Laravel Cloud, Vapor and serverless deployments are different products. SrvYard runs your app on an Ubuntu server with Nginx and PHP-FPM, which you pay your own provider for.

Need a hand deciding? Describe your app.

04Read more

05Laravel questions

answers from the docs
How do I keep a queue worker and the scheduler running?

Add the worker on the site's Processes tab, where Supervisor keeps it alive, and switch the scheduler on from the Laravel card. Deploy the site once first, and set QUEUE_CONNECTION to something other than sync. See Run queue workers and the Laravel scheduler.

Why are my queued jobs not running?

The worker is missing or stopped, listens to a different connection or queue than your app uses, runs old code, or QUEUE_CONNECTION is sync. Check the worker on Processes, then restart it. See Fix queued jobs that are not being processed.

Does a rollback undo database changes?

No. A rollback only points the site at an earlier release. Migrations that already ran stay, and a cache or queue payload from the newer code can still cause trouble, so check those too. A rollback needs a zero-downtime site. See Deploy without downtime and roll back to an earlier release.

Can I deploy automatically when I push?

Yes, with push to deploy, for repositories on a connected GitHub, GitLab or Bitbucket account. SrvYard registers a signed webhook for you. A Custom Git URL has no connection to create one, so use the deploy hook instead. See Deploy automatically on every push.

Who can see and edit a site's .env file?

Owners and admins, or a custom role with the environment permission. Everyone else sees a Restricted notice. SrvYard keeps an encrypted copy and writes it to the server for you. See Edit environment variables.

I saved an environment variable, but the app still uses the old value. Why?

The configuration is probably cached, or a queue worker is running with the old environment. Save again with Run php artisan config:cache and Restart queue workers ticked. See Edit environment variables.

Deploy a Laravel app to a server you control.

Free: 1 server, 3 sites, 100 deploys a month. Read the docs first if you prefer.