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.
# 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| Piece | What 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 minutesConnect the repository
GitHub, GitLab or Bitbucket by OAuth or token, with owner, repository and branch pickers. Or any Git URL.
Create the site
Type Laravel, a domain or a free
srvy.shaddress, zero downtime on or off. This choice cannot be changed later.Write the script
The deploy script is yours: Composer, the build, migrations, caches. Test it with Deploy now and read the log.
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 docsHow 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.