메인 콘텐츠로 건너뛰기

소개

Laravel의 기본 애플리케이션 구조는 대규모·소규모 어느 애플리케이션에도 적합한 출발점을 제공합니다. 다만 애플리케이션을 어떻게 구성할지는 자유입니다. Laravel은 클래스의 배치 장소에 거의 제한을 두지 않습니다. Composer가 클래스를 오토로드할 수만 있으면 문제없습니다.

루트 디렉터리

새 Laravel 프로젝트를 생성하면 다음과 같은 디렉터리 구조가 생성됩니다.
example-app/
├── app/
├── bootstrap/
├── config/
├── database/
├── public/
├── resources/
├── routes/
├── storage/
├── tests/
├── vendor/
├── .env
├── artisan
└── composer.json

app/ 디렉터리

애플리케이션의 핵심 코드를 저장하는 디렉터리입니다. 컨트롤러·모델·미들웨어 등 애플리케이션의 거의 모든 클래스가 여기에 놓입니다. 기본적으로 Http·Models·Providers 서브디렉터리가 포함되어 있습니다. Artisan 명령으로 클래스를 생성하면 다른 서브디렉터리도 자동으로 생성됩니다.

bootstrap/ 디렉터리

프레임워크를 부팅하는 app.php 파일을 포함합니다. 또한 라우트 캐시나 서비스 캐시 등의 성능 최적화 파일을 저장하는 cache/ 디렉터리도 포함됩니다.

config/ 디렉터리

애플리케이션의 모든 설정 파일을 저장합니다. 이 파일들을 읽고 사용 가능한 옵션을 파악해 두는 것을 권장합니다.

database/ 디렉터리

데이터베이스 마이그레이션·모델 팩토리·시더를 저장합니다. SQLite 데이터베이스 파일도 여기에 배치할 수 있습니다.

public/ 디렉터리

애플리케이션에 대한 모든 요청의 진입점인 index.php를 포함합니다. 또한 이미지·JavaScript·CSS 같은 에셋도 여기에 저장됩니다.
웹 서버의 도큐먼트 루트는 Laravel 프로젝트의 public/ 디렉터리로 설정해 주세요. 프로젝트 루트나 서브디렉터리를 직접 공개하려고 하면 기밀 파일이 노출될 위험이 있습니다.

resources/ 디렉터리

와 컴파일 전의 CSS나 JavaScript 같은 원시 에셋을 저장합니다.

routes/ 디렉터리

애플리케이션의 모든 라우트 정의를 저장합니다. 기본적으로 web.phpconsole.php 두 개의 라우트 파일이 포함됩니다.
파일용도
web.php브라우저용 라우트. 세션·CSRF 보호·쿠키 암호화를 제공하는 web 미들웨어 그룹이 적용됩니다.
console.phpArtisan 명령을 클로저로 정의하는 파일입니다.
api.php상태 비저장 API 라우트. install:api 명령으로 추가합니다.
channels.php이벤트 브로드캐스트 채널을 등록하는 파일입니다.

storage/ 디렉터리

로그·컴파일된 Blade 템플릿·파일 기반 세션·파일 캐시 등 프레임워크가 생성한 파일을 저장합니다. app/·framework/·logs/ 세 개의 서브디렉터리로 나뉘어 있습니다.

tests/ 디렉터리

자동화된 테스트를 저장합니다. Pest 또는 PHPUnit에 의한 유닛 테스트와 기능 테스트 샘플이 처음부터 포함되어 있습니다.

vendor/ 디렉터리

Composer의 의존 관계를 저장합니다. 이 디렉터리는 소스 컨트롤에 커밋하지 마세요.

app/ 디렉터리 상세

app 디렉터리의 많은 클래스는 Artisan 명령으로 생성할 수 있습니다. 사용 가능한 명령을 확인하려면 다음을 실행해 주세요.
php artisan list make
컨트롤러·미들웨어·폼 리퀘스트를 저장합니다. 애플리케이션의 요청 처리 로직 대부분이 여기에 놓입니다.
Eloquent 모델 클래스를 모두 저장합니다. 각 데이터베이스 테이블에 대응하는 “모델”이 존재하며, 데이터 조회나 삽입에 사용됩니다.
애플리케이션의 모든 서비스 프로바이더를 저장합니다. 서비스 프로바이더는 서비스를 컨테이너에 바인딩하고 이벤트를 등록하는 등 애플리케이션을 부팅하기 위한 처리를 수행합니다.
커스텀 Artisan 명령을 모두 저장합니다. make:command 명령으로 생성할 수 있습니다.
애플리케이션의 커스텀 예외를 모두 저장합니다. make:exception 명령으로 생성할 수 있습니다.

중요한 파일

.env 파일

환경별로 다른 설정 값(데이터베이스 접속 정보·API 키 등)을 관리합니다. config/ 내의 설정 파일에서 env() 헬퍼를 통해 참조됩니다.
APP_NAME=Laravel
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost

DB_CONNECTION=sqlite

artisan 파일

Artisan 커맨드라인 인터페이스의 진입점입니다. php artisan <명령 이름> 형식으로 실행합니다.

다음 단계

라우팅

라우트를 정의하는 방법과 URL과 애플리케이션 로직을 연결하는 방법을 배웁니다.
마지막 수정일 2026년 7월 13일