All Guides
Frameworks12 min read

Deploy PHP / Laravel

Deploy PHP and Laravel applications with Composer, Octane, queue workers, and scheduler configuration.

1.Composer Dependencies

Manage PHP dependencies with Composer.

  1. Run <code>composer install --no-dev --optimize-autoloader</code> in build
  2. Commit <code>composer.lock</code> for reproducible builds
  3. Use <code>composer require</code> for new packages
  4. Configure <code>autoload</code> in <code>composer.json</code> (PSR-4)
  5. Separate dev dependencies in <code>require-dev</code>

2.Laravel Production Setup

Configure Laravel for production deployment.

  1. Run <code>php artisan config:cache</code>, <code>route:cache</code>, <code>view:cache</code>
  2. Set <code>APP_ENV=production</code> and <code>APP_DEBUG=false</code>
  3. Generate <code>APP_KEY</code> via <code>php artisan key:generate</code>
  4. Configure database via <code>DATABASE_URL</code> in <code>.env</code>
  5. Set <code>SESSION_DRIVER=database</code> or <code>redis</code>
  6. Enable <code>QUEUE_CONNECTION=database</code> for queues
# .env.production
APP_ENV=production
APP_DEBUG=false
APP_KEY=base64:...
APP_URL=https://yourdomain.com
LOG_CHANNEL=stack
DB_CONNECTION=pgsql
DATABASE_URL=${DATABASE_URL}
SESSION_DRIVER=database
QUEUE_CONNECTION=database
CACHE_DRIVER=redis
REDIS_CLIENT=phpredis

3.Queue Workers and Scheduler

Run background jobs and scheduled tasks.

  1. Queue worker: <code>php artisan queue:work --sleep=3 --tries=3 --timeout=90</code>
  2. Run as systemd service or via Oxaploy process manager
  3. Scheduler: <code>php artisan schedule:run</code> runs every minute
  4. Add to crontab: <code>* * * * * php /app/artisan schedule:run >> /dev/null 2>&1</code>
  5. Monitor failed jobs: <code>php artisan queue:failed</code>

4.Octane for High Performance

Use Laravel Octane with Swoole or RoadRunner for maximum throughput.

  1. Install: <code>composer require laravel/octane</code>
  2. Install Swoole: <code>pecl install swoole</code> or use Docker image with Swoole
  3. Run: <code>php artisan octane:start --server=swoole --host=0.0.0.0 --port=$PORT</code>
  4. Configure workers: <code>--workers=auto</code> (CPU cores)
  5. Enable hot reload in dev: <code>--watch</code>