이 곳은 제가 개인적으로 YII framework의 블로그 만들기를 번역해 놓은 곳입니다.

제가 영어 전공자도.. 그렇다고 영어랑 친하지도 않습니다. 

그래서 보시면 뭔가 글도 엉성하고 말이 안맞는게 많습니다.

잘못 오역된 부분이라던지 그런 부분들 친절하게 알려주시면 바로 수정하겠습니다.
(현재 계속 보완 및 오역된부분 수정하고 있습니다.)

이 페지의 원글 http://www.yiiframework.com/doc/blog/1.1/en/start.overview



Yii를 사용하여 블로그 시스템을 구축


이 튜토리얼은 Yii를 사용하여 블로그 애플리케이션을 개발하는 방법을 설명하는 것입니다. 

예제로 사용하는 블로그 데모 는 Yii 자료 파일에 포함되어 있습니다.
개발에 필요한 모든 단계를 자세히 설명하지만, 그 내용은 다른 웹 응용 프로그램의 개발에도 적용 할 수 있습니다.
이 튜토리얼은 Yii 가이드 와 클래스 참조 를 보완하는 것이며, 포괄적이고 완전한 설명이 아니라 Yii 실용적인 방법을 보여주는 것을 목적으로 합니다.


이 튜토리얼의 독자는 미리 Yii 대해 알고있을 필요는 없습니다.
그렇지만, 객체 지향 프로그래밍 (OOP)과 데이터베이스 프로그래밍에 대한 기초 지식이 있으면 보다 쉽게 튜토리얼을 이해
하는데 도움이 될것입니다.

주의: 이 튜토리얼은 완전한 단계별 지침서로 되어 있지 않습니다. 
튜토리얼 진행하기 위해서는 나오는 오류를 수정하거나 API  또는 가이드를 확인 할 필요가 있습니다.

이 튜토리얼은 Yii 문서 규약 하에 배포됩니다.

이 곳은 제가 개인적으로 YII framework의 블로그 만들기를 번역해 놓은 곳입니다.

제가 영어 전공자도.. 그렇다고 영어랑 친하지도 않습니다. 

그래서 보시면 뭔가 글도 엉성하고 말이 안맞는게 많습니다.

잘못 오역된 부분이라던지 그런 부분들 친절하게 알려주시면 바로 수정하겠습니다.

이 페지의 원글 http://www.yiiframework.com/doc/blog/1.1/en/start.testdrive



Yii의 테스트

  1. Yii 설치
  2. 기초 어플리케이션 만들기
  3. 어플리케이션의 흐름

이 섹션에서는 출발점이 될 기초 응용 프로그램을 만드는 방법을 설명합니다.

설명을 쉽게하기 위해 웹 서버의 문서 로트를 /wwwroot 라고 가정하고 해당 URL을 http://www.example.com/이라고 합니다.


1. Yii 설치

먼저 Yii Framework를 설치 합니다.

Yii 릴리스 파일(버전 1.1.1 이상)을 www.yiiframework.com 에서 가져와 /wwwroot/yii 디렉토에 압축을 풀어줍니다.

만약을 위해, /www/yii/framework 디렉토리가 있는지 한번 더 확인해 보도록 합니다.



팁 : 
Yii framework는 파일 시스템의 어느 위치 에나 설치할 수 있습니다. 웹 폴더 (문서 루트) 아래 일 필요는 없습니다. Yii의 framework 디렉토리는 모든 프레임 워크 코드를 포함하고 있으며, 이 디렉토리가 Yii 응용 프로그램의 배포에 필요한 유일한 프레임 워크 디렉토리입니다. 설치 한 단일 Yii를 여러 Yii 응용 프로그램에서 사용할 수 있습니다.

Yii를 설치 한 후 브라우저 창을 열고 http://www.example.com/yii/requirements/index.php 이라는 URL에 액세스 하십시오. 

그러면 Yii 릴리스에 포함 된 요구 검사기가 표시됩니다. 

블로그 애플리케이션을 위해서는, Yii이 필요로하는 최소한의 요구뿐만 아니라 SQLite 데이터베이스에 액세스하기 위해 pdo와
pdo_sqlite 라는 두 PHP 확장을 활성화 해야 합니다.


