Xpress Engine

오픈소스 비즈니스 컨설팅

Xpress Engine (구 제로보드XE)에 대한 전반적인 사항을 정리한다.
Xpress Engine은 게시판 기능을 넘어서 ECM (Enterprise Content Management) 도구로 발전하고 있다.

단 Xpress Engine기본 프로그램의 변형이 아닌 모듈/애드온/위젯 프로그램과 스킨은 각 저작자가 라이센스를 정할 수 있습니다.
  • 플랫폼  : PHP


목차

CentOS에 XE 1.7.3.4 설치

CentOS에서 XE 1.7.3.4를 설치 합니다.

  • 사전 준비 사항
  • Xpress Engine을 다운로드하여 원하는 위치에 놓고 압축을 풉니다.
unzip xe.1.7.3.4.ko.zip
mv xe board
chown -R apache:apache board

오류 : ERR_CONTENT_DECODING_FAILED

  • 오류 메시지 : 330 오류(net::ERR_CONTENT_DECODING_FAILED): 알 수 없는 오류
  • 임시 조치 방법
  • vi classes/display/DisplayHandler.class.php
//extension_loaded('zlib') &&
extension_loaded('gzip') &&

설치 가이드

Xpress Engine은 1999년부터 개발되어 온 제로보드(ZeroBoard)로 부터 시작하여 지금은 게시판 영역을 넘어 ECM(Enterprise Content Management)로 발전한 오픈소스 이다.

제로보드
(1999년)

고영수(zero)개발자가 개발한 게시판 소프트웨어인 제로보드는 4.1 버전까지 업데이트 되며 기존의 게시판 소프트웨어에 비해 강력한 기능을 보유한 국내 게시판 소프트웨어의 대명사가 되었습니다. 지금도 많은 사용자가 제로보드 4를 이용하고 있습니다.

제로보드 XE
(2008년 2월)

제로보드 XE(zbxe)는 기존의 제로보드를 업그레이드한 것이 아닌, 기획부터 구현까지 완전히 새로 만든 소프트웨어 입니다. 게시판 뿐만 아니라 다양한 종류의 웹 사이트를 제작할 수 있는 프레임워크, 자유/오픈 소스 소프트웨어로 나아가기 위한 큰 변화의 시작이었습니다.

Xpress Engine
(2008년 11월)

XpressEngine이라는 새로운 이름으로 명칭을 변경하면서 개인의 다양성과 콘텐츠의 안정성, 이동성에 더욱 중점을 두었습니다. 제로보드 XE의 '보드(게시판)'라는 단어가 갖는 한계를 벗어나 감정과 생각 등의 생산, 발행, 유통을 도와주는 자유/오픈 소스 소프트웨어가 되고자 하는 의지를 담았습니다.

설치전 사전 준비 사항

  • 주의 사항 및 추가 준비 사항
  • MySQL 4.1 이상 지원
  • PHP 4.x와 PHP 5.x 지원, 단 5.2.2는 PHP 자체에 버그가 있음
  • PHP에 iconv 확장팩 설치
  • PHP에 XML 라이브러리 설치

XE용 DB 설정

  • MySQL에 Xpress Engine에서 사용할 Schmea를 등록한다.
  • MySQL Administrator에 root 관리자로 로그인 한다.
  • 좌측 상단 창에서 "Catalogs"를 선택한다.
  • 좌측 하단의 "Schemata" 창에서 우측 마우스를 누른다.
  • "Create New Schema" 메뉴를 선택하여 Schema를 생성한다.
  • Schema 생성화면에서 "Schema name"으로 "xedb"를 입력한다.
DB Schema 등록


  • MySQL에 Xpress Engine에서 사용할 사용자를 등록한다.
  • 좌측 상단 창에서 "User Administration"을 선택한다.
  • 좌측 하단의 "Users Accounts" 창에서 우측 마우스를 누른다.
  • "Add new user" 메뉴를 선택하여 사용자를 생성한다.
  • "User Information" 탭에서 "MySQL User"("xe"), "Password", "Confirm Password" 등을 등록한다.
