[Laravel] Laravel 설치 및 개요

2022. 10. 13. 17:34·Back-End/Laravel
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 클래스의 인스턴스에 대해 메서드를 실행

 

 

 

참고 문헌/사이트

 

  • Laravel 공식문서 (https://laravel.kr/docs/8.x/README)
  • 라라벨 실전 웹애플리케이션 개발 - 제이펍

 

 

 

 

 

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

 

 

* CopyRight 2022. Jay Park All rights reserved.

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'Back-End > Laravel' 카테고리의 다른 글

[Laravel] Laravel 프로젝트에 Swagger 적용  (0) 2023.02.13
[Laravel] Laravel 형상관리  (0) 2022.10.27
[Laravel] Eloquent Model 작성  (0) 2022.10.13
'Back-End/Laravel' 카테고리의 다른 글
  • [Laravel] Laravel 프로젝트에 Swagger 적용
  • [Laravel] Laravel 형상관리
  • [Laravel] Eloquent Model 작성
dev.parkjh
dev.parkjh
Jay Blog. Github: https://github.com/GreatPark96
  • dev.parkjh
    0과 1을 공부하다.
    dev.parkjh
  • 전체
    오늘
    어제
    • 분류 전체보기 (114)
      • Profile (2)
      • Paper (6)
      • Column (3)
      • Project (8)
        • Smart Home (3)
        • 3D Printing (5)
      • Front-End (0)
        • Web (3)
      • Back-End (8)
        • API (1)
        • DB (1)
        • Laravel (4)
      • Language (16)
        • Kotlin (11)
        • C, C++ (3)
        • JAVA (0)
        • python (2)
      • System (28)
        • Server (15)
        • Security (1)
        • Network (1)
        • Linux (8)
        • Cloud (3)
      • ETC (34)
        • Book Recommend (Computer) (3)
        • IoT (7)
        • BlockChain (7)
        • ETC (17)
      • My YOLO (1)
      • Note (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    3D프린터 입문
    linux job
    네이버클라우드
    Kotlin
    Jenkins
    코틀린개발환경
    gitlab
    git
    docker private register
    github
    데이터 직렬화 포맷
    3d프린터 초보
    Database
    리눅스 파일동기화
    docker
    3D프린터
    3D
    Notification
    ai code review
    ncp container registry
    docker container
    3D모델링
    data serialization formats
    NAS HDD교체
    work hour
    kubernetes
    ci/cd
    C언어
    coderabbit
    nas
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dev.parkjh
[Laravel] Laravel 설치 및 개요
상단으로

티스토리툴바