Quá trình cài đặt Magento 2.4 với LEMP Stack trên Ubuntu 20.04 sẽ mất chưa đến 10 phút để hoàn thành.

Magento là một trong những nền tảng Thương mại điện tử nguồn mở phổ biến nhất hiện có, nhờ khả năng tùy chỉnh và tính linh hoạt của nó. Nó được tạo bằng cách sử dụng Zend Framework và sử dụng MySQL làm hệ thống quản lý cơ sở dữ liệu của nó. Magento cung cấp cho những người bán hàng trực tuyến một cửa hàng rất linh hoạt và đi kèm với một bộ tính năng phong phú, làm cho nó trở thành một lựa chọn tuyệt vời cho các doanh nghiệp muốn thiết lập một điểm dừng trực tuyến mà không gặp rắc rối.

Điều kiện tiên quyết

Do từ bản magento 2.4 trở lên sẽ bắt buộc phải sử dụng elasticsearch thế nên dể sử dụng magento 2.4 cần có 1 server tầm trung.

VPS Ubuntu 20.04 với quyền truy cập root

  • 4GB RAM trở lên
  • Nginx
  • MariaDB 10.4
  • Elasticsearch 7.6.x vì Magento 2.4 được thử nghiệm với phiên bản này

Yêu cầu PHP 7.4 với các phần mở rộng (extension) bcmath, ctype, curl, dom, gd, hash, iconv, intl, libxml, mbstring, openssl, pdo_mysql, simplexml, soap, xsl và zip được bật.

Ngoài ra, vì lý do hiệu suất, bạn nên cài đặt và bật extension opcache.

Tên miền hợp lệ để truy cập trang web Magento 2. Ngoài ra, cần có chứng chỉ SSL hợp lệ để truy cập trang web bằng HTTPS. Ở bài viết này mình sẽ sử dụng SSL Certificate Let’s encrypt

Nếu bạn chưa thiết lập LEMP stack (Nginx, MariaDB, PHP), Mình cũng sẽ trình bày cách cài đặt chúng trong hướng dẫn này.

Đầu tiên, chúng ta sẽ cần đăng nhập vào máy chủ của mình bằng SSH. Bạn có thể làm điều đó bằng cách nhập lệnh sau:

ssh root@IP_Address -p Port_number

Đơn giản hơn mình hay dùng là sử dụng Bitvise Client để kết nối SSH.

Sau khi đăng nhập, bạn nên cập nhật tất cả các gói hệ điều hành Ubuntu của mình lên phiên bản mới nhất hiện có.

apt-get update
apt-get upgrade

Khi tất cả các gói hệ điều hành đều được cập nhật, hãy khởi động lại máy chủ của bạn nếu được yêu cầu để áp dụng bất kỳ thay đổi cấu hình mới nào.

Cài đặt LEMP và Elasticsearch

LEMP là từ viết tắt mô tả hệ điều hành Linux với Nginx, MySQL (hoặc MariaDB) và PHP.

Cài đặt Nginx

Nếu bạn có máy chủ web Apache được cài đặt trên máy chủ, hãy dừng Apache và tắt dịch vụ này khỏi bắt đầu khi khởi động máy chủ:

systemctl stop apache2
systemctl disable apache2

Cài đặt Nginx bằng lệnh sau:

apt-get install nginx

Cài đặt MySQL

Tiếp theo, mình sẽ cài đặt máy chủ cơ sở dữ liệu MySQL, được sử dụng để lưu trữ dữ liệu của Magento, chẳng hạn như sản phẩm, danh mục, khách hàng và đơn đặt hàng. Bạn cũng có thể sử dụng Mysql server. Ở đây chỉ là mình thích dùng mariaDB.

Để cài đặt máy chủ cơ sở dữ liệu MariaDB, hãy nhập các lệnh sau:

apt-get install software-properties-common

Chúng ta cần thêm Key để thêm kho lưu trữ MariaDB.

apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

Bây giờ hãy cài đặt kho lưu trữ:

add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.lstn.net/mariadb/repo/10.4/ubuntu bionic main'

Cập nhật kho lưu trữ APT của bạn để danh sách gói được đọc.

apt update

Cuối cùng, chúng ta có thể cài đặt MariaDB.

apt install mariadb-server

Sau khi cài đặt MariaDB, hãy kích hoạt dịch vụ MariaDB khi khởi động máy chủ:

systemctl enable mariadb.service

