Vtiger

오픈소스 비즈니스 컨설팅
둘러보기로 가기 검색하러 가기

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

  • 플랫폼 : Windows, Unix, Linux, Mac OS


설치 가이드

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

설치전 사전 준비 사항

vtiger 설치

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

###-----------------------------------------------
### vtiger 설정, Document Root가 d:/www 일 경우
Alias   /vtiger    d:/www/vtiger
<Directory "/vtiger">
    Order allow,deny
    Allow from all
</Directory>


  • 다운로드한 파일의 압축을 풀어 "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
설치 시작
  • 화면이 표시되지 않을 경우에는 vtiger가 디렉토리가 ReadOnly로 설정되어 있는지 확인하여 ReadOnly를 제거한 후 Apache HTTP Server를 재기동 한다.


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


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


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


  • 접속 정보를 설정하고 "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
  • Password : xxxxxxxx
  • Email : info@jopenbusiness.com
접속 정보 설정
  • Host Name에 localhost를 사용하여 "Unable to connect to database Server. Invalid mySQL Connection Parameters specified" 오류가 발생할 경우, 127.0.0.1 을 사용 한다.


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


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


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


설치 후 오류 수정

  • MySQL의 레코드 등록 시 "Record you are trying to access is not found. Go Back." 오류가 발생할 경우에 다음과 같이 조치 한다.
  • 상세 에러 메시지
09/22/08 07:48:40,515 [1096] 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]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: /phpsysinfo[1] 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.
이하 생략
  • 원인
  • 조치
  • 참고 문헌

CentOS에 vTiger 6.1.0 설치

vTiger 6.1.0 다운로드

cd install
wget http://jaist.dl.sourceforge.net/project/vtigercrm/vtiger CRM 6.1.0/Core Product/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

관리자 가이드

적용 라이센스

  • 라이센스 공통 요소 설명
  • 상용 가능 : 상용 소프트웨어로 판매 가능
  • 결합 소스 공개 의무 : 결합된 소스를 공개해야 함
  • 특허 허용 : 특허와 같이 배포 가능
  • 버그 패치 의무 : 소프트웨어의 버그를 패치해야 하는 의무
  • 라이센스 전파 의무 : 수정 배포된 소프트웨어가 원 소프트웨어의 라이센스를 따라야 함


  • 2008년 10월 1일 ~ 2008년 10월 15일, Version 0.0.2
라이센스 적용 소프트웨어 수정소스
공개
결합소스
공개
특허 버그 패치 라이센스
전파
라이센스
양립성
vtiger Public License 1.1, 원본, MPL 1.1 기반 공개 의무 없음 무상, LEGAL 의무 없음 의무 없음  
GNU LGPL License 공개 의무 없음 묵시적 무상 의무 없음 전파  
GNU GPL License 공개 공개 묵시적 무상 의무 없음 전파  
BSD license 의무 없음 의무 없음 규정 없음 의무 없음 의무 없음  
PHP License version 3.0, 원본   의무 없음 무상 아님 의무 없음 의무 없음  
Apache License 의무 없음 의무 없음 무상 의무 없음 의무 없음  
SugarCRM Public License 1.1.2, 원본, MPL 1.1 기반 공개 의무 없음 무상, LEGAL 의무 없음 의무 없음  
MIT Style license   의무 없음 무상 의무 없음 의무 없음  
Mozilla Public License 1.1   공개 의무 없음 무상, LEGAL 의무 없음 의무 없음  

로그 생성

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

JOSSO 적용

  • Session 정보
$_SESSION["authenticated_user_id"]
$_SESSION["app_unique_key"]
  • index.php
$use_current_login = false;
$action=="Authenticate" && $module=="Users"
$_REQUEST['action'] == 'Login', 'Logout'

session_destroy();
  • modules/Users/Authenticate.php
//--- 사용자 아이디와 암호로 로그인 한다.
$focus = new Users();
$focus->column_fields["user_name"] = to_html($_REQUEST['user_name']);
$user_password = vtlib_purify($_REQUEST['user_password']);
$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
<form name='theForm' method="post" action='index.php'>
  <input type='text' name='module' value='Users'></input>
  <input type='text' name='action' value='Authenticate'></input>
  <input type='text' name='return_module' value='Users'></input>
  <input type='text' name='return_action' value='Login'></input>
  <input type='text' name='user_name' value='아이디'></input>
  <input type='text' name='user_password' value='암호'></input>
  <input type='text' name='login_theme' value='softed'></input>
  <input type='text' name='login_language' value='ko-KR'></input>
  <input type='submit' name='btn' value=' 로그인 '></input>
</form>

vTiger 아키텍처

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

프로그램 입력

  • $_REQUEST, $_POST, $_GET
  • PHPSESSID
  • module, action, record, lang_crm
  • module=$module&action=$action&record=$record&lang_crm=$lang_crm
  • category
  • file
  • Cookie
  • setcookie('ck_login_id_vtiger', $_SESSION['authenticated_user_id']);
  • setcookie('ck_login_theme_vtiger', $_SESSION['vtiger_authenticated_user_theme']);
  • setcookie('ck_login_language_vtiger', $_SESSION['authenticated_user_language']);

프로그램 상태

  • $_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');
  • <link rel='stylesheet' type='text/css' href='themes/$theme/style.css'>
  • 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
<?xml version="1.0" encoding="UTF-8"?>
<languagepack>
  <name>Korean</name>
  <version>5.2.2</version>
  <creationDate>2011-05-01 09:00:00</creationDate>
  <author>pnuskgh</author>
  <prefix>ko_kr</prefix>
  <lockfor>0</lockfor>
  <encoding>UTF-8</encoding>
  <license>MPL1.1</license>
</languagepack>
  • vi manifest.xml
<?xml version="1.0"?>
<module>
  <type>language</type>
  <name>Korean</name>
  <label>Korean</label>
  <prefix>ko_kr</prefix>
  <version>5.2.2</version>
  <encoding>UTF-8</encoding>
  <creationDate>2011-05-01 09:00:00</creationDate>
  <author>pnuskgh</author>
  <license>MPL1.1</license>
  <dependencies>
    <vtiger_version>5.2.2</vtiger_version>
    <vtiger_max_version>5.*</vtiger_max_version>
  </dependencies>
</module>
  • 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인 vTiger에서 한글화 프로젝트를 시작 한다. 오픈소스 프로젝트를 진행하는 것은 처음인데 향후 오픈소스 프로젝트를 진행하려는 이에게 참고가 될 수 있도록 그 진행 사항을 기록으로 남긴다. 아래 정리되는 사항은 오픈소스 vTiger 한글화 프로젝트를 개설하였을 때 vtiger에서 기본으로 제공하는 서비스 이다.

  • 사용자/개발자 커뮤니티 서비스
  • SSH 서버 : korealang.forge.vtiger.com
  • 프로젝트 디렉토리 : /home/groups/korealang
  • 개발자를 위한 커뮤니티 서비스

한글팩 구조

  • 디렉토리 구조
  • 아래 파일은 모두 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/ 파일 생성

문제 해결

참고 문헌

지원 업체

SuiteCRM을 사용한 영업관리, 고객관리는 아래 담당자에게 연락하여 주시면, 빠르고 친절하게 전문적인 답변을 드리겠습니다.

영업 문의 sales@obcon.biz 010-4667-1106 영업 대표
기술 문의 tech@obcon.biz 구축/컨설팅 담당
고객 지원 support@obcon.biz 고객 지원 담당

OBCon 홈페이지 바로가기