콘텐츠로 이동

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 문서 전체의 전제가 됨.