Laravel의 전반적인 디렉토리 구조 및 파일의 역할을 이해함으로써, 역할에 맞는 사용법을 익히도록 한다.
※ 이 내용은 Laravel8을 기준으로 서술한다.
root
📁 directory
├─app
├─bootstrap
├─config
├─database
├─public
├─resources
├─routes
├─storage
├─tests
└─vendor
🗒️ file
├─.env
├─.gitattributes
├─.gitignore
├─artisan
├─composer.json
├─composer.lock
├─package.json
├─phpunit.xml
├─README.md
└─server.php
app
핵심부분을 배치, 애플리케이션 전체 클래스를 해당 디렉토리에서 관리
bootstrap
초기기동을 위해 필요한 기본 기능들을 세팅 및 캐시파일을 저장/관리
config
설정파일을 관리
database
데이터베이스 관련 기능 (마이그레이션, 시딩 등)을 관리
public
애플리케이션에 송신되는 모든 request의 시작점(Entry Point)을 담당하는 index.php가 있는 곳
resources
view, css, javascript등의 프론트 앤드 관련 파일 및 언어(lang) 파일을 관리
routes
애플리케이션 내의 모든 라우트정의를 명시
storage
파일을 업로드 하거나 다운로드 받을 때 사용하는 공간
tests
테스트 자동화 관련 파일 관리
vendor
composer로 설치된 라이브러리를 관리
.env
환경설정파일, 환경별 DB, 메일 등의 연결값을 설정.
.gitattributes
특정 파일에 대해 git의 동작을 제어하기위해 사용.
ex) 개행코드의 자동변환, 바이너리파일 취급 등
.gitignore
git에 커밋을 할 때, 제외할 리스트를 적는 파일
artisan
PHP를 콘솔로 실행시킬 수 있게 해주는 라라벨 전용 CLI
composer.json
composer로 설치된 라이브러리의 의존성을 관리
composer.lock
composer로 설치된 라이브러리의 상세 버전을 관리
package.json
node module 설치시 필요한 파일
phpunit.xml
단위 테스트 설정용 파일
README.md
해당 프로젝트의 설명서
server.php
로컬 웹 서버 구동을 위한 스크립트
app
├─Console
│ └─Kernel.php
├─Exceptions
│ └─Handler.php
├─Http
│ └─Controllers
│ └─Middleware
│ └─Kernel.php
├─Models
└─Providers
Console
커스텀 artison명령어를 작성할 경우, 이곳에서 make:command 명령어로 클래스 생성 및 관리
Exceptions
에러 발생시, 출력 위치 및 출력 방법을 설정 가능. default는 로그
Http
http요청이 있을 때 수행되는 클래스를 관리
└─Controllers
MVC패턴의 컨트롤러를 관리
└─Middleware
미들웨어를 관리
└─Kernel.php
http요청에 대한 실행 미들웨어를 설정하는 파일
Models
MVC패턴의 모델을 관리
Providers
서비스 프로바이더를 관리
bootstrap
├─cache
│ └─service.php
│ └─packages.php
└─app.php
cache
서버 첫 기동 및 각 파일별 정보의 변동이 있을때, 설정정보를 캐싱하여 저장 및 관리
└─service.php
서비스 컨테이너에 등록된 서비스들의 정보를 캐싱하는 공간
└─packages.php
패키지 관련 정보(Composer)를 캐싱하는 공간
app.php
Laravel을 구동하기 위한 최소한의 기능에 대한 클래스의 인스턴스를 생성하는 역할
config
├─app.php
├─auth.php
├─broadcasting.php
├─cache.php
├─cors.php
├─database.php
├─filesystems.php
├─hashing.php
├─logging.php
├─mail.php
├─queue.php
├─sanctum.php
├─services.php
├─session.php
└─view.php
app.php
애플리케이션의 기본 설정을 정의 ex) 애플리이름, 환경 설정, URL 등
auth.php
사용자 인증 설정을 정의 ex) 인증 드라이버, 패스워드 재설정 옵션 등
broadcasting.php
브로드캐스팅 설정을 정의 ex) 브로드캐스팅 드라이버, 인증 토큰 등
cache.php
캐시 설정을 정의 ex) 캐시 드라이버, 캐시 키 저장소 등
cors.php
CORS 설정
database.php
데이터베이스 연결 설정을 정의
filesystems.php
파일 시스템 설정을 정의 ex) 파일 시스템 드라이버
hashing.php
해시 설정을 정의 ex) 해시 알고리즘 설정
logging.php
로그 설정을 정의 ex) 로그 저장 위치, 로그 레벨
mail.php
이메일 전송 설정을 정의 ex) 메일 드라이버, SMTP 서버 설정
queue.php
큐(Queue) 서비스 설정을 정의 ex) 여러 큐 연결, 각 연결에 대한 드라이버 연결
sanctum.php
API인증을 위한 Laravel Sanctum의 설정을 정의
services.php
외부 서비스와의 연결 설정을 정의 ex) OAuth 인증서비스 연결 정보
session.php
세션 설정을 정의 ex) 세션 드라이버, 세션 유효기간, 세션 쿠키 명
view.php
뷰(템플릿) 설정을 정의 ex) 기본 레이아웃, 뷰 캐싱 설정
※ 캐싱된 내용은 /storage/framework/views에 저장
database
├─factories
├─migrations
└─seeders
factories
테스트 데이터를 생성하기 위한 모델 팩토리 파일들이 저장
migrations
데이터베이스 마이그레이션 파일들이 저장
seeders
초기 데이터 삽입 및 기존 데이터 갱신을 하는 시드 파일들이 저장
routes
├─web.php
├─api.php
├─channels.php
└─console.php
web.php
웹 애플리케이션의 라우트를 정의
주로 HTTP요청을 처리 (컨트롤러 호출 및 뷰를 반환)
api.php
API의 라우트를 정의
외부 서비스로부터 API 요청을 처리, JSON응답을 반환하는데 사용
channels.php
이벤트 브로드캐스트 체널을 정의
console.php
Artisan 명령어를 정의
※ make:command로 작성한 클래스는 해당 파일에 등록해야 사용가능
결론
라라벨의 주요 디렉토리의 구조와 역할을 알 수 있었다.