DB 사용자 등록


  • MySQL에 Xpress Engine에서 사용할 사용자의 권한을 설정한다.
  • "Schema Privileges" 탭에서 사용자가 사용할 Schema("xedb")를 선택한다.
  • "Available Privileges"의 모든 권한을 "Assigned Privileges"로 이동한다.
  • "Apply changes" 버튼을 눌려 등록된 정보를 저장한다.
권한 부여


  • MySQL Query Browser에 접속한다.
  • 상단의 "Tools" 메뉴에서 "MySQL Query Browser" 메뉴를 선택한다.
Query Browser 접속


  • 사용자의 MySQL 데이터베이스 접속 정보를 추가한다.
  • 우측의 "Schemata" 탭에서 "mysql"을 더블 클릭하여 선택한다.
  • grant all privileges on xedb.* to xe@localhost identified by '암호'; (사용자에게 Schmea에 대한 권한을 추가)
  • flush privileges; (위 명령을 통해 설정한 권한을 데이터베이스에 반영)
  • select host, user, password from user order by user, host; (사용자의 접속 정보 확인)
접속 정보 추가
  • MySQL Query Browser가 아니라 DOS 창에서 접속 정보를 추가하는 방법
mysql -uroot -pxxx mysql
    grant all privileges on xedb.* 
        to xe@localhost identified by '암호';
    flush privileges;
    select host, user, password from user order by user, host;
    exit


XE 설치

  • %APACHE_HOME%/conf/httpd.conf 파일에 XE 관련 정보를 추가하고 Apache를 재기동 한다.
  • Windows Vista의 경우 관리자로 실행하여 수정 한다.
  • Ubuntu의 경우 "AllowOverride None"이 아니라 "AllowOverride All"로 설정해야 rewrite 모듈이 정상 동작 한다.
<Directory />
    Options FollowSymLinks
    AllowOverride All
#    Order deny,allow     (이 라인을 주석으로 막는다)
#    Deny from all        (이 라인을 주석으로 막는다)
</Directory>

###-----------------------------------------------
### XE 설정, Document Root가 d:/www 일 경우
Alias   /xe    d:/www/xe
<Directory "/xe">
    Order allow,deny
    Allow from all
</Directory>
  • xe.1.3.1.2.zip 파일의 압축을 풀어 d:/www/xe 디렉토리에 복사한다.
  • d:/www/xe 폴더는 Apache HTTP Server에서 읽기, 쓰기 권한이 있어야 한다.
다운로드


  • 화면이 표시되지 않고 컨텐츠 인코딩 오류가 발생할 경우
330 오류(net::ERR_CONTENT_DECODING_FAILED): 알 수 없는 오류
  • vi classes/display/DisplayHandler.class.php 에서 다음을 추가 한다.
function printContent(&$oModule)                        //--- 함수에서
$this->gz_enabled = false;                              //--- 이 라인을 추가 한다.
if($this->gz_enabled) header("Content-Encoding: gzip"); //--- 이 라인 위에


  • "한국어"를 선택하고 "라이센스에 동의합니다"를 눌러 다음 진행을 합니다.
언어 선택


  • 필수 설치 조건을 확인하고 "설치를 진행합니다"를 누른다.
설치 조건 확인


  • 관리자 화면에서 "쉬운 설치"를 위해 사용할 FTP 접속 정보를 등록 한다.
  • 필요한 정보를 입력한 후 "FTP 접속 확인" 버튼을 눌러 설정 값이 정상적으로 입력 되었는지 확인 한다.
  • "무시" 버튼을 누르면 이 설정을 하지 않고 건너 뛰는데 향후 관리자 화면의 "Settings" 화면에서 설정할 수 있다.
FTP 설정 확인


  • "mysql innodb"를 선택하고 "설치를 진행합니다"를 누른다.
DB 선택


  • DB와 관리자 정보를 입력하고 "등록" 버튼을 누른다.
    • mysql_innodb
      • DB 호스트네밍 : localhost
      • DB Port : 3306
      • DB 아이디 : xe
      • DB 비밀번호 : 암호를 입력할 것
      • DB 데이터베이스 : xedb
      • 테이블 머릿말 : xe (하나의 서버에 여러개의 XE 설치시 구분자)
    • 관리자정보
      • 아이디 : admin
      • 비밀번호 : admin의 암호로 사용할 것을 입력할 것
      • 이름 : 관리자
      • 닉네임 : 관리자
      • 이메일 주소 : 관리자의 이메일 주소
    • 환경 설정
      • rewrite mod 사용 : 선택
      • time zone : [GMT +09:00] Korea Standard Time, Japan Standard Time, China Standard Time
