본문 바로가기

Laravel configuration

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 같은 대안을 생각해야 한다.