오픈소스로 제공되는, On-Premise 방식의 CRM인 vTiger를 소개한다.


설치 가이드


아래 설치 가이드는 Windows Server 2003을 기준으로 작성한 것 입니다. 설치 환경이 틀릴 경우에는 별도의 주석을 달아 주세요.


설치전 사전 준비 사항

{{wamp 준비}}


vtiger 설치

{{Apache 접속 설정|vtiger}}

  • 다운로드 사이트에서 vtiger CRM 5.1.0(vtigercrm-5.1.0.tar.gz)을 다운로드 한다.
    • 다운로드한 파일의 압축을 풀어 "d:/OpenBiz/31_application/vtiger" 로 복사합니다.

  • $PHP_HOME/php.ini 파일에서 다음과 같이 설정되어 있는지 확인한다.
    safe_mode = Off
    display_errors = On
    file_uploads = On
    register_globals = Off
    max_execution_time = 600
    output_buffering = On 또는 output_buffering = 4096
    memory_limit = 64M
    error_reporting = E_ALL & ~E_NOTICE
    allow_call_time_pass_reference = On
    log_errors = Off
    short_open_tag= On

  • http://localhost/vtiger/에 화면에서 "Install" 버튼을 선택하여 설정을 시작한다.
    설치 시작|700px
    • 화면이 표시되지 않을 경우에는 vtiger가 디렉토리가 ReadOnly로 설정되어 있는지 확인하여 ReadOnly를 제거한 후 Apache HTTP Server를 재기동 한다.

  • 라이선스를 확인하고 "Next" 버튼을 누른다. 라이선스 확인|700px

  • 설치 환경을 확인하고 "Next" 버튼을 누른다.
    • 붉은 색 메시지가 표시될 경우 PHP 라이브러리를 설치 또는 php.ini 파일에서 설정을 확인 합니다. 설치 환경 확인|700px

  • 추가로 설치할 모듈을 선택하고 "Next" 버튼을 누른다. 추가 모듈|700px

  • 접속 정보를 설정하고 "Next" 버튼을 누른다.
    • Database Information
      • Database Type : MySQL
      • Host Name : www.jopenbusiness.com
      • User Name : vtiger
      • Password : xxxxxxxx
      • Database Name : vtigerdb
      • Create Database : 선택
      • Root username : root
      • Root Password : xxxxxxxx
      • UTF-8 Support : 선택
    • CRM Configuration
    • User Configuration
    • Host Name에 localhost를 사용하여 "Unable to connect to database Server. Invalid mySQL Connection Parameters specified" 오류가 발생할 경우, 127.0.0.1 을 사용 한다.

  • DB 접속 등이 정상적으로 되었는지 메시지를 확인하고 "Next" 버튼을 누른다.

  • 설치를 위해 "Next" 버튼을 누른 후 약 4분간 기다린다. 설치 시작|700px

  • 최종 설치 완료 정보를 확인하고 "Finish" 버튼을 눌러 설치를 종료한다. 설치 완료|700px

  • http://localhost/vtiger 에 admin / xxxxxxxx 또는 standarduser / xxxxxxxx로 접속하여 사용 한다.


