라라벨의 설정은 config 디렉터리에 있는 개별 php 파일을 통해 이뤄집니다. 파일들은 캐시를 설정하는 cache.php, 메일을 설정하는 mail.php, 세션을 설정하는 session.php 처럼 용도별로 나뉘어져 있습니다.


이중에 데이타베이스를 설정하는 파일인 database.php 를 열어보면 다음과 같이 구성되어 있는 것을 볼 수 있습니다.

여기에서 default 로 설정된 것은 기본 데이타베이스 설정을 의미하며 실제 연결 정보는 아래의 connections 에 있는 정보를 참고하게 됩니다.

<?php
return [
	'fetch' => PDO::FETCH_CLASS,
	'default' => 'mysql',
	
	'connections' => [
		'sqlite' => [
			'driver'   => 'sqlite',
			'database' => storage_path().'/database.sqlite',
			'prefix'   => '',
		],
		'mysql' => [
			'driver'    => 'mysql',
			'host'      => env('DB_HOST', 'localhost'),
			'database'  => env('DB_DATABASE', 'forge'),
			'username'  => env('DB_USERNAME', 'forge'),
			'password'  => env('DB_PASSWORD', ''),
			'charset'   => 'utf8',
			'collation' => 'utf8_unicode_ci',
			'prefix'    => '',
			'strict'    => false,
		],
CODE

 

라라벨 설정은 위와 같이 key/value 형식의 배열로 관리하고 있습니다.  'host' => env('DB_HOST', 'localhost') 같이 되어 있는 부분은 다음과 같은 의미입니다.

 

  • 애플리케이션 환경 설정 파일인 .env 파일에서 DB_HOST 항목을 읽어와서 사용
  • .env 파일에 해당 키에 맞는 값이 없을 경우 기본 값으로 localhost 사용


설정 파일을 보면 짐작하겠지만 데이타베이스를 mysql 에서 sqlite 로 변경할 경우 애플리케이션 소스 수정없이 'default' => 'sqlite' 로 지정해 주면 바로 적용이 됩니다.

세션 정보도 마찬가지로 로컬 시스템에 파일로 관리하다가 사용자가 늘어날 경우 데이타베이스나 또는 redis 로 변경할 경우 소스 수정없이 드라이버 부분만 'driver' => env('SESSION_DRIVER', 'file'), 에서

'driver' => env('SESSION_DRIVER', 'redis') 로 수정해 주면 됩니다.

app.php 에 반영한 내용은 모든 구동 환경에 영향을 주게 되므로 개발자 PC처럼 특정 드라이버(redis, memcached 등)를 사용할 수 없는 환경에서는 명시적으로 .env 파일에 다음과 같이 지정해야 동일한 개발 환경을 구성할 수 있습니다.

SESSION_DRIVER=file



라라벨은 최소의 환경 설정으로도 잘 구동되도록 구성되어 있지만 언어나 타임존등 사용자 환경에 따라 몇 가지는 변경해야 제대로 사용할 수 있습니다.

그러면 선호하는 에디터로 config/app.php 를 열어 봅시다.


app.php 구성

<?php
return [
        /*
        |--------------------------------------------------------------------------
        | Application Debug Mode
        |--------------------------------------------------------------------------
        |
        | When your application is in debug mode, detailed error messages with
        | stack traces will be shown on every error that occurs within your
        | application. If disabled, a simple generic error page is shown.
        |
        */
        'debug' => env('APP_DEBUG', false),
        'url' => env('APP_URL', 'http://localhost'),
CODE

env 헬퍼 함수는 .env 에서 첫 번째 파라미터로 전달한 키 값(여기서는 APP_DEBUG) 를 읽어서 설정하며 해당 값이 없을 경우 두 번째 항목(false) 을 기본 값으로 설정합니다.

.env 를 활용하여 배포 환경마다 설정 파일을 관리하는 부분은 뒷 장 "라라벨 배포하기" 에서 자세히  설명하고 주요 설정 항목에 대해서 알아 봅시다.


 디버그 여부

APP_DEBUG 를 true 로 설정하면 에러시 스택 트레이스와 자세한 에러 메시지를 표시해 줍니다. 운영 환경에서는 꼭 false 로 설정해야 예외가 발생해도 시스템의 자세한 정보가 노출되지 않습니다. 만약 운영 환경에서 디버깅용 정보가 필요하다면 로그 파일에 로깅을 남기고 운영 서버에 직접 접속하여 로그를 확인하는 것이 좋습니다.


타임존 설정

기본 타임존은 'UTC' 로 설정되어 있으므로 'Asia/Seoul' 로 변경해 줍니다.

'timezone' => 'Asia/Seoul',
CODE


url

url 항목은 라라벨의 헬퍼 메소드중 하나인 url 메소드를 사용하여 서비스의 url 을 얻거나 또는 라라벨의 명령행 유틸인 artisan 에서 사용됩니다. 서비스의 url 로 설정해 주어야 합니다.

'url' => 'http://example.com',
CODE



로캘 설정

라라벨이 영어권에서 제작되었으므로 기본 로캘(locale)이 en 으로 되어 있습니다. 한글 로캘인 ko 로 변경하면 되며 국가별 단축 언어 코드(예: French - fr) 는 위키피디아의 ISO-639-1(https://goo.gl/0Zc3cn) 항목을 참고하십시요. 

 'locale' => 'ko',
PHP

ko 설정할 경우 모든 리소스를 한글로 변환하지 않을 경우 에러가 발생하며 이럴 경우에 대비하여 fallback_locale 에 기본 로캘 리소스가 없을 경우 대체할 로캘 설정을 적어주면 됩니다.

'fallback_locale' => 'en',
PHP


로그 설정

어플리케이션 로그를 어떻게 관리할 지 여부로 기본 설정은 단일 파일(storage/logs/laravel.log)에 로그를 남기는 설정인 single 입니다.

'log' => env('APP_LOG', 'single'),
CODE

운영 환경에서는 날자별로 롤링하는 'daily' 설정을 권장하며 웹 서버 실행 계정과 php artisan 실행 계정이 달라서 발생하는 로그 파일 권한 문제는 라라벨 로그 파일 권한(laravel log file permission) 문제 해결 를 참고하세요.