Laravel 운영 개요¶
운영 서버(Production Server) 에서 Laravel 애플리케이션을 안정적으로 실행하기 위한 운영 기준과 구조적 원칙을 정의함. 설치 명령 나열이 아니라, "왜 이렇게 운영해야 하는가" 를 설명하는 기준 문서임.
1. Laravel의 운영상 위치¶
운영 환경에서 Laravel은 다음 역할을 가짐.
- 외부 트래픽의 직접 진입점이 아님
- TLS/HTTPS, 접근 제어, 속도 제한의 주체가 아님
- 비즈니스 로직, 도메인 처리, 데이터 흐름 제어에 집중함
즉,
운영 환경에서 Laravel은 항상 Nginx 뒤에서 PHP-FPM으로 실행되는 애플리케이션 계층임
[ Client ]
↓
[ Nginx ] ← TLS / Routing / Security / Rate Limit
↓ fastcgi
[ PHP-FPM ]
↓
[ Laravel ]
2. 개발 환경과 운영 환경은 완전히 다름¶
개발 환경¶
php artisan serve사용 가능- 디버그 중심 (
APP_DEBUG=true가능) - 단일 개발자 생산성 우선
운영 환경¶
nginx + php-fpm고정APP_ENV=production,APP_DEBUG=false고정- 재부팅 후 자동 복구 가능한 구조 필수
운영 환경 기준으로만 작성됨.
3. 운영 서버에서 artisan serve를 쓰지 않는 이유¶
운영 서버에서 php artisan serve는 허용하지 않음.
이유¶
- 개발용 내장 서버로 성능/안정성 기준 미충족
- 프로세스 생명주기 관리(systemd, supervisor)와 분리됨
- 재부팅 복구 및 장애 대응 일관성 확보 불가
- 운영 로그/권한/SELinux 정책과 충돌하기 쉬움
따라서 운영 환경에서는:
Laravel HTTP 요청은 반드시 Nginx + PHP-FPM으로 처리함
4. 실행 경로 분리 원칙¶
운영 서버에서는 개발/빌드 경로와 실행 경로를 분리함.
권장 구조¶
/home/[User]/[ProjectName] → 개발 / 빌드 / 검증
/var/www/[ProjectName]/current → 운영 실행 경로
/var/www/[ProjectName]/releases/... → 릴리즈 보관 (선택)
이유¶
- 운영 코드 오염 방지
- 배포/롤백 단순화
- 권한 및 SELinux 충돌 최소화
5. Laravel과 주변 컴포넌트의 책임 분리¶
| 항목 | Nginx | PHP-FPM/Laravel |
|---|---|---|
| TLS / HTTPS | ⭕ | ❌ |
| 접근 제어 / 속도 제한 | ⭕ | ❌ |
| 정적 파일 제공 | ⭕ | ❌ |
| 비즈니스 로직 | ❌ | ⭕ |
| DB / Cache 접근 | ❌ | ⭕ |
Laravel은 네트워크 게이트웨이가 아니라 애플리케이션 런타임임.
6. 운영 안정성을 결정하는 핵심 구성¶
Laravel 운영은 단일 프로세스가 아니라 아래 조합으로 성립함.
- Nginx (외부 진입점)
- PHP-FPM (요청 실행 런타임)
- Queue Worker (Supervisor 또는 systemd)
- Scheduler (
cron + php artisan schedule:run) - DB / Cache / Session 저장소
위 구성 중 하나라도 누락되면 장애 시 복구가 불완전해짐.
7. 보안 및 네트워크 기본 원칙¶
- PHP-FPM 포트/소켓은 외부 노출하지 않음
- SELinux는 Enforcing 유지
setenforce 0,SELINUX=disabled는 장애 대응 수단으로 사용하지 않음- 임시
chcon이 아니라semanage fcontext + restorecon으로 영구 정책 반영 - 전체 디렉터리에
httpd_sys_rw_content_t를 부여하지 않음
8. 정리¶
- Laravel 운영 품질은 프레임워크 기능보다 운영 구조에서 결정됨
- 핵심은 경로, 권한, SELinux, 자동복구, 로그 추적 가능성임
Laravel 운영의 기준선이며, 이후 Laravel 문서 전체의 전제가 됨.