2. 기초 어플리케이션 만들기

다음 yiic 도구를 사용하여 /wwwroot/blog 디렉토리에 기초 응용 프로그램을 만듭니다. yiic 도구 Yii 릴리스에 포함 된 명령 줄 도구입니다. 

이 도구를 사용하여 코드를 생성하여 반복적 인 코딩 작업을 어느 정도 줄일 수 있습니다.

명령 프롬프트를 열고 다음 명령을 실행합니다 :

% /wwwroot/yii/framework/yiic webapp /wwwroot/blog
Create a Web application under '/wwwroot/blog'? [Yes|No]y
......

팁 : 위에서 살펴본 것처럼 yiic 도구를 사용하려면 CLI PHP 프로그램에 경로를 통해서해야합니다. 그렇지 않은 경 다음과 같이하여 명령을 사용할 수 있습니다 :

path/to/php /wwwroot/yii/framework/yiic.php webapp /wwwroot/blog

방금 만든 어플리케이션을 테스트 합니다. 주소창에 http://www.example.com/blog/index.php 를 기입하고 엑세스 합니다.
우리는 이미 완벽하게 작동하는 4개의 페이지가 갖추어진 기초 어플리케이션을 확인할수 있습니다. 홈, 어바웃, 연락처, 로그인 페이지들 입니다.

다음은이 기초 어플리케이션의 내용에 대해 간략하게 설명합니다.


진입 스크립트

먼저 /wwwroot/blog/index.php 라는 진입 스크립트 파일이 있습니다. 이것은 다음과 같은 내용입니다 :

<?php $yii='/wwwroot/framework/yii.php'; $config=dirname(__FILE__).'/protected/config/main.php'; // production mode 에서 다음 줄을 삭제 합니다. defined('YII_DEBUG') or define('YII_DEBUG',true); require_once($yii); Yii::createWebApplication($config)->run();

이것은 웹 사용자가 직접 액세스 할 수있는 스크립트입니다. 진입 스크립트는 먼저 Yii 부트 스트랩 파일 yii.php을 읽습니다.
다음 지정된 설정 응용 프로그램 인스턴스를 생성하여 응용 프로그램을 실행합니다.


기반 응용 프로그램 디렉토리

다음 /wwwroot/blog/protected 라는 응용 프로그램 기반 디렉토리 가 있습니다. 앞으로 작성하는 코드와 데이터의 대부분이 디렉토리에 배치됩니다. 이 디렉토리는 웹 사용자의 접근으로부터 보호되어야합니다.
Apache httpd 웹 서버 를 사용하고 있다면 다음과 같은 . htaccess 파일을이 디렉토리에 저장합니다 :

deny from all

다른 웹 서버를 사용하는 경우, 웹 사용자의 액세스에서 디렉토리를 보호하는 방법에 대해 해당 설명서를 참조하십시오.


3. 어플리케이션의 흐름

Yii가 어떻게 작동하는지 이해하기 쉽도록 사용자가 연락처 페이지에 액세스 할 때의 기초 어플리케이션의 주요 흐름을 설명합니다 :

  1. 사용자가 URL http://www.example.com/blog/index.php?r=site/contact 을 요청합니다.

  2. 요청을 처리하기 위해 항목 스크립트 가 웹 서버에 의해 실행됩니다.

  3. 어플리케이션의 인스턴스가 생성되고 응용 프로그램 초기 구성 파일 /wwwroot/blog/protected/config/main.php 에서 지정된 초기 속성 값이 설정됩니다.

  4. 어플리케이션은 컨트롤러 와 컨트롤러 액션 에 요청을 해결합니다. 연락처 페이지에 대한 요청은 site 컨트롤러와 contact 액션에 해결됩니다 (/wwwroot/blog/protected/controllers/SiteController.php 의 actionContact 메소드).

  5. 어플리케이션은 site 컨트롤러를 SiteController 인스턴스로 만들고 실행합니다.

  6. SiteController 인스턴스는 자신의 actionContact () 메서드를 호출함으로써 contact 작업을 수행합니다.

  7. actionContact 방법은 contact 라는 뷰 를 렌더링하고 웹 사용자에게 제공합니다.
    내부적으로는보기 파일/ wwwroot/blog/protected/views/site/contact.php 을 읽고 레이아웃 파일 /wwwroot/blog/protected/views/layouts/column1.php 의 결과를 포함하여 렌더링 하여 실행하게 됩니다.