설치 후 오류 수정

  • MySQL의 레코드 등록 시 "Record you are trying to access is not found. Go Back." 오류가 발생할 경우에 다음과 같이 조치 한다.

    • 상세 에러 메시지
      09/22/08 07:48:40,515 [1096](1096.md) INFO VT - PearDatabase ->ADODB error
      Query Failed:insert into vtiger_account(accountid, accountname, phone, website, fax, tickersymbol, otherphone, parentid, email1, employees, email2, ownership, rating, industry, siccode, account_type, annualrevenue, emailoptout, notify_owner) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)::-> [1366](1366.md)Incorrect integer value: '' for column 'parentid' at row 1
    • 원인 : PHP 버전 4.x와 달리 PHP 버전 5.x에서는 숫자 항목에 빈 문자열을 등록할 때 오류가 발생한다.
    • 조치 1 : 숫자 항목에는 반드시 숫자를 등록하여야 하여 사용한다.
    • 조치 2 : 프로그램을 수정할 수 없거나 패키지 제품을 사용할 경우에는, MySQL의 $MYSQL_HOME/my.ini 설정 파일의 sql-mode에서 NO_AUTO_CREATE_USER 항목을 제거하면, PHP 프로그램을 수정하지 않더라도 오류가 발생하지 않는다. 단, MySQL은 재기동 하여야 한다.
    • 참고 문헌
  • vTiger로 로그인한 후 Settings -> System Details 메뉴에서 오류 발생시 다음과 같이 조치 한다.

    • 상세 에러 메시지
      XPath error in XPath.class.php:1823 In importFromString(): 
      XML error in given string on line 59 column 47. Reason:Invalid character
      

    Notice: Undefined index: /phpsysinfo1 in D:\OpenBiz\31_application\vtiger\modules\System\includes\XPath.class.php on line 4023 XPath error in XPath.class.php:5903 The supplied xPath '/phpsysinfo/Vitals/Hostname' does not uniquely describe a node in the xml document. Not unique xpath-query, matched 0-times. 이하 생략

    - 원인
    - 조치
    - 참고 문헌
    - http://forums.vtiger.com/viewtopic.php?t=19328&highlight=xpath+error+xpath+class+php


CentOS에 vTiger 6.1.0 설치



vTiger 6.1.0 다운로드
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 19.0499992370605px; width: 853px;" |- | style="background-color: rgb(241, 241, 241);" | cd install
wget [http://jaist.dl.sourceforge.net/project/vtigercrm/vtiger CRM 6.1.0/Core Product/vtigercrm6.1.0.tar.gz
](http://jaist.dl.sourceforge.net/project/vtigercrm/vtiger%20CRM%206.1.0/Core%20Product/vtigercrm6.1.0.tar.gz)wget 
http://jaist.dl.sourceforge.net/project/vtigercrm/vtiger%20CRM%206.1.0/Core%20Product/vtigercrm6.1.0.tar.gz
|}

관리자 가이드



