Laravel 프레임워크의 모든 설정 파일은 config 디렉토리에 있다.
설정 값에 접근
설정 값은 글로벌 헬퍼 함수인 config 를 사용하여 어플리케이션 어디에서든 접근할 수 있다.
설정 값은 config 디렉토리의 파일 이름과 접근을 원하는 옵션을 .(dot) 으로 연결하여 접근한다.
해당 옵션이 존재하지 않으면 기본값으로 지정되고 반환될 것이다.
/config/app.php 의 timezone 설정 값을 가져오는 예제
$value = config('app.timezone'); | cs |
/config/app.php 의 timezone 설정 값을 배열로 세팅하는 예제
config(['app.timezone' => 'America/Chicago']); | cs |
환경 설정
어플리케이션이 실행되는 환경에 따라 각각의 설정 값을 가지는 것이 좋다.
예를 들어, 로컬 개발 서버에 실제 제품(Production) 서버와 다른 캐시 드라이버를 사용할 수 있는데,
Vance Lucas 의 DotEnv PHP 라이브러리를 이용하여, 각 환경설정 세팅을 간단히 할 수 있다.
Laravel 을 설치하면 어플리케이션의 루트 디렉토리에 .env 파일이 포함되며, 없는 경우 .env.example 파일로 복사한다.
.env 파일의 모든 변수는 어플리케이션이 요청 받을 때, 슈퍼 전역변수 $_ENV 에 로드된다.
하지만 이 변수들을 조회할 때 $_ENV 가 아닌 env 헬퍼 함수를 사용할 것이다.
config 디렉토리의 Laravel 설정 파일을 살펴보면, env 헬퍼를 이미 여러 옵션에 사용한 것을 알 수 있다.
'debug' => env('APP_DEBUG', false), | cs |
env 함수에 전달된 두번째 값은 기본값이다.
주어진 키의 환경 변수가 존재하지 않으면 기본값이 사용된다.
Laravel 어플리케이션을 사용하는 개발자나 서버가 각기 다른 환경 설정이 필요할 수 있으므로, 소스 관리시 .env 파일을 커밋하지 않아야 한다.
팀으로 개발 중이라면, 어플리케이션에 .env.example 파일을 계속 포함하여, 팀의 다른 개발자들이 어플리케이션 실행에 필요한 환경 변수들을 확인할 수 있다.
어플리케이션을 구동하기 전에 APP_ENV 환경 변수를 세팅하면, Laravel 은 그 환경에 맞게 파일들을 로드하려고 할 것이다.
만약 PHPUnit 설정 파일이 APP_ENV 변수를 testing 으로 세팅하면, Laravel 은 .env.testing 파일을 로드할 것이다.
파일이 존재하지 않으면 기본적으로 .env 파일을 로드한다.
현재 환경 결정
현재 어플리케이션 환경은 .env 파일의 APP_ENV 변수를 통해 결정된다.
App 퍼사드의 environment 메소드를 통해 이 값에 접근할 수 있다.
* 퍼사드(facade) 패턴 : 퍼사드는 클래스 라이브러리에 대한 간략한 인터페이스를 제공하는 객체이다.
$environment = App::environment(); | cs |
환경과 주어진 값이 일치하는지 확인하기 위해 environment 메소드에 하나 이상의 매개변수를 전달할 수 있다.
이 매개변수 중 하나와 환경이 일치할 경우, 이 메소드는 true 를 반환할 것이다.
if (App::environment('local')) { // The environment is local } if (App::environment('local', 'staging')) { // The environment is either local OR staging... } | cs |
environment 메소드는 app 헬퍼 메소드를 통해서도 접근될 수 있다.
$environment = app()->environment(); | cs |
캐싱 설정
어플리케이션의 속도를 더 높이려면, Artisan 명령인 config:cache 를 사용하여 하나의 파일에 모든 설정 파일들을 캐시할 수 있다.
어플리케이션의 모든 설정 옵션들은 프레임워크로부터 빠르게 로드될 하나의 파일에 합쳐질 것이다.
일반적으로 실제 제품 서버에 배포할 때, php artisan config:cache 명령을 실행할 것이다.
로컬 개발 중에는 종종 설정 옵션을 변경하므로, 캐시를 사용하지 말아야 한다.
$ php artisan config:cache | cs |
유지보수 모드
어플리케이션이 유지보수 중일 때, 어플리케이션의 모든 요청에 대해서 특정 화면을 보여줄 것이다.
업데이트 중이거나 유지보수 중일 때는 어플리케이션을 "disable" 로 간단히 사용 중지시킬 수 있다.
유지보수 모드 확인은 어플리케이션의 기본 미들웨어 스택에 포함되어 있다.
만약 어플리케이션이 유지보수 모드라면, HttpException 은 HTTP 503 상태 코드를 보여줄 것이다.
유지보수 모드로 사용하려면, down Artisan 명령어를 실행한다.
$ php artisan down | cs |
유지보수 모드를 사용하지 않으려면, up 명령어를 실행한다.
$ php artisan up | cs |
유지보수 모드 응답 템플릿
유지보수 모드 응답의 기본 템플릿은 resources/views/errors/503.blade.php 이다.
이 뷰는 어플리케이션에서 원하는대로 수정할 수 있다.
유지보수 모드와 큐
유지보수 모드일 때, 큐 작업은 동작하지 않는다.
이 작업은 유지보수 모드가 끝날 때 정상적으로 처리될 것이다.
유지보수 모드 대안
유지보수 모드는 몇 초 동안 작동 시간이 필요하기 때문에, 즉시 배포할 수 있는 Envoyer 같은 대안을 생각해야 한다.
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.