이 곳은 제가 개인적으로 YII framework의 블로그 만들기를 번역해 놓은 곳입니다.

제가 영어 전공자도.. 그렇다고 영어랑 친하지도 않습니다. 

그래서 보시면 뭔가 글도 엉성하고 말이 안맞는게 많습니다.

잘못 오역된 부분이라던지 그런 부분들 친절하게 알려주시면 바로 수정하겠습니다.

이 페지의 원글 http://www.yiiframework.com/doc/blog/1.1/en/start.requirements



요구 분석

앞으로 만들 블로그 시스템은 단일 사용자 시스템입니다. 시스템의 소유자는 다음 조치를 수행 할 것입니다 :

  • 로그인 및 로그 아웃
  • 기사 작성, 업데이트 및 삭제
  • 기사 공개, 비공개, 보관
  • 댓글 승인 제거


소유자 이외의 사용자는 모든 게스트 게스트는 다음 조치를 수행 할 것입니다 :

  • 읽기
  • 댓글 달기

이 시스템의 추가 요구에는 다음 사항이 포함됩니다 :

  • 시스템의 홈페이지는 최근 기사 목록을 표시한다.
  • 페이지에 10 개 이상의 기사가있는 경우 여러 페이지에 표시된다.
  • 기사와 그 기사의 댓글을 함께 표시한다.
  • 특정 태그가있는 문서의 목록을 볼 수 있습니다.
  • 태그 사용 빈도를 나타내는 태그 클라우드보기
  • 최근의 코멘트를 나열합니다.
  • 테마는 변경 가능하다.
  • SEO-friendly URLs 을 사용합니다.


이 곳은 제가 개인적으로 YII framework의 블로그 만들기를 번역해 놓은 곳입니다.

제가 영어 전공자도.. 그렇다고 영어랑 친하지도 않습니다. 

그래서 보시면 뭔가 글도 엉성하고 말이 안맞는게 많습니다.

잘못 오역된 부분이라던지 그런 부분들 친절하게 알려주시면 바로 수정하겠습니다.

이 페지의 원글 http://www.yiiframework.com/doc/blog/1.1/en/start.design



전체 설계

요구 분석을 바탕으로, 블로그 어플리케이션에서 데이터를 저장하기 위해서 다음의 데이터베이스 테이블을 사용합니다.

  • tbl_user 는 사용자 이름, 암호 등 사용자 정보를 저장합니다.
  • tbl_post 기사 정보를 저장합니다. 주로 다음 컬럼으로 구성되어 있습니다 :
    • title : 필수, 기사 제목
    • content : 필수, Markdown 형식 으로 작성된 문서의 본문
    • status : 필수, 게시물의 상태  (공개 여부) . 다음중 하나의 값을 사용함
      • 1, 게시물이 초안에 있으며 공개되지 않은 게시물 입니다.
      • 2, 공개된 게시물입니다.
      • 3, 게시기간이 지난 게시물이며, 목록에는 나타나지 않습니다(그렇지만, 개별적으로 계속 엑세스 할수 있습니다)
    • tags : 옵션, 단어를 쉼표구분 하여 카테고리화 하는 것입니다.

  •  tbl_comment 게시물의 댓글 정보를 저장합니다. 각 코멘트는 게시말과 관련된 주로 다음과 같은 항목으로 구성되어
    있습니다. :
    • author : 필수, 댓글 작성자 이름
    • email : 필수, 댓글 작성자의 이메일 주소
    • url : 옵션, 댓글 작성자의 웹 사이트의 URL
    • content : 필수, 일반 텍스트로 된 댓글의 내용
    • status : 필수, 코멘트 상태 (공개 여부). 코멘트가 승인 인경우 (value 2) 또는 승인이 아닌경우 (value 1) 입니다.

  • tbl_tag 는 태그 클라우드 기능을 구현하기 위해 필요한 문서의 태그 빈도 정보를 저장합니다. 이 테이블은 주로 다음 컬럼으로 구성되어 있습니다 :
    • name : 필수, 고유한 대크이름
    • frequency : 필수, 태그가 기사에 나오는 횟수

  • tbl_lookup 는 일반 조회 정보를 저장합니다. 이것은 본질적으로 정수와 텍스트의 매핑입니다. 전자는 코드의 데이터 표현이며, 후자는 해당 최종 사용자를위한 표현입니다. 예를 들어, 정수 값 1을 기사가 초안임을 나타내는 것으로 사용하지만, 사용자에게 표시 할 텍스트는 기본 입니다. 이 테이블은 주로 다음 컬럼으로 구성되어 있습니다 :
    • name : 데이터 항목의 텍스트 표현 (최종 사용자를위한 표시)
    • code : 데이터 항목의 정수 표현
    • type : 데이터 항목 형식
    • position : 동일한 유형의 데이터 항목에서의 상대적인 정렬