Kiểm tra trạng thái của dịch vụ MariaDB:

systemctl status mariadb.service

Cài đặt Elasticsearch

Chuyển sang thư mục nơi bạn có thể tải xuống tệp tạm thời.

cd /opt

Hãy tải xuống gói Elasticsearch.

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.1-amd64.deb

Cài đặt:

dpkg -i elasticsearch-7.6.1-amd64.deb

Bắt đầu dịch vụ Elasticsearch:

systemctl start elasticsearch

Kiểm tra trạng thái:

systemctl status elasticsearch

Kiểm tra phiên bản và thông tin khác về Elasticsearch:

curl -XGET 'http: // localhost: 9200'

Nếu tất cả mọi thứ đều bình thường thì bây giờ chúng ta có thể cài đặt PHP.

Cài đặt PHP 7.4

Thêm PPA cho PHP 7.4 :

add-apt-repository ppa:ondrej/php

Tiếp theo, cập nhật danh sách gói hệ điều hành và cài đặt PHP 7.4 bằng lệnh sau:

apt-get update
apt-get install php7.4

Cài đặt tất cả các phần mở rộng PHP được yêu cầu bằng lệnh sau:

apt install php7.4-fpm php7.4-common php7.4-mysql php7.4-gmp php7.4-curl php7.4-intl php7.4-mbstring php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-cli php7.4-zip php7.4-bcmath

Sau khi các phần mở rộng PHP đã được cài đặt trên máy chủ, hãy cài đặt một vài thứ khác để cài đặt Magento 2:

apt-get install git curl software-properties-common

Tiếp theo, mở tệp cấu hình PHP chính /etc/php/7.4/fpm/php.ini:

nano /etc/php/7.4/fpm/php.ini

Thay đổi các cài đặt sau:

file_uploads = On
allow_url_fopen = On
short_open_tag = On
memory_limit = 256M
cgi.fix_pathinfo = 0
zlib.output_compression = On
upload_max_filesize = 128M
max_execution_time = 600
max_input_time = 900
date.timezone = Asia/Ho_Chi_Minh

Lưu và đóng tệp cấu hình PHP.

Tạo cơ sở dữ liệu cho Magento 2

Bảo mật cài đặt MariaDB của bạn bằng cách sử dụng mysql_secure_installation tập lệnh.
Tập lệnh này sẽ xóa người dùng ẩn danh, không cho phép đăng nhập root từ xa và xóa cơ sở dữ liệu test.

mysql_secure_installation

Bạn nên trả lời tất cả các câu hỏi như sau:

Enter current password for root (enter for none): Press [Enter] since no password is set by default
Set root password? [Y/n]: N (You can set a password if you like)
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y

Tiếp theo, chúng ta sẽ tạo cơ sở dữ liệu và người dùng MySQL cho trang web Magento 2. Đăng nhập vào máy chủ MySQL của bạn bằng lệnh sau và nhập mật khẩu MySQL của bạn khi được nhắc, nếu không có bạn hãy để trống:

mysql -u root -p

Cho phép ghi log (binary logging)

mysql> SET GLOBAL log_bin_trust_function_creators = 1;

Tạo user và password mới, bạn có thể dùng user root nhưng mình khuyên là không nên.
**Yêu cầu mật khẩu mạnh (level 2)

mysql> CREATE USER 'magento'@'localhost' IDENTIFIED WITH mysql_native_password;
mysql> SET PASSWORD for 'magento'@'localhost' = password('Your_Password');
mysql> create database magentodb;
mysql> GRANT ALL PRIVILEGES ON magentodb.* TO 'magento'@'localhost';
mysql> quit;

Cài đặt Magento 2

Bây giờ chúng ta có thể tiến hành cài đặt Magento 2. Tại thời điểm viết bài này, phiên bản ổn định mới nhất của Magento là phiên bản 2.4.

Trước tiên, hãy truy cập kho lưu trữ GitHub và tải xuống phiên bản Magento mới nhất bằng lệnh sau:

mkdir -p /var/www/magento2/
cd /var/www/magento2/
git clone https://github.com/magento/magento2.git /var/www/magento2/

** Lưu ý: Bạn có thể lên trang chủ của magento để tải phiên bản zip có đầy đủ package không nhất thiết phải cài qua git.

Tiếp theo, chúng ta sẽ cần cài đặt Composer để cài đặt tất cả các thành phần Magento cần thiết.
Bạn có thể cài đặt Composer bằng cách chạy lệnh sau:

curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer

Chạy các lệnh tiếp theo này để định cấu hình composer.

** Đừng quên thay thế tên miền, mật khẩu database, username, mật khẩuđịa chỉ email cho phù hợp.

cd /var/www/magento2
composer install
bin/magento setup:install --base-url=http://yourdomain.com/ --db-host=localhost --db-name=magentodb --db-user=magento --db-password=strongPassword --admin-firstname=FirstName --admin-lastname=LastName [email protected] --admin-user=magentoadmin --admin-password=strong-password --language=en_US --currency=USD --timezone=America/Chicago --use-rewrites=1

Sau khi cài đặt hoàn tất, bạn sẽ nhận được kết quả sau

[Progress: 699 / 701]
Post installation file permissions check…
For security, remove write permissions from these directories: '/var/www/magento2/app/etc'
[Progress: 700 / 701]
Write installation date…
[Progress: 701 / 701]
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_1k4pc0
Nothing to import.

Hãy nhớ ‘URI Admin Magento’. Bạn sẽ cần thông tin này để đăng nhập vào Magento back-end. Nếu bạn quên bạn có thể vào app/etc/env để xem lại

Thay đổi quyền của thư mục magento2 cho www-data bằng lệnh sau:

chown -R www-data:www-data /var/www/magento2/

Tạo tệp cấu hình Nginx

Tạo tệp cấu hình Nginx :

nano /etc/nginx/sites-available/magento2

Sau đó, thêm phần sau làm nội dung vào file:

upstream fastcgi_backend {
    server unix:/run/php/php7.4-fpm.sock;
}
server {
    server_name yourdomain.com;
    listen 80;
    set $MAGE_ROOT /var/www/magento2;
    set $MAGE_MODE developer; # or production
    access_log /var/log/nginx/magento2-access.log;
    error_log /var/log/nginx/magento2-error.log;
    include /var/www/magento2/nginx.conf.sample;
}

Hãy chú sửa yourdomain.com đúng với domain bạn đã sử dụng để cài đặt phía trên.

Xóa tệp cấu hình Nginx mặc định, nếu không sử dụng:

rm -f /etc/nginx/sites-enabled/default

Bật tệp cấu hình Nginx mới được tạo:

ln -s /etc/nginx/sites-available/magento2 /etc/nginx/sites-enabled/magento2

Sau đó kiểm tra cấu hình Nginx và đảm bảo rằng không có lỗi

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Máy chủ web của bạn hiện đã được cấu hình thành công.

Cài đặt chứng chỉ SSL

Cài đặt chứng chỉ SSL miễn phí từ Let’s Encrypt. Cài đặt các gói cần thiết:

apt-get install certbot python3-certbot-nginx

Sau đó, cài đặt chứng chỉ SSL mới cho tên miền của bạn, Nhớ sửa yourdomain.com thành tên miền của bạn:

certbot --nginx -d yourdomain.com-dwww.yourdomain.com

Vui lòng chọn ‘2’ và chọn chuyển hướng lưu lượng HTTP sang HTTPS:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Sử dụng các lệnh Magento 2 CLI sau để cập nhật Magento base-url và base-url-secure:

cd /var/www/magento2/
php bin/magento setup:store-config:set --base-url="https://yourdomain.com/"
php bin/magento setup:store-config:set --base-url-secure="https://yourdomain.com/"

Chỉnh sửa tệp cấu hình Nginx và bật HTTP/2:

nano /etc/nginx/sites-enabled/magento2

Thay thế:

listen 443 ssl;

Với:

listen 443 ssl http2;

Khởi động lại dịch vụ Nginx để các thay đổi có hiệu lực:

systemctl restart nginx

Cài đặt Cron Job

Magento yêu cầu cấu hình công việc cron cho nhiều chức năng hệ thống quan trọng. Hãy tạo cron job sau:

crontab -u www-data -e

Thêm cái này vào tệp:

* * * * /usr/bin/php /var/www/magento2/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /var/www/magento2/var/log/magento.cron.log

Lưu và đóng tập tin.

Khởi động lại dịch vụ cron:

systemctl restart cron.service

Magento 2 đã được cài đặt thành công trên máy chủ của bạn.

Bạn có thể truy cập giao diện người dùng Magento tại http://yourdomain.com.

Mình hy vọng rằng hướng dẫn này đã giúp bạn cài đặt Magento 2 trên VPS Ubuntu 20.04.

Tác giả

Gim