일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 3D프린터입문
- kubernetes
- ci/cd
- C언어
- 3D 프린터 용어
- octoprint
- 코틀린개발환경
- docker
- Notification
- NAS HDD교체
- gitlab
- 3D모델링
- 3D프린터 입문
- git
- github
- OnlineIDE
- 3d프린터 초보
- IoTNetwork
- Kotlin
- Token인증방식
- 3D프린터
- data serialization formats
- docker container
- 3D
- linux job
- nas
- Jenkins
- 리눅스 파일동기화
- 네이버클라우드
- 데이터 직렬화 포맷
- Today
- Total
0과 1을 공부하다.
[Laravel] Laravel 설치 및 개요 본문
설치
라라벨 설치 방식에는 홈스테드, 라라벨 세일, 로컬에 설치하는 방식이 있다.
홈스테드 설치 방식은 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
라라벨 애플리케이션 실행 흐름
- 송신된 HTTP 요청, 엔트리포인트(public/index.php)에서 처리. HTTP요청을 기반으로 Illuminate\Http\Request 인스턴스 생성해 HTTP 커널에 전달
- HTTP 커널(app\Http\Kernel.php), 애플리케이션 셋업 후 라우터에 앞서 전달받은 Request 인스턴스 dispatch
- 라우터(Illuminate\Routing\Router router\web.php)에서는 web.php 등에 정의된 라우트 정의 중에서 Request 내용을 기반으로 처리해 야 할 컨트롤러의 메서드나 클로저를 결정하고 실행.
- 미들웨어가 있다면 처리 및 실행하고 컨트롤러를 실행한다.
- 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.
'Study > Web' 카테고리의 다른 글
[Laravel] Laravel 프로젝트에 Swagger 적용 (0) | 2023.02.13 |
---|---|
[Laravel] Laravel 형상관리 (0) | 2022.10.27 |
[Laravel] Eloquent Model 작성 (0) | 2022.10.13 |
[Apache] 특정 디렉터리 Http Authentication 적용 (0) | 2022.07.24 |
[PHP] PHPUnit Test 환경구성 및 테스트 (0) | 2022.04.14 |