다음 entity-relation (ER) 다이어그램 은 테이블 구조와 위의 테이블에 대한 관계를 나타냅니다.

Entity-Relation Diagram of the Blog Database

Entity-Relation Diagram of the Blog Database

위의 ER 다이어그램에 해당하는 전체 SQL 문은 블로그 데모에서 찾을 수 있습니다.

정보: 다른 DBMS는  대소문자에 민감하여 종종 문제가 발생하기 때문에, 테이블 이름과 컬럼 이름은 모두 소문자로 명명합니다.

동시에, 모든 테이블에 tbl_ 라는 접두사를 붙이고 있습니다. 여기에는 두 가지 목적이 있습니다. 첫째, 동일한 데이터베이스에서 다른 테이블과 공존해야 할 때 접두사 테이블에 네임 스페이스를 도입하는 것이 해결책입니다. 이것은 공유 호스팅 환경에서 여러 응용 프로그램을 단일 데이터베이스를 사용하는 경우에 자주 볼 수 있습니다. 둘째, 접두사를 이용하면 DBMS의 예약어 테이블 이름을 사용할 가능성이 낮기 때문입니다.

블로그 애플리케이션 개발을 다음 이정표로 나눕니다.

  • Milestone 1 : 블로그 시스템의 프로토 타입을 만듭니다. 필요한 대부분의 기능을 포함합니다.
  • Milestone 2 : 기사의 평가 기능을 완성합니다. 기사 작성, 목록, 문서보기, 업데이트, 삭제가 포함됩니다.
  • Milestone 3 : 댓글 관리 기능을 완성합니다. 코멘트 작성, 목록 표시, 승인, 업데이트, 삭제가 포함됩니다.
  • Milestone 4 : 포틀릿을 구현합니다. 사용자 메뉴, 로그인, 태그 클라우드, 최근의 코멘트를 포함합니다.
  • Milestone 5 : 최종 조정 및 배포합니다.

이 곳은 제가 개인적으로 YII framework의 블로그 만들기를 번역해 놓은 곳입니다.

제가 영어 전공자도.. 그렇다고 영어랑 친하지도 않습니다. 

그래서 보시면 뭔가 글도 엉성하고 말이 안맞는게 많습니다.

잘못 오역된 부분이라던지 그런 부분들 친절하게 알려주시면 바로 수정하겠습니다.

이 페지의 원글 http://www.yiiframework.com/doc/blog/1.1/en/prototype.database



데이터베이스 설치

  1. 데이터 베이스 만들기
  2. 데이터베이스 연결 설정하기

기본 어플리케이션의 데이터베이스의 설계가 끝났습니다.
이번 섹션에서는 블로그의 데이터베이스를 작성하고 기본 어플리케이션에서 데이터베이스와의 연결을 설정합니다


1. 데이터베이스 만들기

Yii 데이터베이스 지원은 PDO 위에 구축되어 있기 때문에 어플리케이션의 코드를 변경하지 않고, MySQL 및 PostgreSQL 등
다양한 DBMS를 사용할 수 있습니다.

우리는 SQLite 데이터베이스를 사용하겠습니다.
Yii 데이터베이스 PDO 위에 구축되어 있기 때문에 어플리케이션의 코드를 변경하지 않고, MySQL 및 PostgreSQL 등 다양한 DBMS를 사용할 수 있습니다.

