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.
- Run <code>composer install --no-dev --optimize-autoloader</code> in build
- Commit <code>composer.lock</code> for reproducible builds
- Use <code>composer require</code> for new packages
- Configure <code>autoload</code> in <code>composer.json</code> (PSR-4)
- Separate dev dependencies in <code>require-dev</code>
2.Laravel Production Setup
Configure Laravel for production deployment.
- Run <code>php artisan config:cache</code>, <code>route:cache</code>, <code>view:cache</code>
- Set <code>APP_ENV=production</code> and <code>APP_DEBUG=false</code>
- Generate <code>APP_KEY</code> via <code>php artisan key:generate</code>
- Configure database via <code>DATABASE_URL</code> in <code>.env</code>
- Set <code>SESSION_DRIVER=database</code> or <code>redis</code>
- 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=phpredis3.Queue Workers and Scheduler
Run background jobs and scheduled tasks.
- Queue worker: <code>php artisan queue:work --sleep=3 --tries=3 --timeout=90</code>
- Run as systemd service or via Oxaploy process manager
- Scheduler: <code>php artisan schedule:run</code> runs every minute
- Add to crontab: <code>* * * * * php /app/artisan schedule:run >> /dev/null 2>&1</code>
- Monitor failed jobs: <code>php artisan queue:failed</code>
4.Octane for High Performance
Use Laravel Octane with Swoole or RoadRunner for maximum throughput.
- Install: <code>composer require laravel/octane</code>
- Install Swoole: <code>pecl install swoole</code> or use Docker image with Swoole
- Run: <code>php artisan octane:start --server=swoole --host=0.0.0.0 --port=$PORT</code>
- Configure workers: <code>--workers=auto</code> (CPU cores)
- Enable hot reload in dev: <code>--watch</code>