[Laravel 기초] 2. 라라벨 설치와 디렉토리 구조

앞선 포스팅에 이어 Laravel 를 본격적으로 시작하기 위해 설치에 대한 포스팅을 다뤄 보려고 합니다. 라라벨 Documents 가이드를 살펴보면 세 가지 설치 방법으로 구분할 수 있습니다. 어느 환경에서나 가상 머신을 사용하여 로컬 환경을 구성하는 Homestead, mac OS 로컬에 환경에 최적화된 Valet, Composer 를 이용한 직접 설치로 구분할 수 있습니다. 이 포스팅에서는 Laravel 5.8 버전을 설치하며 가장 쉽게 설치 가능한 Composer를 이용하여 설치를 진행하겠습니다.

1. Install

설치 전 준비 사항

  • PHP >= 7.1.3
  • BCMath PHP Extension
  • Ctype PHP Extension
  • JSON PHP Extension
  • Mbstring PHP Extension
  • OpenSSL PHP Extension
  • PDO PHP Extension
  • Tokenizer PHP Extension
  • XML PHP Extension

라라벨은 PHP 버전 7.1 이상이 필요하며 PHP 의존성 관리 툴인 Composer를 사용하여 설치합니다. 아래 커맨드 명령어를 통해 blog 디렉토리 아래 Laravel proejct를 설치합니다. (Composer, php는 path 설정이 되어 있어야합니다.)

composer create-project --prefer-dist laravel/laravel blog

설치가 완료되면 blog 디렉토리로 이동하고 artisan를 통해 서버를 열어줍시다.

cd blog
php artisan serve 

브라우저를 열고 localhost:8000 를 입력하면 다음 화면을 볼 수 있습니다. 화면이 열리지 않는 경우 php artisan serve –port [포트번호] 를 통해 다른 포트로 서버를 열 수 있습니다. 이렇게 해서 두 줄의 커맨드로 라라벨 프로젝트가 설치되었습니다.

라라벨 설치 끝! (url : localhost:8000)

2. Directory Structure

전체 디렉토리 구조

라라벨 전체적인 디렉토리 구조에 대해 살펴보겠습니다. 디렉토리 구조를 파악한 뒤 플로우를 파악하는 것이 프레임 워크를 빠르게 이해할 수 있습니다. 디렉토리 구조는 한번에 익히기 힘듭니다. 어플리케이션의 세부 사항을 공부하면서 그때 그때 참조하면서 익히면 되겠습니다.

라라벨 설치 시 디렉토리 구조
  • app : 어플리케이션에 관련된 핵심 코드들이 존재하는 디렉토리입니다. 하위 디렉토리로는 컨트롤러, 미들웨어, 예외, 스케쥴링 관련 디렉토리들이 위치하고 있습니다.
  • bootstrap : 프레임 워크 초기화, path & 환경 세팅과 같은 역할(Framework Boot)을 하는 디렉토리 (부끄럽지만 처음봤을때는 CSS Framework 부트스트랩과 연관 있는 줄 알았습니다.)
  • config: 어플리케이션 전체에 적용되는 설정 디렉토리
  • database: 마이그레이션, 모델 팩토리, 시딩등 DB 관련 디렉토리
  • public: 어플리케이션 시작점인 index.php와 assets 파일(이미지, js, css)을 저장하고 있는 디렉토리
  • resources: 컴파일 되긴 전의 Vue파일, LESS, SASS, JS 같은 파일 저장소
  • routes: 라우팅 관련 디렉토리
  • storages:  블레이트 템플릿, 파일 기반의 세션, 파일 캐시 그리고 기타 프레임워크에서 생성된 파일들을 저장하는 디렉토리
  • tests : 테스트 관련 디렉토리

어느 정도 의미로 유추되는 디렉토리들이 많지만 실제 코드를 볼 수 없으니 답답하기만 합니다. 하지만 벌써 완벽하게 디렉토리 구조를 파악할 필요는 없습니다. 앞으로 어플리케이션을 만들면서 자연스럽게 들어오게 될테니까요.

App 디렉토리 구조

app 디렉토리에 대해서만 언급하고 가겠습니다. app에는 라라벨 핵심 코드들이 있는 디렉토리라고 설명했듯이 대부분의 작업을 담당한다고 보시면 될 거 같습니다. 아래 그림은 app 디렉토리 구조입니다. 설치하신 초기 상태랑 디렉토리 개수가 다를텐데요. 라라벨을 사용하면서 이벤트, 브로드캐스트, 정책 등 필요할 때 php artisan make 를 사용하여 파일을 생성하게 될 경우 자동으로 추가될 디렉토리들입니다. 후에 다룰 포스팅에서 참조하려고 미리 만들어 보았습니다.

라라벨에서 제공하는 app 디렉토리 하위 파일들
  • Broadcating : 브로드캐스트 채널과 관련된 파일이 존재하는 디렉토리입니다.
  • Console : Artisan 명령어들을 가지고 있으며 명령어들의 스케쥴링 파일도 포함되어 있습니다.
  • Events: 이벤트와 관련된 디렉토리
  • Exceptions: 각종 예외와 예외를 다루는 핸들러들이 위치하는 디렉토리
  • Http : Http Request를 처리하는 컨트롤러, 미들웨어들이 위치하는 디렉토리
  • Jobs: Queuable jobs를 처리하는 디렉토리
  • Listeners: 이벤트 리스너에 대한 설정을 담당하는 디렉토리
  • Notifications: Email, Slack, SMS 같은 알림들 담당하는 디렉토리
  • Policies: 사용자가 특정 리소스에 대한 주어진 액션을 수행할 수 있는지를 결정하는 정책 담당 디렉토리
  • Providers: 서비스 프로바이더 (서비스 컨테이너에 바인딩하는 역할) 디렉토리
  • Rules: 유효성 검사와 관련된 디렉토리

사용자에 어플리케이션에 필요한 기능이 아닌 경우에는 디렉토리를 생성할 필요는 없으며 필요한 기능은 그때 그때 참고해서 구현하면됩니다. 가벼운 마음으로 디렉토리 구조를 살펴보면서 라라벨에선 어떤 기능을 제공하는지 알고 넘어가는 수준으로 읽어 주셨으면 합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다