설정
시작하기
라라벨의 모든 설정 파일은 config
디렉토리에 저장됩니다. 모든 파일에는 개별 옵션에 대한 설명이 들어 있으니 해당 옵션에 대해 이해하는데 도움을 받을 수 있습니다.
구동환경 설정
프로그램이 실행되는 구동환경에따라 다른 설정값을 사용할 수 있으면 많은 이점이 있습니다. 예를 들어 실제 제품 서버와 로컬 개발 서버에 각각 다른 캐시 드라이버를 사용하려고 하는 경우가 그렇습니다.
보다 확실하게 하기 위해서 라라벨은 Vance Lucas가 만든 PHP 라이브러리 DotEnv을 이용합니다. 새롭게 라라벨을 인스톨 한경우에 애플리케이션의 루트 디렉토리에 .env.example
파일이 포함되어 있습니다. 컴포저를 통해서 설치한 경우에는 이 파일이 자동으로 .env
파일로 변경됩니다. 컴포저를 사용하지 않는다면 직접 파일을 변경하십시오.
{tip} 또한
.env.testing
파일을 생성할 수 있습니다. 이 파일은 PHPUnit 테스트나 아티즌 명령어가--env=testing
옵션과 함께 실행될 때.env
값을 오버라이드 합니다.
구동환경 조회하기
이 파일의 목록에 있는 모든 변수는 애플리케이션이 요청을 받을 때 $_ENV
PHP 슈퍼 전역변수에 로드됩니다. env
헬퍼 함수를 통해서 설정 파일안에 있는 이러한 변수값들을 조회 할 수 있습니다. 만약 여러분이 라라벨 설정 파일들을 살펴보았다면 이미 여러 옵션 설정에 헬퍼 함수가 사용되었다는 것을 알 수 있을 것입니다!
'debug' => env('APP_DEBUG', false),
env
함수에 전달되는 두 번째 인자는 "기본값" 입니다. 이 값은 주어진 키를 위한 환경 변수가 존재하지 않을 때 사용될 것입니다.
개별 개발자와 서버에서 애플리케이션별로 다른 구동 환경 설정을 필요로 하기 때문에, .env
파일을 애플리케이션의 소스 컨트롤 시스템에 커밋하지 않아야 합니다.
팀으로 개발을 하는 경우라면 .env.example
파일을 애플리케이션에 포함할 수 있습니다. example 설정 파일에 적절한 기본값을 넣어두면 다른 개발자들이 애플리케이션을 실행하는 데 어떤 환경 변수 설정이 필요한지 명확하게 이해할 수 있습니다.
현재의 구동환경 결정하기
현재의 애플리케이션 구동 환경은 .env
파일의 APP_ENV
변수를 통해서 결정됩니다. App
파사드의 environment
메소드를 통해서 이 값에 접근 할 수 있습니다:
$environment = App::environment();
또한 environment
메소드에 확인하고자 하는 구동 환경에 대한 값을 인자로 전달할 수도 있습니다. 메소드는 주어진 값들에 일치하는 게 하나라도 있다면 true
를 반환할 것입니다.
if (App::environment('local')) {
// The environment is local
}
if (App::environment('local', 'staging')) {
// The environment is either local OR staging...
}
설정 값에 엑세스 하기
애플리케이션의 어디에서라도 config
헬퍼 함수를 사용하여 손쉽게 설정 값에 엑세스 할 수 있습니다. 설정된 값은 파일의 이름과 엑세스 하고자 하는 옵션에 대해서, ".(점)" 문법을 사용하여 엑세스 할 수 있습니다. 설정된 옵션값이 존재하지 않았을 때 반환될 기본값을 지정할 수 있습니다.
$value = config('app.timezone');
애플리케이션의 실행중에 설정값을 변경하려면 config
헬퍼에 배열을 전달하십시오:
config(['app.timezone' => 'America/Chicago']);
설정 캐시
애플리케이션의 구동 속도를 더 빠르게 하려면, config:cache
아티즌 명령어를 통해서 설정 파일들을 하나로 묶어 캐싱해야 합니다. 이 명령어는 모든 설정 옵션을 하나의 파일로 묶어 애플리케이션이 빠르게 로드할 수 있게 해줍니다.
일반적으로 php artisan config:cache
명령어를 애플리케이션 배포 루틴의 일부에서 실행하도록 해야 합니다. 애플리케이션 개발 중에는 설정 옵션값이 자주 바뀔 필요가 있기 때문에, 로컬 개발 환경에서는 이 명령어를 실행하지 말아야 합니다.
{note} 개발모드 에서
config:cache
명령어를 실행한다면, 설정파일 안에서만env
함수를 호출하는지 확인해야 합니다.
점검(공사중) 모드
애플리케이션이 점검 모드일 경우 애플리케이션에서 지정한 모든 라우팅이 특정한 화면으로 보여지게 됩니다. 따라서 애플리케이션을 업데이트 하거나 튜닝하는 중에 손쉽게 "사용 정지"시킬 수 있습니다. 점검 모드를 확인하는 부분은 애플리케이션의 미들웨어 스택에 기본적으로 포함되어 있습니다. 만약 애플리케이션이 점검 모드에 있다면 503 상태 코드와 함께 MaintenanceModeException
이 발생합니다.
점검 모드를 활성화 하려면 아티즌 명령어 down
을 실행시키면 됩니다:
php artisan down
또한 down
명령어에 message
와 retry
옵션을 지정할 수 있습니다. message
값은 화면에 보여주거나, 로그에 사용자 메세지를 남기는데 사용되고, retry
값은 HTTP 헤더의 Retry-After
를 설정하는데 사용될 것입니다.
php artisan down --message="Upgrading Database" --retry=60
점검 모드를 해제하려면 아티즌 명령어 up
을 실행시키면 됩니다:
php artisan up
점검모드의 템플릿
점검모드의 응답페이지는 resources/views/errors/503.blade.php
파일에 위치하고 있습니다. 애플리케이션에서 필요한 경우 이 뷰 파일을 자유롭게 수정할 수 있습니다.
점검모드 & 큐-Queue
애플리케이션이 점검 모드인 동안에는 큐 작업은 동작하지 않습니다. 큐 작업들은 점검 모드가 해제된 애플리케이션이 일반 모드로 전환된 시점에서 계속 처리됩니다.
점검 모드의 대안
점검 모드 동안에는 애플리케이션이 얼마동안 완전히 다운되어 있게 되므로, 라라벨의 제로-타임 배포를 위해서 Envoyer같은 대안을 고려할 수도 있습니다.