기본 설치가 되었으면 생성된 프로젝트 구조 및 동작 시퀀스 그리고 각 파일 및 디렉터리의 역할을 살펴보자
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 31 32 33 34 35 36 |
<span role="presentation">.</span> <span role="presentation">├── .env # 글로벌 설정 중 민감한 값, dev/production 등 앱 실행환경에 따라 변경되어야 하는 값을 써 놓는 곳</span> <span role="presentation">├── app</span> <span role="presentation">│ ├── Console</span> <span role="presentation">│ │ ├── Commands # 콘솔 코맨드 하우징</span> <span role="presentation">│ │ └── Kernel.php # 콘솔 코맨드, 크론 스케쥴 등록</span> <span role="presentation">│ ├── Events # 이벤트 클래스 하우징</span> <span role="presentation">│ ├── Exceptions # Exception 하우징</span> <span role="presentation">│ │ └── Handler.php # 글로벌 Exception 처리 코드</span> <span role="presentation">│ ├── Listeners # 이벤트 핸들러</span> <span role="presentation">│ ├── Jobs</span> <span role="presentation">│ ├── Policies</span> <span role="presentation">│ ├── Http # Http 요청 처리 클래스들의 하우징</span> <span role="presentation">│ │ ├── Controllers # Http Controller</span> <span role="presentation">│ │ ├── Kernel.php # Http 및 Route 미들웨어 등록</span> <span role="presentation">│ │ ├── Middleware # Http 미들웨어 하우징</span> <span role="presentation">│ │ ├── Requests # Http 폼 요청 미들웨어 하우징</span> <span role="presentation">│ │ └── routes.php # Http 요청 Url을 Controller에 맵핑시키는 규칙을 써 놓은 테이블</span> <span role="presentation">│ └── Providers # 서비스 공급자 하우징 (config/app.php에서 바인딩 됨)</span> <span role="presentation">│ ├── AppServiceProvider.php</span> <span role="presentation">│ ├── AuthServiceProvider.php</span> <span role="presentation">│ ├── EventServiceProvider.php # 이벤트 리스너, 구독 바인딩</span> <span role="presentation">│ └── RouteServiceProvider.php # 라우팅 바인딩 (글로벌 라우팅 파라미터 패턴 등이 등록되어 있음)</span> <span role="presentation">├── composer.json # 이 프로젝트의 Composer 레지스트리, Autoload 규칙 등이 담겨 있다. (c.f. Node의 package.json)</span> <span role="presentation">├── config # database, queue, mail 등 글로벌 설정 하우징</span> <span role="presentation">├── database</span> <span role="presentation">│ ├── migrations # 데이터베이스 스키마</span> <span role="presentation">│ └── seeds # 생성된 테이블에 Dummy 데이터를 삽입하는 클래스들 (개발 목적)</span> <span role="presentation">├── gulpfile.js # Elixir (프론트엔드 빌드 자동화) 스크립트</span> <span role="presentation">├── public # 웹 서버에 의해 지정된 Document Root</span> <span role="presentation">├── resources</span> <span role="presentation">│ ├── assets # JavaScript, CSS 하우징</span> <span role="presentation">│ ├── lang # 다국어 지원을 위한 언어 레지스트리 하우징</span> <span role="presentation">│ └── views # 뷰 파일 하우징</span> <span role="presentation">├── storage # Laravel5 파일 저장소</span> <span role="presentation">└── vendor # composer.json의 저장소</span> |
위 그림과 같이 설치된 상태이다 그림 2.에서 왼쪽에 빨간색으로 표시된 Laravel (laravel/laravel) 과 Framework (laravel/framework) 가 설치된 상태이다. 별도로 분리해 놓은 이유는 Framework 요소가 Laravel 이 아닌, 가령 Lumen 처럼 다른 프로젝트에서도 사용할 수 있도록 하기 위해서이다.
라라벨이 제공하는 문법과 API 들을 이용해서 User Code (appkr/l5essential) 라고 표시된, 커스텀 서비스를 만들게 된다. 이 과정에서 라라벨에서 제공하는 기본 기능외에 외부의 패키지들, User-pulled 3rd Party Packages 라 표시된 부분들도 가져와서 사용할 수도 있다.
라라벨 기본 시퀀스
Sequel Pro 또는 WorkBench 그리고 DATA GRID 등 편한 툴을 이용하기 바랍니다.
.env
.env에 써진 값들을 config/**.php 에서 env(string $key)로 읽을 수 있다. 기존 php CodeIgniter 로 프로젝트를 진행할 당시에는 config/database.php 에 직접 하드코드로 작성하였다.
.env
로 작성했을 때의 장점은 다음과 같다.
-
local, staging, production 등 어플리케이션 실행 환경에 따라 설정 값이 바뀌어야 할 때 유연하게 대응할 수 있다.
-
패스워드 등 민감한 정보를 버전 컨트롤에서 제외하기 위해서다. (.gitignore 파일을 확인해 보자.)
1 2 3 |
<span role="presentation">APP_ENV=local # 실행환경</span> <span role="presentation">APP_DEBUG=true # 디버그 스위치</span> <span role="presentation">APP_KEY= # 32bit Application Key</span> |
.env
파일이 없다면 생성하자. 기본적으로.env.example
파일을 이용하도록 합니다.
1 2 |
<span role="presentation">$ cp .env.example .env</span> <span role="presentation">$ cp config.example config</span> |
Application key
.env
에 설정된 APP_KEY 값은 라라벨 프레임웍 전반에 걸쳐 Cipher 알고리즘에서 Seed 값으로 사용된다. 설정되어 있지 않다면 꼭 설정해야 합니다.
1 |
<span role="presentation">$ php artisan key:generate</span> |
또는,
Random Keygen 에서 직접 작성하여 붙여 넣어도 됩니다.
DB 연결
라라벨에서는
.env
파일 수정만으로 DB 설정이 가능합니다.
1 2 3 4 |
<span role="presentation">DB_HOST=localhost</span> <span role="presentation">DB_DATABASE=myProject</span> <span role="presentation">DB_USERNAME=homestead</span> <span role="presentation">DB_PASSWORD=secret</span> |
참고
Homestead에 설치된 MySql에 접속하려면, port를 33060으로 설정해야 합니다.
PHP 라라벨 5 On Mac 포스팅
[PHP 라라벨 5 On Mac] 1 : 다루게 될 내용들
[PHP 라라벨 5 On Mac] 2 : Composer, Valet, Framework
[PHP 라라벨 5 On Mac] 3 : Framework
[PHP 라라벨 5 On Mac] 4 : Routing
[PHP 라라벨 5 On Mac] 5 : 블레이드 템플릿 1 (View)
[PHP 라라벨 5 On Mac] 6 : 블레이드 템플릿 2 (View)
[PHP 라라벨 5 On Mac] 7 : 블레이드 템플릿 3 (View)
[PHP 라라벨 5 On Mac] 8 : 마이그레이션 (Create Table)
[PHP 라라벨 5 On Mac] 9 : 마이그레이션 (컬럼 추가 및 데이타 스토리 엔진 설정)
[PHP 라라벨 5 On Mac] 10 : 마이그레이션 (적용)
[PHP 라라벨 5 On Mac] 11 : 마이그레이션 (컬럼 수정)
[PHP 라라벨 5 On Mac] 12 : Laravel Tinker Shell
[PHP 라라벨 5 On Mac] 13 : Laravel Tinker Shell (쿼리 빌더)
[PHP 라라벨 5 On Mac] 14 : 엘로퀀트 ORM 1
[PHP 라라벨 5 On Mac] 15 : 엘로퀀트 ORM 2
[PHP 라라벨 5 On Mac] 16 : 엘로퀀트 ORM 3
Leave a Reply
Want to join the discussion?Feel free to contribute!