Hosting Options

Deployment Targets and Managed Platforms

Laravel Forge 2,157 provisions and manages servers you rent (a Laravel 2,157 VPS, DigitalOcean 553 , AWS 24 or Hetzner 1,954 ) with Nginx 75 , PHP, MySQL 524 or Postgres 1,289 and Redis 2,763 , includes single-server zero-downtime deploys, and costs a flat $12, $19 or $39 a month. Laravel Cloud 2,157 manages everything but your code, on AWS EC2 24 with scale-to-zero compute, MySQL, Postgres and Valkey 251,210 , for $5, $20 or $200 a month plus usage. Vapor 2,157 runs Laravel on AWS Lambda 24 . Prices are from 23 September 2026. None could be tried here, because each needs an account.

On any route, let CI test each commit. This GitHub Actions 29 workflow tests on PHP 8.5 against MySQL 9.7. It was not run, because it needs a GitHub 29 repository:

.github/workflows/tests.ymlYAML
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    services:
      mysql:
        image: mysql:9.7
        env: { MYSQL_ROOT_PASSWORD: secret, MYSQL_DATABASE: shop_test }
        ports: ['3306:3306']
        options: --health-cmd="mysqladmin ping" --health-interval=5s --health-retries=10
    steps:
      - uses: actions/checkout@v7
      - uses: shivammathur/setup-php@v2
        with: { php-version: '8.5', extensions: pdo_mysql, coverage: none }
      - run: composer install --no-interaction && cp .env.example .env && php artisan key:generate
      - run: php artisan test --compact
        env: { DB_CONNECTION: mysql, DB_HOST: 127.0.0.1, DB_DATABASE: shop_test,
               DB_USERNAME: root, DB_PASSWORD: secret }

The env: values only take effect once the two SQLite 4,756 lines are gone from phpunit.xml (Database Testing). A deploy job can then SSH in and run deploy.sh, or call a Forge or Cloud deploy hook.