Hướng dẫn cài đặt CS-CART trên Linux VPS

Để dễ dàng hơn, hãy nhập domain của bạn vào bên dưới.

Domain

Lưu ý: bài viết dưới được thực hiện trên hệ thống Ubuntu 18.04 + Webinoly. Xem Hướng dẫn cài đặt Webinoly trên server.
Công cụ hỗ trợ: Mobaxterm ( vì mình không quen với dòng lệnh nên sử dụng cái này cho dễ.

1. Tạo website

sudo site =aznet.io= -php
sudo site =aznet.io= -ssl=on

Trên là lệnh tạo website của Webinoly. Bạn sẽ cần sử dụng lênh tạo web site phù hợp nếu bạn dùng Easyengine, Centminmod…

2. Tạo file cấu hình Nginx cho cs-cart

Truy cập thư mục /var/www/=aznet.io=/
Tạo file cscart-nginx.conf (cùng cấp với htdocs) với nội dung:

    #   Default encoding
    charset utf-8;

    ############################################################################

    #   Compression
    gzip on;
    gzip_disable "msie6";
    gzip_comp_level 6;
    gzip_min_length  1100;
    gzip_buffers 16 8k;
    gzip_proxied any;
    gzip_types text/plain application/xml
    application/javascript
    text/css
    text/js
    text/xml
    application/x-javascript
    text/javascript
    application/json
    application/xml+rss;

    ############################################################################

    #   Other settings
    client_max_body_size            100m;
    client_body_buffer_size         128k;
    client_header_timeout           3m;
    client_body_timeout             3m;
    send_timeout                    3m;
    client_header_buffer_size       1k;
    large_client_header_buffers     4 16k;

    ############################################################################

    access_log  /var/log/nginx/=aznet.io=_access.log combined;
    error_log   /var/log/nginx/=aznet.io=_error.log;

    ############################################################################

    error_page 598 = @backend;

    ############################################################################

    location @backend {
        try_files $uri $uri/ /$2$3 /$3 /index.php  =404;
        #   The path to the PHP-FPM daemon socket
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        #
        fastcgi_index index.php;
        fastcgi_read_timeout 360;
        # Including the contents of fastcgi_params.conf
        ################################################################################
        fastcgi_param  QUERY_STRING       $query_string;
        fastcgi_param  REQUEST_METHOD     $request_method;
        fastcgi_param  CONTENT_TYPE       $content_type;
        fastcgi_param  CONTENT_LENGTH     $content_length;
        fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
        fastcgi_param  REQUEST_URI        $request_uri;
        fastcgi_param  DOCUMENT_URI       $document_uri;
        fastcgi_param  DOCUMENT_ROOT      $document_root;
        fastcgi_param  SERVER_PROTOCOL    $server_protocol;
        fastcgi_param  HTTPS              $https if_not_empty;
        fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
        fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
        fastcgi_param  REMOTE_ADDR        $remote_addr;
        fastcgi_param  REMOTE_PORT        $remote_port;
        fastcgi_param  SERVER_ADDR        $server_addr;
        fastcgi_param  SERVER_PORT        $server_port;
        fastcgi_param  SERVER_NAME        $server_name;
        fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param  REDIRECT_STATUS    200;
        ################################################################################
    }

    ############################################################################

#    location  / {
#        try_files $uri $uri/ /index.php?$args;
#    }

    ############################################################################

    location ~ ^/(\w+/)?(\w+/)?api/ {
        rewrite ^/(\w+/)?(\w+/)?api/(.*)$ /api.php?_d=$3&ajax_custom=1&$args last;
        rewrite_log off;
    }

    ############################################################################

    location ~ ^/(\w+/)?(\w+/)?var/database/ {
        return 404;
    }

    location ~ ^/(\w+/)?(\w+/)?var/backups/ {
        return 404;
    }

    location ~ ^/(\w+/)?(\w+/)?var/restore/ {
        return 404;
    }

    location ~ ^/(\w+/)?(\w+/)?var/themes_repository/ {
        allow all;
        location ~* \.(tpl|php.?)$ {
            return 404;
        }
    }

    location ~ ^/(\w+/)?(\w+/)?var/ {
        return 404;
        location ~* /(\w+/)?(\w+/)?(.+\.(js|css|png|jpe?g|gz|yml|xml))$ {
            try_files $uri $uri/ /$2$3 /$3 /index.php?$args;
            allow all;
            access_log off;
            expires 1M;
            add_header Cache-Control public;
            add_header Access-Control-Allow-Origin *;
        }
    }

    ############################################################################

    location ~ ^/(\w+/)?(\w+/)?app/payments/ {
        return 404;
        location ~ \.php$ {
            return 598;
        }
    }

    location ~ ^/(\w+/)?(\w+/)?app/addons/rus_exim_1c/ {
        return 404;
        location ~ \.php$ {
            return 598;
        }
    }

    location ~ ^/(\w+/)?(\w+/)?app/ {
        return 404;
    }

    ############################################################################

    location ~ ^/(favicon|apple-touch-icon|homescreen-|firefox-icon-|coast-icon-|mstile-).*\.(png|ico)$  {
        access_log off;
        try_files $uri =404;
        expires max;
        add_header Access-Control-Allow-Origin *;
        add_header Cache-Control public;
    }

    location ~* /(\w+/)?(\w+/)?(.+\.(jpe?g|jpg|ico|gif|png|css|js|pdf|txt|tar|woff|svg|ttf|eot|csv|zip|xml|yml))$ {
        access_log off;
        try_files $uri $uri/ /$2$3 /$3 /index.php?$args;
        expires max;
        add_header Access-Control-Allow-Origin *;
        add_header Cache-Control public;
    }

    ############################################################################

    location ~ ^/(\w+/)?(\w+/)?design/ {
        allow all;
        location ~* \.(tpl|php.?)$ {
            return 404;
        }
    }

    ############################################################################

    location ~ ^/(\w+/)?(\w+/)?images/ {
        allow all;
        location ~* \.(php.?)$ {
            return 404;
        }
    }

    ############################################################################

    location ~ ^/(\w+/)?(\w+/)?js/ {
        allow all;
        location ~* \.(php.?)$ {
            return 404;
        }
    }

    ############################################################################

    location ~ ^/(\w+/)?(\w+/)?init.php {
        return 404;
    }

    location ~* \.(tpl.?)$ {
        return 404;
    }

    location ~ /\.(ht|git) {
        return 404;
    }

    location ~* \.php$ {
        return 598 ;
    }


Có thể thấy nội dung mã trên đã lược bớt (vô hiệu hóa) đi một số doạn so với bản gốc tại How To: Install CS-Cart on a Server with Nginx and *nix OS — CS-Cart 4.12.x documentation (bước 1.6). Lý do là mình đã tạo một file cấu hình tùy chỉnh, và giữ nguyên file cấu hình mặc định trong /etc/nginx/sites-available/ vì vậy sẽ có một số đoạn trùng nhau.

Để kiểm tra file cấu hình không có lỗi, chạy lệnh
nginx -t
Để hệ thống nhận file cấu hình, chạy:
nginx -s reload

3. Tải code lên VPS

Tải mã nguồn CS-CART lên thư mục htdocs

Nên nén lại mã nguồn với phần mở rộng .zip, sao cho khi bung nén tất cả các mục (app, design…) có folder gốc là htdocs (nén lại để tải lên cho nhanh)

Xem thêm: CS Cart Multi-Vendor Ultimate

Chuyển đến thư mục /htdocs
cd /var/www/=aznet.io=/htdocs/
Giải nén tệp vừa tải lên với lệnh
unzip file_name.zip
Khi quá trình giải nén hoàn tất, lần lượt chạy các lệnh sau:

chmod 644 config.local.php
chmod -R 755 design images var
find design -type f -print0 | xargs -0 chmod 644
find images -type f -print0 | xargs -0 chmod 644
find var -type f -print0 | xargs -0 chmod 644
chown -R www-data:www-data .

4. Tạo cơ sở dữ liệu

  • Mở phpMyAdmin trong trình duyệt của bạn.
  • Chuyển sang tab Cơ sở dữ liệu
  • Nhập tên cơ sở dữ liệu của bạn.
  • Nhấn Tạo

Lưu ý, nghi nhớ thông tin database để sử dụng cho phần cài đặt

5. Cài đặt CS-CART

Truy cập vào tên miền cửa hàng của bạn. Bạn sẽ thấy thông báo rằng CS-Cart chưa được cài đặt. Hãy sửa lỗi này bằng cách nhấp vào liên kết [install] .

Mở trang chính của cửa hàng của chúng tôi trong một trình duyệt.
Bây giờ hãy điền thông tin vào tất cả các trường được yêu cầu nhé

6. Giấy phép

Bước tiếp theo là chọn chế độ cấp phép của bạn. Bạn có 2 lựa chọn:

  • Nhập số giấy phép của bạn để bật Chế độ đầy đủ , cung cấp cho bạn quyền truy cập không hạn chế vào tất cả các tính năng của CS-Cart, tức là hàng chục tiện ích bổ sung, nhiều ngôn ngữ và đơn vị tiền tệ, số lượng bộ lọc sản phẩm không giới hạn trên cửa hàng và hơn thế nữa. Bạn có thể mua giấy phép bất kỳ lúc nào.

Bạn có thể nhập số giấy phép CS-Cart hoặc CS-Cart Ultimate của mình vào trường này.

  • Nếu bạn chưa có giấy phép, Cs-cart cung cấp bản dùng thử 30 ngày miễn phí với toàn quyền truy cập vào tất cả các tính năng của CS-Cart. Sau khi kết thúc thời gian dùng thử, bạn cần nhập số giấy phép để tiếp tục quản lý cửa hàng của mình.

Nhập số giấy phép CS-Cart của bạn hoặc dùng thử 30 ngày.

Đối với các phiên bản CS-CART được download từ Aznet.io, hãy chọn chế độ Full và nhập bất kỳ đoạn ký tự nào bạn thích, ngoại trừ XXXX-XXXX-XXXX-XXXX

Khi bạn chọn chế độ cấp phép, cửa hàng trực tuyến của bạn đã hoàn tất! Giờ đây, bạn có thể đi tới Cửa hàng để xem cửa hàng của mình hoặc vào Bảng quản trị để quản lý cửa hàng .