02. 전역설정파일 세팅

솔루션에서 사용할 전역설정파일을 생성하고 세팅을 하도록 하겠습니다.
Codeigniter 에서는 application/config 폴더에서 다양한 변수/상수들을 선언하여 설정을 도울수 있도록 되어있습니다.

필자는 여기서 기본 파일들이 아닌 새로운 파일을 작성하여 프로젝트에서 사용되는 커스텀 변수/상수들을 선언하려고 합니다.

application/config 폴더내에 원하는 이름의 파일을 생성해줍니다. 여기서는 wwconfig.php 파일로 정하였습니다.

파일 내에 다음과 같은 코드를 붙여놓습니다.

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/*
 * wwconfig.php
 * --------------------------------------------------------------------
 * 프로젝트 커스텀 변수/상수 선언
 * --------------------------------------------------------------------
 */
date_default_timezone_set('Asia/Seoul');

// 구동환경이 개발서버인지 배포서버인지 판단.
// Apache 또는 Nginx 등의 웹서버에서 환경변수를 선언하도록합니다.
define("IS_TEST_MODE", (ENVIRONMENT == 'development'));

// 프로젝트 이름
define('PROJECT_NAME', 'WWBOARD');

// 자주사용할 문자열을 상수로 지정..
define("DEVICE_MOBILE", "mobile"); 
define("DEVICE_DESKTOP", "desktop");
define("COOKIE_VIEWMODE", "viewmode");
define("COOKIE_AUTOLOGIN", "autologin");
define("COOKIE_STATICS", "visit");

// 자주사용할 디렉토리 이름
define("DIR_THEME", "themes");
define("DIR_SKIN", "skins");
define("DIR_WIDGET", "widget");
define("DIR_UPLOAD", "files");

// PC/모바일 디바이스별 불러올 레이아웃테마 폴더를 지정합니다.
// 반응형의 경우 desktop으로 동일하게 맞춰줍니다.
define("THEME_DESKTOP", "desktop");
define("THEME_MOBILE", "mobile");

// 게시판에서 파일첨부시 허용할 확장자 목록입니다.
define("FILE_UPLOAD_ALLOW","csv|psd|pdf|ai|eps|ps|smi|xls|ppt|pptx|gz|gzip|tar|tgz|zip|rar|bmp|gif|jpg|jpe|jpeg|png|tiff|tif|txt|text|rtl|xml|xsl|docx|doc|dot|dotx|xlsx|word|srt");

if( IS_TEST_MODE )
{
    define("BASE_URL", "http://localhost");    // 기본 설정 URL
    define("COOKIE_DOMAIN", ".localhost");  // 쿠키도메인

    // 데이타베이스 설정
    define("DB_HOST", "localhost");     // DB 호스트
    define("DB_USER", "DBUSER");                // DB 아이디
    define("DB_PASS", "DBPASS");            // DB 비밀번호
    define("DB_NAME", "DBNAME");                // DB 네임
}
// 실제 서버용 설정
else
{
    define("BASE_URL",  "http://www.wwboard.com");
    define("COOKIE_DOMAIN", ".wwboard.com");  // 쿠키도메인

    // 데이타베이스 설정
    define("DB_HOST", "localhost");     // DB 호스트
    define("DB_USER", "DBUSER");                // DB 아이디
    define("DB_PASS", "DBPASS");            // DB 비밀번호
    define("DB_NAME", "DBNAME");                // DB 네임
}

LINE 39 ~ 61 까지의 설정은 PHP구동환경이 실서버인지 테스트/개발서버인지를 구분하여 각각 기본URL과 쿠키도메인, 데이타베이스 접속경로를 다르게 설정할수 있도록 하였습니다.

실서버인지 테스트/개발 서버인지여부를 판별할 환경변수를 선언하는 방법은 각각 Apache/Nginx 등의 웹서버 설정파일에서 설정할수 있습니다.

혹시 웹서버의 설정등을 잘 모르겠다… 하시면 간단하게 첫번째 포스팅에서 추가했던 www/.htaccess 파일에 환경변수를 추가하는법을 예제로 보여드리겠습니다.

다음으로 관리자등에서 사이트 전역환경설정등을 조정할수 있게 하기 위해서 데이타베이스에 전역환경설정을 관리할 수 있는 테이블을 추가하도록 하겠습니다.

테이블 이름은 ww_config, 컬럼은 cfg_key와 cfg_value 두가지를 작성하겠습니다. SQL구문은 아래와 같습니다.

CREATE TABLE `ww_config` (
  `cfg_key` varchar(30) NOT NULL COMMENT '환경설정 키값',
  `cfg_value` text NOT NULL COMMENT '환경설정 값',
  PRIMARY KEY (`cfg_key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf 

생성한 테이블에 필요한 행 몇개를 추가해보도록 하겠습니다.

위와 같이 5개의 행을 추가하였습니다.
SQL 구문은 다음과같습니다.

INSERT INTO `ww_config` (`cfg_key`, `cfg_value`) VALUES('site_meta_description','이곳에 사이트의 요약 설명을 입력하세요.');
INSERT INTO `ww_config` (`cfg_key`, `cfg_value`) VALUES('site_meta_image','');
INSERT INTO `ww_config` (`cfg_key`, `cfg_value`) VALUES('site_meta_keywords','wwboard');
INSERT INTO `ww_config` (`cfg_key`, `cfg_value`) VALUES('site_subtitle','멋진 게시판솔루션');
INSERT INTO `ww_config` (`cfg_key`, `cfg_value`) VALUES('site_title','WWBOARD');

각각 메타태그를 위한 title,subtitle,keyword,description 과 사이트 대표이미지를 저장할 행들로, 검색엔진최적화 점수를 높이기 위해 관리자에서 필요에 의해 변경할수 있도록 환경설정 테이블에 추가하였습니다.

다음으로 application/config.php 파일을 열어 필요한 부분을 수정합니다.
수정할 부분은 4군데입니다.

Line 38.

$config['index_page'] = '';

Line 79.

$config['language']	= 'korean';

Line 103.

$config['enable_hooks'] = TRUE;

Line 327. 암호화 키를 입력하므로 원하는 값으로 입력합니다. 본 포스팅에서는 wwboard로 입력하였습니다.

$config['encryption_key'] = 'wwboard';

다음으로 application/database.php 를 설정해줍니다.

hostname, username,password,database 부분은 처음 생성한 wwconfig.php 에서 불러올수 있도록 상수로 바꿔주고, dbprefix 는 앞으로 생성해나갈 테이블에 맞춰서 만들어주면 되지만 본 포스팅은 앞으로 테이블 접두어에 ww_를 붙일 예정이므로 ww_를 입력해줍니다.
예를들어 ww_config 테이블을 config 라고 불러올수 있도록 해줍니다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.