데이터베이스 파일은 blog.db는 /wwwroot/blog/protected/data 에 만들면 됩니다.
또한, 디렉토리와 데이터베이스 파일 모두 쓰기권한으로 되어 있어야 웹서버 프로세서가 돌면서 SQLite 에 서 사용할수 있습니다.

우리는 이미 설치된 Yii 블로그 데모에서 데이터베이스 파일을 복사 할수 있으며 사용 할수 있습니다.
데이터파일 은 /wwwroot/yii/demos/blog/protected/data/blog.db 에 있습니다. 또는,  /wwwroot/yii/demos/blog/protected/data/schema.sqlite.sql 파일을 실행하여 데이터베이스를 생성 할수 있습니다.
라는 파일에있는 SQL 문을 실행하여 데이터베이스를 생성 할 수 있습니다.

팁: SQL 문장의 실행은 SQLite 공식 웹 사이트 에있는 sqlite3 실행 도구를 사용할 수 있습니다.


2. 데이터베이스 연결 설정하기

기본어플리케이션에서 블로그 데이터 베이스를 사용하기 위해서는 /wwwroot/blog/protected/config/main.php 에 저장되어 있는 PHP 스크립트의 구성을 변경하여야 합니다. 이 스크립트는  name-value 쌍으로 구성된 연관 배열을 반환하며, 이 값은
기본어플리케이션의 인스턴스의 쓰기 속성을 초기화 하는데 사용됩니다.

DB 구성 요소는 다음과 같습니다.

return array(
    ......
    'components'=>array(
        ......
        'db'=>array(
            'connectionString'=>'sqlite:/wwwroot/blog/protected/data/blog.db',
            'tablePrefix'=>'tbl_',
        ),
    ),
    ......
);

위의 설정은 어플리케이션이 DB application component를 가지고 있으며, connectionString 의 값은 sqlite:/wwwroot/blog/protected/data/blog.db로 초기설정이 되며, 그리고 tablePrefix속성이 tbl_ 이라는것을 보여줍니다.


이 설정은 어플리케이션의 어디에서나 Yii::app()->db 코드를 통해 DB 연결 개체에 액세스 할 수 있습니다. 
Yii::app()는 entry script로 작성된 애플리케이션 인스턴스를 리턴 해주는 것에 주의 해야 합니다.DB 연결이 있을수 있는 매서드와 속성에 관심이 있다면, class reference를 참조하세요. 하지만, 대부분의 경우 우리는 직접 DB 연결을 사용할 수 없습니다.
대신, 우리는 액티브 레코드 를 사용하여 데이터베이스에 액세스합니다.


구성 파일에서 설정 한 tablePrefix 속성에 대해 좀 더 설명하겠습니다. 이것은 데이터베이스 테이블 이름의 접두어로 tbl_ 을 사용하는 것을 db 연결 개체에 전달합니다. 구체적으로는, 만약 SQL 문장에 이중 중괄호로 둘러싸인 토큰이있는 경우 (예:{{post}}), db 연결은 그것을 테이블 접두어를 붙인 이름 (예:tbl_post)로 변환 하고 DBMS에 전송하여 실행 시킵니다.
이 기능은 향후 테이블 접두어를 변경해야하는 경우에도 소스 코드를 만지는 필요가 없다는 점에서 매우 유용합니다. 
예를 들어, 일반 콘텐츠 관리 시스템 (CMS)를 개발하는 경우이 기능을 사용하면 CMS를 새로운 환경에 설치할 때 사용자가 테이블 접두어를 자유롭게 선택할 수 있도록 할 수 있습니다.

팁: 만약 데이터를 저장하기 위해 SQLite 대신 MySql을 사용 하려면 /wwwroot/yii/demos/blog/protected/data/schema.mysql.sql 의 SQL 문을 사용하여 blog 라는 MySql 데이터베이스를 만들수 있습니다. 그리고 기본어플리케이션의 구성 파일을 다음과 같이 수정합니다.

return array(
    ......
    'components'=>array(
        ......
        'db'=>array(
            'connectionString' => 'mysql:host=localhost;dbname=blog',
            'emulatePrepare' => true,
            'username' => 'root',
            'password' => '',
            'charset' => 'utf8',
            'tablePrefix' => 'tbl_',
        ),
    ),
  ......
);



+ Recent posts

티스토리 툴바