Hướng dẫn cài đặt Vtiger CRM lên VPS/Cloud Server cài đặt Debian Linux. Yêu cầu phía server phải cài đặt PHP 5.4 ÷ 5.6 do Vtiger CRM vẫn chưa hỗ trợ PHP 7.

Nếu chưa cài đặt máy chủ, hãy tham khảo Hướng dẫn cài đặt LAMP trên Debian Linux. Lưu ý cài đặt phiên bản PHP 5.

Cấu hình PHP

Tạo file vtigercrm.ini tại /etc/php/5.6/mods-available để thiết lập những cấu hình PHP cần thiết cho việc cài đặt Vtiger CRM .

display_errors = On
max_execution_time = 0
memory_limit = 512m
post_max_size = 40m
upload_max_filesize = 40m
error_reporting = E_WARNING & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
log_errors = Off
short_open_tag = Off
session.gc_maxlifetime = 86400

Khởi động lại Web Server để cập nhật cấu hình mới.

$ sudo phpenmod vtigercrm
$ sudo systemctl restart apache2

Tạo database cho Vtiger CRM

Ở đây tôi sử dụng lệnh mysql trong gói MySQL client. Tất nhiên bạn có thể sử dụng PHPMyAdmin để thực hiện công việc này.

$ mysql -u root -p

Tạo một database có tên vtiger_crm_db và phân quyền cho một user mới tên là vtiger có password là P4$$w0rD như sau:

CREATE DATABASE `vtiger_crm_db` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'vtiger'@'localhost' IDENTIFIED BY 'P4$$w0rD';
GRANT ALL PRIVILEGES ON `vtiger_crm_db`.* TO 'vtiger'@'localhost';

Tạo một VirtualHost cho CRM

Giả sử bạn định cài đặt lên tên miền crm.example.com, có web root tại /var/www/crm.

$ sudo mkdir -p /var/www/crm
$ sudo chown -R www-data:www-data /var/www/crm

Tạo VirtualHost cho tên miền crm.example.com như sau:

/etc/apache2/sites-available/crm.conf

<VirtualHost *:80>
    ServerName crm.example.com
    ServerAdmin admin@icreativ.pro
    DocumentRoot /var/www/crm

    <Directory /var/www/crm>
        Options -Indexes
        php_admin_flag engine On
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Kích hoạt cấu hình mới

$ sudo a2ensite crm
$ sudo systemctl reload apache2

Cài đặt chứng chỉ SSL của Let’s Encrypt.

$ sudo certbot --apache -d crm.example.com

Tải mã nguồn Vtiger CRM

Tải Vtiger CRM tại SourceForge. Ví dụ sau sẽ tải về phiên bản 6.5.0.

$ cd /var/www/crm
$ wget https://excellmedia.dl.sourceforge.net/project/vtigercrm/vtiger%20CRM%206.5.0/Core%20Product/vtigercrm6.5.0.tar.gz
$ tar xf vtigercrm6.5.0.tar.gz
$ rm -f vtigercrm6.5.0.tar.gz

Cài đặt Vtiger CRM

Truy cập https://crm.example.com để bắt đầu cài đặt.

Cấu hình để không phụ thuộc vào tên miền

Tôi muốn CRM của mình có thể truy cập bằng nhiều tên miền, thậm chí có path hoặc không. Đây có thể là một yêu cầu ngớ ngẩn nhưng với tôi lại có nhiều ứng dụng hay ho.

Chỉnh sửa file config.inc.php, tìm đến đoạn khai báo biến $site_URL$root_directory rồi thay thế bằng đoạn mã sau:

// $site_URL = 'https://crm.example.com/';
function vt_get_site_url() {
    $s = &$_SERVER;
    $ssl = (!empty($s['HTTPS']) && $s['HTTPS'] == 'on') ? true : false;
    $sp = strtolower($s['SERVER_PROTOCOL']);
    $protocol = substr($sp, 0, strpos($sp, '/')) . (($ssl) ? 's' : '');
    $port = $s['SERVER_PORT'];
    $port = ((!$ssl && $port == '80') || ($ssl && $port == '443')) ? '' : ':'.$port;
    $host = isset($s['HTTP_X_FORWARDED_HOST']) ? $s['HTTP_X_FORWARDED_HOST'] : (isset($s['HTTP_HOST']) ? $s['HTTP_HOST'] : null);
    $host = isset($host) ? $host : $s['SERVER_NAME'] . $port;
    $request = $s['REQUEST_URI'];
    $segments = explode('?', $request, 2); // remove query string
    $info = pathinfo($segments[0]);
    $path = $info['extension'] == 'php'
            ? str_replace( array( '/', '\\' ), '/', $info['dirname'] )
            : $segments[0];
    $path = rtrim($path, '/') . '/'; // append a trailing slash
    return $protocol . '://' . $host . $path;
}
$site_URL = vt_get_site_url();

// $root_directory = '/home/vtigercrm/public_html/';
$root_directory = __DIR__ . '/';