DB, 관리자 정보



설치 후 설정 확인

  • rewrite mod가 정상 동작하지 않을 경우
  • 오류 현상
http://호스트/xe/?module=admin 으로 접속하면 페이지가 정상적으로 뜨나
http://호스트/xe/admin 으로 접속할 경우 404 (웹 페이지를 찾을 수 없습니다) 오류가 발생 한다.
  • 확인 사항
<Directory />
    AllowOverride All
</Directory>
  • Xpress Engine이 설치된 폴더에 .htaccess 파일이 있는지 확인 한다.
  • http://호스트/xe/?module=admin 으로 접속하여 "Setting" 메뉴에서 "rewrite mod 사용" 체크 되어 있는지 확인 한다.
  • "쉬운 설치"에서 폴더 생성 권한이 없다는 메시지가 나올 경우
  • 우측 상단의 "Settings" 메뉴을 선택 한다.
  • "설치된 XE의 FTP 경로 설정"에서 /var/www/xe/ 처럼 끝이 /로 끝이 나도록 등록 한다.

XE 환경 설정

XE 초기 설정

  • XE 관리자로 로그인 합니다.
  • XE 시스템의 기본 설정을 합니다.
  • "Settings -> 설정"에서 다음과 같이 설정 합니다.
  • 짧은 주소 사용 : 선택
  • Language : 한국어
  • 표준 시간대 : [GMT +09:00] Korea Standard Time, Japan Standard
  • 모바일 뷰 사용 : 선택
  • "Settings -> FTP 계정 정보 입력"에서 다음과 같이 설정 합니다.
  • 아이디 : FTP 아이디를 입력 하세요.
  • 비밀번호 : FTP 아이디에 해당하는 비밀번호를 입력 하세요.
  • FTP 서버 주소 : XE가 설치된 서버 주소를 입력 하세요.
  • FTP Port : 21
  • FTP Passive mode : 선택
  • 설치된 XE의 FTP 경로 설정 : XE가 설치된 절대 경로를 입력 하세요.
  • XE를 사용할 사용자를 등록 합니다.
  • "회원 관리 -> 회원 관리 -> 생성"에서 XE를 사용할 사용자를 생성 합니다.
  • 예) 아이디: user01, 소속 그룹: 정회원

  • XE에서 사용할 메뉴를 등록 합니다.
  • "사이트 설정 -> 메뉴 -> 생성"을 선택하여 메뉴을 생성 합니다.
  • 제목 : "사이트 메뉴"
  • XE에서 사용할 레이아웃을 등록 합니다.
  • "사이트 설정 -> 레이아웃 -> 다운로드 목록"에서 "XE 공식 사이트 레이아웃 (xe_official)"에 있는 "생성" 버튼을 선택 합니다.
  • 제목 : "XE 공식 사이트 레이아웃"
  • 홈 페이지 URL : XE의 홈 페이지 URL을 입력 한다. (예, http://www.jopenbusiness.com/xe/)
  • 상단 메뉴 : 위에서 생성한 "사이트 메뉴"를 선택 합니다.
  • "서비스 관리 -> 페이지 -> 생성"을 선택하여 home 페이지를 생성 합니다.
  • 모듈 이름 : home
  • 레이아웃 : "XE 공식 사이트 레이아웃 (xe_official)"
  • 모바일 뷰 사용 : 선택
  • 모바일 레이아웃 : "XE 공식 사이트 모바일 레이아웃 (default)"
  • 메뉴에 home 페이지를 추가 합니다.
  • "사이트 설정 -> 메뉴"에서 위에서 생성한 "사이트 메뉴"를 수정 합니다.
  • 메뉴 트리에서 "+" 버튼을 눌러 메뉴를 추가 합니다.
  • 메뉴명 : 홈
  • 연결 url : home
  • 설정에서 XE의 홈 페이지를 지정 합니다.
  • "Settings -> 설정"에서 시작 모듈을 home으로 선택 합니다.

기본 설치 프로그램

  • 모듈
  • SocialXE 클라이언트 모듈 ver. 1.0.6
  • SocialXE 서버 모듈 ver. 1.0.8
  • 게시판 EX ver. 0.5.9
  • nLucene 모듈 ver. 1.2
  • PXE 게시판 ver. 0.5.6
  • 자료실 - Resources ver. 1.1.1
  • 지식인XE ver. 1.1.2
  • Textyle ver. 1.3.1
  • 글감 모듈 ver. 1.0
  • Project XE ver. 1.0.2
  • IssueTracker ver. 1.1.0
  • WikiXE ver. 1.1.0
  • 주변 지도 모듈 ver. 0.2
  • NAVER Analytics ver. 0.2.1
  • 출석부 모듈 ver. 1.5.16
  • 애드온
  • 요약 책갈피 SNS Bookmarker ver. 1.1.2
  • QRCODE 애드온 ver. 0.2
  • 태그 연관글 출력(tag_relation) ver. 1.3
  • Facebook Social plugin Addon - Like button ver. 0.1
  • 위젯
  • Sitemap 위젯 ver. 0.1.0
  • PlannerXE123 (위젯 버전) ver. 3.3.0
  • 최근 글 위젯 (카테고리) ver. 0.1
  • NAVER Analytics Widget ver. 0.1
  • 에디터컴포넌트
  • 지도 글쓰기 도구(구글맵 사용) ver. 0.3.5
  • 단락에디터컴포넌트

  • 모듈 스킨
  • 문하우스 게시판스킨 ver. 3.0
  • 위젯 스킨
  • 플래쉬 회전하는 태그 위젯 SmallFont ver. 1.2
  • xeHome - 공지/웹진형 ver. 0.1
  • 문하우스 MH통합게시판위젯 ver. 2.0
  • 로그인 정보 출력 - XGENESIS Official Skin ver. 0.1.0
  • 위젯 스타일
  • Elkha - Gray Widget Style ver. 1.2.1
  • 레이아웃 스킨
  • 엑스돔 레이아웃 v2 ver. 2.5.2.4
  • Elkha - Sky2 ver. 1.4.5
  • Crom iXE 레이아웃 ver. 1.0.3
  • 에디터 스타일

SocialXE 설정

  • SocialXE에서 사용하기 위해 게시판을 생성 합니다.
  • "게시판 EX -> 게시판 EX 관리 -> 게시판 생성"에서 모듈 이름을 "SocialBoard"로 등록하고 게시판을 생성 합니다.
  • "게시판 EX -> 게시판 EX 관리 -> 게시판 목록"에서 SocialBoard의 수정 버튼을 선택 합니다.
  • 모든 권한 설정에서 "특정 그룹 사용자"를 선택하고 "관리그룹"을 체크 합니다.
  • 등록후 URL에서 문서 번호를 확인하고 기억 합니다. (예, document_srl=73)
  • SocialXE에서 사용하기 위해 페이지를 생성 합니다.
  • "제어판 -> 서비스 관리 -> 페이지 -> 생성"을 선택하여 페이지를 생성 합니다.
  • 모듈 이름: social
  • 생성된 페이지에 SocialXE 기능을 추가 합니다.
  • http://localhost/xe/?mid=social 페이지에서 "페이지 수정" 버튼을 선택 합니다.
  • "SocialXE 댓글"을 선택한 후 "추가" 버튼을 누릅니다.
  • 댓글이 등록될 문서번호: 게시판 등록시 생성한 문서의 번호를 여기에 입력 합니다.
  • 소셜 서비스에 등록될 제목: Social
  • 소셜 서비스에 등록될 주소: http://localhost/xe/?mid=social
  • 한번에 보여질 댓글 개수: 10

NAVER Analytics 설정

  • Naver Analytics 사이트에서API Key를 발급 받습니다.
  • "Settings -> 부가 기능 설정 -> Naver Analytics"에서 "API Key 정보"를 등록 합니다.
  • 처음 Naver Analytics를 적용할때, 데이터가 없어서 오류가 나면서 화면이 보이지 않을 경우
  • vi /var/www/html/xe/widgets/analytics_flash_counter/analytics_flash_counter.class.php
//--- if 문을 추가하여 foreach문을 감싸 안아 줍니다.
if ($response_obj != null) {
    foreach($response_obj as $key => $va
        $aXML_data[] = 'id="'.preg_replace('/-/', , $val->day->body).'" cnt="'.$val->visit_count->body.'"';
    }
}
  • 참고 문헌

관리자 가이드

XE 폴더 구조

XE Core
  • Classes
  • Context : /classes/context/Context.class.php
  • Object : /classes/object/Object.class.php : 데이터 전달을 위해 사용되는 base 클래스
  • MobuleObject : /classes/module/ModuleObject.class.php : 모듈의 base 클래스
  • ModuleHandler : /classes/module/ModuleHandler.class.php : 모듈을 실행하는 클래스
  • init() : Module 초기화
  • procModule() : Module 실행
  • displayContent($oModule) : Module 실행 결과 화면 반환
if ($oModuleHandler->init()) {
    $oModule = &$oModuleHandler->procModule();
    $oModuleHandler->displayContent($oModule);
}
모듈
  • Action의 기본 묶음을 표현하고, Data를 포함할 수 있는 최소 단위의 프로그램 조각
  • 폴더 : /modules/모듈/
  • conf/ : 모듈 설정 파일
  • lang/ : 모듈 언어 파일
  • queries/ : 모듈에서 사용하는 Query 파일
  • schemas/ : 모듈의 Schema 파일
  • skins/ : 모듈용 Skin 파일
  • tpl/ : 모듈용 Template 파일
  • 모듈.class.php : 모듈용 Class 파일
  • 모듈.model.php, 모듈.view.php, 모듈.controller.php : 모듈용 MVC 파일
  • 모듈.admin.model.php, 모듈.admin.view.php, 모듈.admin.controller.php : 모듈 Admin용 MVC 파일
애드온
  • 모듈의 제어나 결과의 변경이 가능한 추가 기능 구현
  • before_module_init, before_module_proc, after_module_proc, before_display_content
  • 폴더 : /addons/
위젯
  • 화면에 표시되는 작은 프로그램
  • 폴더 : /widgets/
  • conf/ : 위젯 설정 파일
  • queries/ : 위젯에서 사용하는 Query 파일
  • skins/ : 위젯용 Skin 파일
  • 위젯.class.php : 위젯 파일
  • conf/info.xml에 정의된 값 또는 <img />의 attribute값을 받아 proc($args) 함수가 실행 된다.
  • 사용법
<img src="" widget="위젯이름" 속성="값" ... />
에디터컴포넌트
단락에디터컴포넌트
모듈 스킨
위젯 스킨
  • 폴더 : /widgets/skins/스킨_폴더(default)/
  • skin.xml : 위젯 스킨 정보를 저장
  • widget.html : 위젯 스킨 파일
  • css/widget.css : 위젯 스킨 파일에서 사용하는 CSS 파일
위젯 스타일
  • 위젯의 배경, 보더, 타이틀 등 위젯의 모양을 꾸며주는 위젯스타일
  • 폴더 : /widgetstyles/위젯스타일명/
  • widgetstyle.html : 위젯스타일의 템플릿 파일
  • skin.xml : 위젯스타일의 제목, 설명, 제작자, 추가변수에 대한 설정 파일
  • preview.gif : 위젯스타일 미리보기
레이아웃 스킨
  • 폴더 : /layouts/
에디터 스타일

JOSSO 적용

  • 로그인 처리
  • 로그아웃 처리

오류시 조치 사항

  • 330, ERR_CONTENT_DECODING_FAILED
  • gz 압축 전송 옵션을 끈다.
  • vi config/config.inc.php
if(!defined('__OB_GZHANDLER_ENABLE__')) define('__OB_GZHANDLER_ENABLE__', 0);

개발자 가이드

위젯 만들기

  • 위 "XE 폴더 구조"에서 설명한 구조로 위젯을 만들어 서버에 올려 두면 바로 사용할 수 있습니다.
  • 참고 문헌

참고 문헌

개인 도구