Cài đặt EC-CUBE trên ubuntu 20.04

Ec-cube là gì?

EC-CUBE là mã nguồn mở CMS do Nhật Bản phát triển để giải quyết ấn đề về thương mại điện tử.

Ở đây là trang chủ của nó EC-CUBE được viết bằng ngôn ngữ PHP, tài liệu về EC-CUBE còn ít và đa phần là tiếng Nhật.

Hiện tại mình đang dùng phiên bản EC-CUBE version 4.0.5 để cài đặt trên ubuntu 20.04

Dưới đây là cách cài đặt eccube.

1. Yêu cầu hệ thống

  • Máy chủ web: nginx/1.14.0
  • PHP: PHP 7.x
  • Cơ sở dữ liệu: Mysql 5.7.x

2. Cài đặt LAMP

  • Cài đặt PHP
sudo apt install php7.2-fpm php7.2-mbstring php7.2-xmlrpc php7.2-soap php7.2-gd php7.2-xml php7.2-cli php7.2-zip  
  • Cài đặt PHP-FPM

Tiếp theo, tạo một nhóm php-fpm mới cho eccube phần này sẽ được cấu hình chi tiết phần cấu hình LAMP.

Php-fpm pool chỉ là một quy trình Linux thông thường chạy dưới một số user/group nhất định và lắng nghe trên Linux.

Vì vậy, đối với trang web mới của chúng ta, hãy tạo một tệp mới /etc/php5/fpm/pool.d/eccube.conf.

[eccube]
user = eccube  
group = www-data  
listen = /var/run/php7.2-fpm-eccube.sock  
listen.owner = eccube  
listen.group = www-data  
php_admin_value[disable_functions] = exec,passthru,shell_exec,system  
php_admin_flag[allow_url_fopen] = off  
pm = dynamic  
pm.max_children = 5  
pm.start_servers = 2  
pm.min_spare_servers = 1  
pm.max_spare_servers = 3  
chdir = /  
  • Cài đặt Nginx
sudo apt install nginx  

Liệt kê các cấu hình ứng dụng mà ufw đang làm việc:

sudo ufw app list  

Liệt kê đầu ra, có ba cấu hình có sẵn cho Nginx:

  • Nginx Full: Cấu hình này mở cả cổng 80 (lưu lượng web bình thường, không được mã hóa) và cổng 443 (lưu lượng được mã hóa TLS / SSL)
  • Nginx HTTP: Cấu hình này chỉ mở cổng 80 (lưu lượng web bình thường, không được mã hóa)
  • Nginx HTTPS: Cấu hình này chỉ mở cổng 443 (lưu lượng được mã hóa TLS / SSL)

Bạn có thể kích hoạt tính năng Nginx trong ufw:

sudo ufw allow 'Nginx HTTP'  

Bạn có thể xác minh sự thay đổi trong ufw:

sudo ufw status  
  • Cài đặt Mysql
sudo apt install mysql-server  

Chạy tập lệnh bảo mật #sudo:

sudo mysql_secure_installation  

Mở Mysql bằng terminal:

mysql -u root -p  

Đăng nhập thành công vào mysql chứng tỏ chúng ta đã cài đặt xong.

  • Cấu hình LAMP

Bắt đầu tạo một người dùng mới có tên là eccube và cấu hình:

sudo adduser eccube  

Tiếp theo, các thư mục được tạo bởi người triển khai phải có quyền truy cập đọc-ghi thông qua máy chủ web Nginx. Thêm nhóm quyền www-data vào người dùng eccube bằng lệnh sau:

sudo usermod -aG www-data eccube  

Tiếp theo, bạn cần định cấu hình các quyền mặc định khi tạo tệp và thư mục mới với trình triển khai người dùng là 644 (tệp) và 755 (thư mục). Điều này giúp người triển khai có thể đọc và ghi tệp, trong khi các nhóm hoặc người dùng khác có thể đọc tệp đó. Thực hiện cấu hình này với lệnh umask = 022 như sau:

sudo chfn -o umask=022 eccube  

Mã nguồn tải lên máy chủ sẽ được lưu tại /var/www/html/app/ecbc, vì vậy chúng ta cần thay đổi quyền sở hữu thư mục cho người dùng eccube và nhóm người dùng nginx:

sudo chown eccube:www-data /var/www/html/app/ecbc  

Người dùng eccube cần có quyền chỉnh sửa tệp và thư mục trong /var/www/html/app/ecbc ngay cả khi được tạo sau này. Do đó, mọi tệp, thư mục và thư mục con được tạo trong thư mục đều thừa hưởng quyền của thư mục mẹ. Thực thi lệnh sau để đặt id nhóm cho thư mục:

sudo chmod g+s /var/www/html/app/ecbc  

Tải về ecube tại trang chủ Ec-cube vào thư mục /var/www/html/app/ecbc. Trên máy chủ đăng user eccube ta chuyển người root và tạo tệp cấu hình mới /home/ubuntu/etc/nginx/conf.d/eccube.conf:

server {  
    listen 80 default_server;
    listen [::]:80 default_server;
    root /var/www/html/app/ecbc;
    index index.php;
    server_name _;
    location / {
        #omdeny all;
        try_files $uri $uri/ /index.php?$args;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.2-fpm-eccube.sock;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
    }
}

3. Run Ec-Cube

Truy cập URL sau http://your_ip_address từ trình duyệt của bạn.

image

Trường hợp gặp lỗi "intl extension not enabled". Mở terminal chạy apt install php7.2-intl.

image

"Nhấn tiếp"

image

Nhập thông tin cửa hàng cơ bản. Sau khi nhập đầy đủ thông tin, hãy nhấp vào "Tiếp theo".

image

Nhập thông tin cơ sở dữ liệu. Sau khi nhập đầy đủ thông tin, hãy nhấp vào "Tiếp theo".

image

Đăng ký dữ liệu ban đầu trong cơ sở dữ liệu. "Nhấn tiếp"

image

Xin chúc mừng!
Cài đặt hoàn tất khi màn hình này hiển thị.

4. Một số lưu ý khi cài đặt:

  • MN nhớ config trong file .env:

    • APP_ENV=dev: chuyển sang môi trường dev thì mới chạy được lệnh bin/console server:run
    • APP_DEBUG=1: Bật chế độ debug, khi app có lỗi thì nó sẽ thông báo ra màn hình.
    • Mặc định của eccube là sqlite, nên để chuyển sang hệ quản thị cơ sở dữ liệu tùy thích thì mình phải cấu hình thêm.

Related article