0과 1을 공부하다.

[Laravel] Laravel 설치 및 개요 본문

Study/Web

[Laravel] Laravel 설치 및 개요

Developer_Jay 2022. 10. 13. 17:34
728x90

 

 

 

 

 

설치

 

라라벨 설치 방식에는 홈스테드, 라라벨 세일, 로컬에 설치하는 방식이 있다.

 

홈스테드 설치 방식은 vmbox, Parallels, vmware 중 하나의 가상환경과 베이그런트가 필요하다.

홈스테드(Homestead)는 vagrant 의 설정 스크립트를 사용하여 라라벨 애플리케이션을 작성하는데 필요한 모든 구성 요소를 자동으로 설치하는 프로젝트로 홈스테드를 사용하면 가상 머신에 다음과 같이 우분투 운영체제, 웹서버, DBMS, PHP 스택이 자동으로 설치 및 설정이 완료된다.

베이그런트는 개발환경 등 가상화 환경을 구성할 때 미리 정의된 이미지를 사용하여 구성할 수 있도록 지원한다.

 

라라벨 세일 설치방식은 Docker container 가상환경에서 라라벨 애플리케이션을 실행하는 방식이다.

 

로컬 설치 방식은 php artisan serve 을 이용하여 로컬에 설치하는 방식으로 로컬설치는 일관성 있는 개발환경이 될 수 없다.

 

 

 

라라벨 세일 설치방식

 

1. 도커 및 도커 컴포즈 설치

[생략]

 

2. 라라벨 세일 다운로드

$ curl -s https://laravel.build/sample | bash

 

3. 세일 실행 / 종료 / 쉘접속/ MYSQL 접속

 

가. alias 등록

$ alias sail="./vendor/bin/sail"

 

 

나. 컨테이너 실행

$ sail up # (포그라운드)
$ sail up -d # (백그라운드)

 

다. 컨테이너 종료

$ sail down

 

라. 쉘접속

$ sail shell

 

마. mysql 접속

$ sail mysql

 

 

 

라라벨 디렉터리 구성

 

  • app/ : Console, Exceptions, Http, Providers 등의 디렉터리를 포함하며, 애플리케이션의 주요한 처리 클래스를 포함하고 있음.
  • artisan
  • bootstrap/ : 애플리케이션에서 가장 먼저 실행되는 처리나 자동 로딩(Auto Loading)설정을 포함.
  • composer.json
  • composer.lock
  • config/: 애플리케이션 설정값 파일을 포함.
  • database/: 데이터데이스 관련 파일을 포함.
  • package.json
  • phpunit.xml
  • public/: 문서 루트 디렉터리, index.php, js, css 등의 파일이 포함됨.
  • readme.md
  • resources/: View 템플릿 파일이나 LESS, SASS 등 메타 언어 파일 및 언어파일을 배치함.
  • routes/: 애플리케이션 루트 정의 파일 배치
  • server.php
  • storage/: 프로그램 실행 시 라라벨이 만드는 파일의 출력위치. 로그 파일, 캐시파일 및 컴파일된 템플릿 파일 등이 저장됨.
  • tests/: 테스트 코드 파일 배치
  • vendor/: Composer 이용 시 다운로드된 다양한 패키지 디렉터리.
  • webpack.mix.js

 

 

 

라라벨 애플리케이션 실행 흐름

 

  1. 송신된 HTTP 요청, 엔트리포인트(public/index.php)에서 처리. HTTP요청을 기반으로 Illuminate\Http\Request 인스턴스 생성해 HTTP 커널에 전달
  2. HTTP 커널(app\Http\Kernel.php), 애플리케이션 셋업 후 라우터에 앞서 전달받은 Request 인스턴스 dispatch
  3. 라우터(Illuminate\Routing\Router router\web.php)에서는 web.php 등에 정의된 라우트 정의 중에서 Request 내용을 기반으로 처리해 야 할 컨트롤러의 메서드나 클로저를 결정하고 실행.
  4. 미들웨어가 있다면 처리 및 실행하고 컨트롤러를 실행한다.
  5. HTTP 응답을 위해 Illuminate\Http\Response 또는 Illuminate\Http\JsonResponse 인스턴스를 반환. 요청 과정과 반대로 미들웨어, 라우터, HTTP 커널 순으로 반환하고 엔트리 포인으로에서 HTTP 응답을 출력 후 종료한다.

 

 

 

컴포넌트

 

1. 엔트리 포인트(public/index.php)

  • 라라벨 애플리케이션의 시작점.
  • 모든 http 요청을 받기 위해 도큐먼트 루트 아래에 설치함.

(1) 오토로더

프레임워크의 클래스 파일 등을 로딩함.

 

(2) 프레임워크

bootstrao/app.php 파일에 정의되어 있는 프레임워크를 셋업함.

 

(3) 애플리케이션 실행 및 HTTP 응답 송신

HTTP 커널을 만들고 handle 메소드를 실행함.

애플리케이션 실행 후 HTTP응답을 의미하는 Respsonse가 반환.

 

(4) 종료처리

Response send 메서드로 HTTP 응답 반환, terminate 메서드로 종료처리

 

2. HTTP 커널

  • 애플리케이션 셋업, 미들웨어 설정, 라우터 실행 담당
  • 라우터에는 엔트리 포인트에서 받은 Request를 처리 실행하여 생성된 Response를 엔트리 포인트로 반환

 

3. 라우터(routes/web.php)

  • 정의된 루트 중에서 Request에 일치하는 경로를 찾고 그 경로에 정의된 컨트롤러나 액션 클래스, 클로저 등의 애플리케이션 코드를 실행함.
  • 실행 결과를 Illuminate\Http\Response 또는 Illuminate\Http\JsonResponse로 반환함.

 

4. 미들웨어

  • 경로에 지정된 처리를 실행한 전후에 임의의 처리를 실행할 수 있음.
  • 주된 용도로 Request, Response에 포함된 값의 업데이트나 암호화 또는 세션실행, 인증처리 등이 있음.
  • 여러 미들웨어를 연결,조합하여 사용할 수 있음.

 

5. 컨트롤러, 클로저

  • HTTP 요청에 대응하는 처리를 실행함.
  • 좁은 의미로 애플리케이션 실행 기점.
  • 비즈니스 로직 실행, 데이터베이스 접속 등의 처리를 수행함. 처리 이후 Response를 만들어 반환함.

 

 

 

서비스 컨테이너

 

  • 개발의 산출물인 클래스의 인스턴스를 관리하는 것.
  • 비즈니스 로직, 서비스 컨테이너에게 인스턴스 요청
  • 서비스 컨테이너, 각 클래스의 인스턴스나 생성 방법을 저장.
  • 요청을 받으면 내부적으로 정해준 선서에 따라 인스턴스를 생성해 반환.

 

 

 

바인드와 리졸브

 

  • '바인드한다' : 인스턴스 생성 방법을 등록하는처리
  • bind, bindif, sigleton, instance, when

 

  • '리졸브한다.' : 지정된 인스턴스를 서비스 컨테이너가 생성해서 전달하는 것
  • make, app

 

  • 서비스 컨테이너 조작은 Illuminate\Foundation\Application 클래스의 인스턴스에 대해 메서드를 실행

 

 

 

참고 문헌/사이트

 

 

 

 

 

 

※ 본 게시글의 정보가 잘못 되었거나 부족한 부분에 대한 피드백을 환영합니다.

 

 

* CopyRight 2022. Jay Park All rights reserved.

 

 

728x90
Comments