[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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바