적용 라이센스

  • vTiger는 [[Mozilla Public License 1.1]], [GNU GPL License](GNU General Public License version 3.0.md) 중 하나의 라이센스를 취할 수 있는 듀얼 라이센스 이다.
  • 라이센스 공통 요소 설명
    • 상용 가능 : 상용 소프트웨어로 판매 가능
    • 결합 소스 공개 의무 : 결합된 소스를 공개해야 함
    • 특허 허용 : 특허와 같이 배포 가능
    • 버그 패치 의무 : 소프트웨어의 버그를 패치해야 하는 의무
    • 라이센스 전파 의무 : 수정 배포된 소프트웨어가 원 소프트웨어의 라이센스를 따라야 함

  • 2008년 10월 1일 ~ 2008년 10월 15일, Version 0.0.2
    {| cellspacing="1" cellpadding="1" border="1" width="100%" |- |width="20%" bgcolor="cyan" align="center" valign="middle"|라이센스 |width="32%" bgcolor="cyan" align="center" valign="middle"|적용 소프트웨어 |width="8%" bgcolor="cyan" align="center" valign="middle"|수정소스
    공개 |width="8%" bgcolor="cyan" align="center" valign="middle"|결합소스
    공개 |width="8%" bgcolor="cyan" align="center" valign="middle"|특허 |width="8%" bgcolor="cyan" align="center" valign="middle"|버그 패치 |width="8%" bgcolor="cyan" align="center" valign="middle"|라이센스
    전파 |width="8%" bgcolor="cyan" align="center" valign="middle"|라이센스
    양립성 |- |align="center" valign="middle"|vtiger Public License 1.1, [http://www.vtiger.kr/vtiger/LICENSE_AGREEMENT.txt 원본], MPL 1.1 기반 |align="left" valign="middle"|
  • vtiger CRM, [http://sourceforge.net/projects/vtigercrm/ 홈] : CRM
    |align="center" valign="middle"|공개 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|무상, LEGAL |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|  |- |align="center" valign="middle"|[GNU LGPL License](GNU Lesser General Public License 3.0.md) |align="left" valign="middle"|
  • nusoap, [http://sourceforge.net/projects/nusoap/ 홈]: SOAP Toolkit for PHP
  • PHPMailer, [http://sourceforge.net/projects/phpmailer/ 홈]
  • FCKeditor, [http://sourceforge.net/projects/fckeditor/ 홈]
  • Smarty Template Engine for PHP, [http://www.smarty.net/ 홈]
  • freetag (BSD, LGPL)
  • Image_Canvas
  • [[Graph]] / Image_Graph (For Linux)
  • log4php, [http://sourceforge.net/projects/log4php/ 홈]
  • jscalendar
  • tcpdf, [http://sourceforge.net/projects/tcpdf/ 홈] : PHP class for PDF
    |align="center" valign="middle"|공개 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|묵시적 무상 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|전파 |align="center" valign="middle"|  |- |align="center" valign="middle"|[GNU GPL License](GNU General Public License version 3.0.md) |align="left" valign="middle"|
  • [MySQL database](MySQL 5.0.51.md), [http://www.mysql.com/ 홈]
  • [[gdwin32]] / gd 2.0.28(for Linux)
  • phpSysinfo, [http://sourceforge.net/projects/phpsysinfo/ 홈]
  • MagpieRSS, [http://sourceforge.net/projects/magpierss/ 홈]
  • Mailfeed
  • NOCC scripts, [http://sourceforge.net/projects/nocc/ 홈]
    |align="center" valign="middle"|공개 |align="center" valign="middle"|공개 |align="center" valign="middle"|묵시적 무상 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|전파 |align="center" valign="middle"|  |- |align="center" valign="middle"|BSD license |align="left" valign="middle"|
  • ADOdb, [http://sourceforge.net/projects/adodb/ 홈]
  • freetag (BSD, LGPL)
    |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|규정 없음 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|  |- |align="center" valign="middle"|[PHP License version 3.0](PHP License version 3.0.md), [http://www.opensource.org/licenses/php.php 원본] |align="left" valign="middle"|
  • [PHP](PHP 5.2.5.md)
  • Image_Color
    |align="center" valign="middle"|  |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|무상 아님 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|  |- |align="center" valign="middle"|[Apache License](Apache Software License 2.0.md) |align="left" valign="middle"|
  • [Apache Web server](Apache HTTP Server 2.2.8.md)
    |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|무상 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|  |- |align="center" valign="middle"|SugarCRM Public License 1.1.2, [http://www.vtiger.kr/vtiger/license.txt 원본], MPL 1.1 기반 |align="left" valign="middle"|
  • SugarCRM
    |align="center" valign="middle"|공개 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|무상, LEGAL |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|  |- |align="center" valign="middle"|[MIT Style license](MIT license.md) |align="left" valign="middle"|
  • script.oculo.us scripts
    |align="center" valign="middle"|  |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|무상 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|  |- |align="center" valign="middle"|Mozilla Public License 1.1 |align="left" valign="middle"|  |align="center" valign="middle"|공개 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|무상, LEGAL |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|의무 없음 |align="center" valign="middle"|  |}
  • 참조 : 오픈소스 라이센스 분류
  • 참조 : 오픈 소스 라이센스에 대한 요약
  • 라이센스에 대한 판단은 본인의 책임(확인) 하에 적용하여야 한다.


로그 생성

  • $VTIGER_HOME/log4php.properties에서 다음과 같은 설정을 변경한다.
    • moce : DEBUG, INFO, FATAL
      log4php.rootLogger=INFO,A1


JOSSO 적용

  • Session 정보

    $_SESSION["authenticated_user_id"]("authenticated_user_id".md)
    $_SESSION["app_unique_key"]("app_unique_key".md)

  • index.php

    $use_current_login = false;
    $action=="Authenticate" && $module=="Users"
    $_REQUEST['action']('action'.md) == 'Login', 'Logout'
    
    session_destroy();

  • modules/Users/Authenticate.php

    //--- 사용자 아이디와 암호로 로그인 한다.
    $focus = new Users();
    $focus->column_fields["user_name"] = to_html($_REQUEST['user_name']('user_name'.md));
    $user_password = vtlib_purify($_REQUEST['user_password']('user_password'.md));
    $focus->'''load_user'''($user_password);
    
    if($focus->is_authenticated()) {
      //--- 로그인 되었을 경우 처리를 한다.
    } else {
      //--- 로그인 되지 않았을 경우 처리를 한다.
    }

  • modules/Users/Users.php

    //--- 사용자 아이디와 암호로 로그인을 하는 모듈에서
    //--- 사용자만 있으면 암호에 상관없이 로그인이 되도록 수정 한다.
    function doLogin($user_password) {
       //--- JOSSO: $query = "SELECT * from $this->table_name where user_name=? AND user_password=?";
       //--- JOSSO: $result = $this->db->requirePsSingleResult($query, array($usr_name, $encrypted_password), false);
       $query = "SELECT * from $this->table_name where user_name=?";
       $result = $this->db->requirePsSingleResult($query, array($usr_name), false);
    }

  • 로그인용 form



vTiger 아키텍처


vTiger의 소스를 분석하여 vTiger 아키텍처를 이해한다.


프로그램 입력


프로그램 상태

  • $_SESSION
    • authenticated_user_id
    • authenticated_user_language
    • vtiger_authenticated_user_theme
    • app_unique_key
    • internal_mailer
    • lastpage
    • administrator_error
  • $_SERVER
    • REQUEST_URI
    • argv


프로그램 출력

  • require_once('phpversionfail.php') : PHP 버전이 5.0 이하일 경우
  • require_once('include/utils/utils.php') : 공통 모듈
    • require_once('include/database/PearDatabase.php');
    • require_once('include/ComboUtil.php'); //new
    • require_once('include/utils/ListViewUtils.php');
    • require_once('include/utils/EditViewUtils.php');
    • require_once('include/utils/DetailViewUtils.php');
    • require_once('include/utils/CommonUtils.php');
    • require_once('include/utils/InventoryUtils.php');
    • require_once('include/utils/DeleteUtils.php');
    • require_once('include/utils/SearchUtils.php');
    • require_once('include/FormValidationUtil.php');
    • require_once("./themes/$file/config.php");
    • require_once("modules/$module/$module.php");
  • '''require_once('config.inc.php') : 설정 파일'''
  • '''require_once('config_override.php') : 설정 파일'''
  • require_once('include/logging.php') : 로깅
  • require_once('modules/Users/Users.php') : 사용자 정보
  • include ('include/utils/export.php') : action == "Export"일 경우
  • include ('include/utils/ExportAjax.php') : action == "ExportAjax"일 경우
  • require_once('user_privileges/audit_trail.php') : Audit
  • require_once("modules/$currentModule/Activity.php") : module == "Calendar"일 경우
  • '''require_once("modules/$currentModule/$currentModule.php") : 설정 파일'''
  • include('themes/'.$theme.'/header.php') : 테마
  • include('themes/'.$theme.'/loginheader.php') : 테마
  • require_once('include/utils/UserInfoUtil.php') : 보안
    • require_once('include/database/PearDatabase.php');
    • require_once('include/database/Postgres8.php');
    • require_once('include/utils/utils.php');
    • require_once('include/utils/GetUserGroups.php');
    • include('config.php');
      • include('config.inc.php');
  • include($currentModuleFile)
  • include('themes/'.$theme.'/footer.php') : 테마


테마

  • $_SESSION'vtiger_authenticated_user_theme'
  • @include("themes/$theme/language/$current_language.lang.php");
  • require_once("./themes/$file/config.php");
  • @include("./themes/$theme/config.php");
  • include('themes/'.$theme.'/header.php');
  • include('themes/'.$theme.'/loginheader.php');
  • include('themes/'.$theme.'/footer.php');


다국어 지원

  • @include("themes/$theme/language/$current_language.lang.php");
  • @include("include/language/$language.lang.php");
  • require("include/language/$default_language.lang.php");
  • @include("modules/$module/language/$language.lang.php");
  • require("modules/$module/language/$default_language.lang.php");


보안/권한



vTiger 5.2.2 한글팩


  • vi config.inc.php
    $default_language = 'ko_kr';

  • vTiger522_Lang_kokr.zip 구조
    • vi packdata.xml
      
      
      Korean
      5.2.2
      2011-05-01 09:00:00
      pnuskgh
      ko_kr
      0
      UTF-8
      MPL1.1
      
    • vi manifest.xml
      
      
      language
      Korean
      
      ko_kr
      5.2.2
      UTF-8
      2011-05-01 09:00:00
      pnuskgh
      MPL1.1
      
       5.2.2
       5.*
      
      
    • include/
      :js/ko_kr.lang.js :language/ko_kr.lang.php
    • modules/모듈명/language/ko_kr.lang.php

  • Language 정보가 저장된 테이블
    • vtiger_language, vtiger_language_seq


vTiger 한글팩




vTiger 한글화 프로젝트


구축형 오픈소스 CRM인 [http://www.vtiger.com/ vTiger]에서 [한글화 프로젝트](http://forge.vtiger.com/projects/korealang/)를 시작 한다. 오픈소스 프로젝트를 진행하는 것은 처음인데 향후 오픈소스 프로젝트를 진행하려는 이에게 참고가 될 수 있도록 그 진행 사항을 기록으로 남긴다. 아래 정리되는 사항은 오픈소스 vTiger 한글화 프로젝트를 개설하였을 때 vtiger에서 기본으로 제공하는 서비스 이다.
- 사용자/개발자 커뮤니티 서비스

- [vTiger 한글화 프로젝트 페이지](http://forge.vtiger.com/projects/korealang/) : vtiger에서 제공하는 공식 프로젝트 페이지
- [vTiger 한글화 프로젝트 홈페이지](http://korealang.forge.vtiger.com/) : 프로젝트의 홈페이지로 SSH2로 접속하여 관리가 가능함
- SSH 서버 : korealang.forge.vtiger.com
- 프로젝트 디렉토리 : /home/groups/korealang
- [메일링 리스트](http://forge.vtiger.com/tracker/?group_id=177)
- korealang-commits@lists.forge.vtiger.com
- List  : [http://lists.forge.vtiger.com/cgi-bin/mailman/listinfo/korealang-commits](http://lists.forge.vtiger.com/cgi-bin/mailman/listinfo/korealang-commits)
- Admin : [http://lists.forge.vtiger.com/cgi-bin/mailman/admin/korealang-commits](http://lists.forge.vtiger.com/cgi-bin/mailman/admin/korealang-commits)
- [게시판](http://forge.vtiger.com/forum/?group_id=177)
- [뉴스](http://forge.vtiger.com/news/?group_id=177)
- [문서](http://forge.vtiger.com/docman/?group_id=177)
- [다운로드](http://forge.vtiger.com/frs/?group_id=177)
- 익명 저장 공간 : [ftp://korealang.forge.vtiger.com/pub/korealang/](Ftp:ftp://korealang.forge.vtiger.com/pub/korealang/.md)

- 개발자를 위한 커뮤니티 서비스

- [하위 프로젝트](http://forge.vtiger.com/pm/?group_id=177) : 각 담당자별로 작업을 할당할 수 있음
- [Subversion](http://forge.vtiger.com/scm/?group_id=177) : 프로젝트의 소스 관리
- svn checkout [svn://svn.forge.vtiger.com/svnroot/korealang](Svn:svn://svn.forge.vtiger.com/svnroot/korealang.md)
- svn checkout svn+[ssh://developername@svn.forge.vtiger.com/svnroot/korealang](Ssh:ssh://developername@svn.forge.vtiger.com/svnroot/korealang.md)
- [둘러보기](http://forge.vtiger.com/plugins/scmsvn/viewcvs.php/?root=korealang)
- 참고 문헌 : [TortoiseSVN을 사용한 SVN Checkout/Update/Commit](http://www.jopenbusiness.com/mediawiki/index.php/TortoiseSVN.md#SVN_Checkout.2FUpdate.2FCommit)
- [문제점 추적](http://forge.vtiger.com/tracker/?group_id=177)
- [설문 조사](http://forge.vtiger.com/survey/?group_id=177)


한글팩 구조


- 디렉토리 구조

- '''아래 파일은 모두 UTF-8로 인코딩되어 있으므로 문자셋을 맞추어 편집 한다.'''
- $default_language은 "en_us"이므로 해당 파일을 복사하여 "ko_kr" 파일을 작성한다.

- $VTIGER_HOME/themes/$theme/language/$current_language.lang.php (ko_kr.lang.php 파일 작성)
- $VTIGER_HOME/include/language/$language.lang.php (ko_kr.lang.php 파일 작성)
- $VTIGER_HOME/include/language/$default_language.lang.php (en_us.lang.php)
- $VTIGER_HOME/modules/$module/language/$language.lang.php (ko_kr.lang.php 파일 작성)
- $VTIGER_HOME/modules/$module/language/$default_language.lang.php (en_us.lang.php)

- ADOdb (BSD license)
- $VTIGER_HOME/adodb/lang/adodb-ko.inc.php

- jscalendar (GNU GPL License)
- $VTIGER_HOME/jscalendar/lang/calendar-ko.js (이미 있어서 생략)
- $VTIGER_HOME/jscalendar/lang/calendar-ko-utf8.js (이미 있어서 생략)

- FCKeditor (GNU GPL License)
- $VTIGER_HOME/include/fckeditor/editor/plugins/placeholder/lang/ko.js

- tcpdf (GNU LGPL License)
- $VTIGER_HOME/include/tcpdf/config/lang/kor.php
- $VTIGER_HOME/include/tcpdf/doc/com.tecnick.tcpdf/_tcpdf_config_lang_kor_php.html



- PHPMailer (GUN GPL License)
- $VTIGER_HOME/cron/language/phpmailer.lang-ko.php

- $VTIGER_HOME/include/js/ko_kr.lang.js


한글팩 관련 설정


- $VTIGER_HOME/config.inc.php

- $default_charset = 'UTF-8'; <-- ISO-8859-1
- $languages = Array('ko_kr'=>'Korea','en_us'=>'US English',);


vTiger 6.1.0 한글화





languages/ko_KR/ 파일 생성

문제 해결




참고 문헌



- [vTiger 한글화 프로젝트](http://forge.vtiger.com/projects/korealang/)
- [윈도우용 설치 가이드](http://wiki.vtiger.com/index.php/Vtiger_CRM_5.0.4_-_Installation_Manual_for_Windows)
- [vtiger CRM v5.x User and Administration Manual](http://www.vtiger-handbuch.de/DocBooks/manual1504/index.html)
- [요즘 하는 일!? 오픈소스 제품 수정](http://neojjang.egloos.com/1770722) : vTiger의 PDF 변환기의 한글 문제
- [https://sites.google.com/a/ibinfo.co.kr/ibinfo/tip/opeunsoseusugarcrmguchughagi](https://sites.google.com/a/ibinfo.co.kr/ibinfo/tip/opeunsoseusugarcrmguchughagi)



지원 업체


{{지원업체}} [[Category:CRM|Category:CRM]]
[[Category:Cloud|Category:Cloud]]
분류: WebSite

공유하기