Cách cài đặt Magento eCommerce Suite trên Rocky Linux 9 với Elasticsearch

theanh

Administrator
Nhân viên
Magento là một nền tảng thương mại điện tử mã nguồn mở được viết bằng PHP. Nó đã được Adobe mua lại vào năm 2018. Nó cũng được cung cấp dưới dạng sản phẩm thương mại và dựa trên đám mây. Bạn có thể sử dụng Magento để tạo các trang web mua sắm chuyên nghiệp có dung lượng cao. Nó cung cấp cả hai chế độ - một cửa hàng đơn lẻ và nhiều cửa hàng. Nó đi kèm với nhiều mô-đun để mở rộng chức năng của nó.

Trong hướng dẫn này, chúng tôi sẽ cài đặt phiên bản cộng đồng mã nguồn mở Magento. Nó cung cấp tất cả các chức năng bạn cần để thiết lập một cửa hàng trực tuyến chuyên nghiệp. Chúng tôi cũng sẽ cài đặt Elasticsearch để tìm kiếm qua danh mục sản phẩm, Redis cho phiên và bộ đệm tệp, và phục vụ nó bằng máy chủ Nginx.

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


  • Một máy chủ chạy Rocky Linux 9 với RAM tối thiểu 2GB. Bạn có thể cần nhiều RAM hơn, tùy thuộc vào yêu cầu của bạn.

  • Người dùng không phải root có quyền sudo.

  • Tên miền đủ điều kiện (FQDN) cho máy chủ, magento.example.com

  • Đảm bảo mọi thứ được cập nhật.
Mã:
$ sudo dnf update
[*]
Một số gói mà hệ thống của bạn nhu cầu.
Mã:
$ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y
Một số gói này có thể đã được cài đặt trên hệ thống của bạn.

Bước 1 - Cấu hình Tường lửa​

Bước đầu tiên là cấu hình tường lửa. Rocky Linux sử dụng Tường lửa Firewalld. Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --state
running
Tường lửa hoạt động với nhiều vùng khác nhau và vùng công cộng là vùng mặc định mà chúng ta sẽ sử dụng. Liệt kê tất cả các dịch vụ và cổng đang hoạt động trên tường lửa.
Mã:
$ sudo firewall-cmd --permanent --list-services
Nó sẽ hiển thị đầu ra sau.
Mã:
cockpit dhcpv6-client ssh
Cho phép HTTP và HTTPS cổng.
Mã:
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Kiểm tra lại trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --permanent --list-services
Bạn sẽ thấy một đầu ra.
Mã:
cockpit dhcpv6-client http https ssh
Tải lại tường lửa để kích hoạt các thay đổi.
Mã:
$ sudo firewall-cmd --reload

Bước 2 - Cài đặt PHP và các tiện ích mở rộng của nó​

Rocky Linux 9 được cài đặt sẵn PHP 8.1 theo mặc định. Để luôn sử dụng phiên bản PHP mới nhất hoặc nếu bạn muốn cài đặt nhiều phiên bản PHP, chúng ta cần sử dụng kho lưu trữ REMI.

Bước đầu tiên là lấy kho lưu trữ Epel.
Mã:
$ sudo dnf install epel-release -y
Tiếp theo, cài đặt kho lưu trữ Remi.
Mã:
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
Kiểm tra PHP khả dụng streams.
Mã:
$ dnf module list php -y
Name Stream Profiles Summary
php 8.1 common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
php remi-7.4 common [d], devel, minimal PHP scripting language
php remi-8.0 common [d], devel, minimal PHP scripting language
php remi-8.1 common [d], devel, minimal PHP scripting language
php remi-8.2 common [d], devel, minimal PHP scripting language
php remi-8.3 common [d], devel, minimal PHP scripting language
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Phiên bản mặc định là 8.1. Tại thời điểm viết hướng dẫn này, Magento tương thích với PHP 8.2. Do đó, hãy bật kho lưu trữ PHP 8.2 của Remi.
Mã:
$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.2
Bạn có thể cài đặt kho lưu trữ này và các tiện ích mở rộng mà Magento yêu cầu bằng cách chạy lệnh sau lệnh.
Mã:
$ sudo dnf install php-fpm php-cli php-mysql php-mbstring php-xml php-gd php-bcmath php-zip php-curl php-tidy php-intl php-soap php-opcache php-xsl php-sodium
Xác minh cài đặt.
Mã:
$ php --version
PHP 8.2.15 (cli) (built: Jan 16 2024 12:19:32) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.15, Copyright (c) Zend Technologies with Zend OPcache v8.2.15, Copyright (c), by Zend Technologies

Bước 3 - Cài đặt Composer​

Composer là một công cụ quản lý phụ thuộc cho PHP và là công cụ cần thiết để cài đặt Magento.

Chạy các lệnh sau để tải xuống tệp nhị phân Composer. Magento yêu cầu Composer 2.2 LTS nên chúng tôi đã sửa đổi lệnh cho phù hợp.
Mã:
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php --2.2
$ php -r "unlink('composer-setup.php');"
Cài đặt Composer bằng cách di chuyển tệp nhị phân đến /usr/local/bin thư mục.
Mã:
$ sudo mv composer.phar /usr/local/bin/composer
Xác minh cài đặt bằng cách kiểm tra phiên bản của nó.
Mã:
$ composer --version
Composer version 2.2.22 2023-09-29 10:53:45

Bước 4 - Cài đặt MariaDB​

Rocky Linux 9 đi kèm với phiên bản MariaDB cũ hơn. Do đó, chúng tôi sẽ sử dụng kho lưu trữ của MariaDB để cài đặt. Vào thời điểm viết hướng dẫn này, Magento hỗ trợ MariaDB 10.6, đây là phiên bản chúng tôi sẽ cài đặt.

Nhập khóa GPG của MariaDB.
Mã:
$ sudo rpm --import https://supplychain.mariadb.com/MariaDB-Server-GPG-KEY
Tạo và mở /etc/yum.repos.d/mariadb.repo tệp để chỉnh sửa.
Mã:
$ sudo nano /etc/yum.repos.d/mariadb.repo
Dán mã sau vào nó.
Mã:
[mariadb]
name = MariaDB
baseurl = https://rpm.mariadb.org/10.6/rhel/$releasever/$basearch
gpgkey= https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Mã:
$ sudo dnf install MariaDB-server
Kiểm tra phiên bản của MySQL.
Mã:
$ mysql --version
mysql Ver 15.1 Distrib 10.6.16-MariaDB, for Linux (x86_64) using EditLine wrapper
Bật và khởi động dịch vụ MariaDB.
Mã:
$ sudo systemctl enable mariadb --now
Chạy cài đặt an toàn MariaDB script.
Mã:
$ sudo mariadb-secure-installation
Bạn sẽ được yêu cầu nhập mật khẩu gốc. Nhấn Enter vì chúng tôi chưa đặt bất kỳ mật khẩu nào cho nó.
Mã:
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none):
Tiếp theo, bạn sẽ được hỏi xem bạn có muốn chuyển sang phương pháp xác thực socket Unix không. Plugin unix_socket cho phép bạn sử dụng thông tin đăng nhập hệ điều hành của mình để kết nối với máy chủ MariaDB. Vì bạn đã có tài khoản root được bảo vệ, hãy nhập n để tiếp tục.
Mã:
OK, successfully used password, moving on...
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n] n
Tiếp theo, bạn sẽ được hỏi xem bạn có muốn thay đổi mật khẩu root của mình không. Nhập Y để tiếp tục và thay đổi mật khẩu gốc của bạn thành mật khẩu mạnh và an toàn.
Mã:
... skipping.
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables.. ... Success!
Tiếp theo, bạn sẽ được hỏi một số câu hỏi để cải thiện bảo mật MariaDB. Nhập Y để xóa người dùng ẩn danh, không cho phép đăng nhập gốc từ xa, xóa cơ sở dữ liệu thử nghiệm và tải lại các bảng đặc quyền.
Mã:
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y ... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y ... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Bạn có thể vào shell MariaDB bằng cách nhập sudo mysql hoặc sudo mariadb trên dòng lệnh.

Bước 5 - Cấu hình MariaDB​

Đăng nhập vào shell MariaDB.
Mã:
$ sudo mariadb
Tạo cơ sở dữ liệu cho Magento.
Mã:
MariaDB > CREATE DATABASE magento;
Tạo tài khoản người dùng SQL.
Mã:
MariaDB > CREATE USER 'magentouser'@'localhost' IDENTIFIED BY 'Your_password2';
Cấp tất cả các quyền trên cơ sở dữ liệu cho người dùng.
Mã:
MariaDB > GRANT ALL PRIVILEGES ON magento.* TO 'magentouser'@'localhost';
Xóa quyền người dùng.
Mã:
MariaDB > FLUSH PRIVILEGES;
Thoát khỏi shell.
Mã:
MariaDB > exit

Bước 6 - Cài đặt Nginx​

Rocky Linux 9 đi kèm với phiên bản Nginx cũ hơn. Bạn cần sử dụng kho lưu trữ Nginx chính thức để cài đặt phiên bản mới nhất.

Tạo và mở tệp /etc/yum.repos.d/nginx.repo để chỉnh sửa.
Mã:
$ sudo nano /etc/yum.repos.d/nginx.repo
Dán mã sau vào nó.
Mã:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Chúng tôi sẽ cài đặt dòng chính Nginx nên hãy bật gói cho nó.
Mã:
$ sudo dnf config-manager --enable nginx-mainline
Cài đặt Nginx.
Mã:
$ sudo dnf install nginx -y
Xác minh cài đặt.
Mã:
$ nginx -v
nginx version: nginx/1.25.3
Bật và khởi động máy chủ Nginx dịch vụ.
Mã:
$ sudo systemctl enable nginx --now
Kiểm tra trạng thái dịch vụ.
Mã:
? nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled) Drop-In: /etc/systemd/system/nginx.service.d ??php-fpm.conf Active: active (running) since Fri 2024-01-26 06:46:17 UTC; 1s ago Docs: http://nginx.org/en/docs/ Process: 19765 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 19767 (nginx) Tasks: 3 (limit: 12225) Memory: 3.1M CPU: 16ms CGroup: /system.slice/nginx.service ??19767 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??19768 "nginx: worker process" ??19769 "nginx: worker process"

Bước 7 - Cài đặt SSL​

Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL. Chúng ta sẽ sử dụng trình cài đặt gói Snapd cho việc đó. Vì Rocky Linux không đi kèm, hãy cài đặt trình cài đặt Snapd. Nó yêu cầu kho lưu trữ EPEL (Gói bổ sung cho Enterprise Linux) để hoạt động. Nhưng vì chúng ta đã cài đặt nó ở bước 3, nên chúng ta có thể trực tiếp tiến hành.

Cài đặt gói Snapd.
Mã:
$ sudo dnf install -y snapd
Bật và khởi động dịch vụ Snap.
Mã:
$ sudo systemctl enable snapd --now
Cài đặt gói lõi Snap và đảm bảo rằng phiên bản Snapd của bạn là ngày.
Mã:
$ sudo snap install core && sudo snap refresh core
Tạo các liên kết cần thiết để Snapd hoạt động.
Mã:
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Cài đặt Certbot.
Mã:
$ sudo snap install --classic certbot
Sử dụng lệnh sau để đảm bảo lệnh Certbot có thể chạy bằng cách tạo liên kết tượng trưng đến /usr/bin thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Xác minh xem Certbot có hoạt động không đúng cách.
Mã:
$ certbot --version
certbot 2.8.0
Chạy lệnh sau để tạo Chứng chỉ SSL.
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d magento.example.com
Lệnh trên sẽ tải xuống chứng chỉ vào /etc/letsencrypt/live/magento.example.com thư mục trên máy chủ của bạn.

Tạo chứng chỉ nhóm Diffie-Hellman.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Kiểm tra trình lập lịch gia hạn Certbot dịch vụ.
Mã:
$ sudo systemctl list-timers
Bạn sẽ thấy snap.certbot.renew.service là một trong những dịch vụ được lên lịch chạy.
Mã:
NEXT LEFT LAST PASSED UNIT ACTIVATES
-------------------------------------------------------------------------------------------------------------------------------
Fri 2024-01-26 08:05:24 UTC 1h 1min left Fri 2024-01-26 06:35:00 UTC 29min ago dnf-makecache.timer dnf-makecache.service
Fri 2024-01-26 14:20:42 UTC 7h left Thu 2024-01-25 14:20:42 UTC 16h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Fri 2024-01-26 22:37:00 UTC 15h left - - snap.certbot.renew.timer snap.certbot.renew.service
Thực hiện chạy thử quy trình để kiểm tra xem quá trình gia hạn SSL có hoạt động tốt không.
Mã:
$ sudo certbot renew --dry-run
Nếu không thấy lỗi, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.

Bước 8 - Cài đặt Elasticsearch​

Elasticsearch được Magento sử dụng để tìm kiếm sản phẩm. Chúng tôi sẽ cài đặt Elasticsearch 7.x bằng kho lưu trữ chính thức của nó vì đây là phiên bản tương thích với Magento 2.4.6, phiên bản mới nhất hiện có. Trang yêu cầu cũng đề cập đến Elasticsearch 8.5 nhưng nó không hoạt động bình thường với Magento.

Nhập khóa GPG của Elasticsearch.
Mã:
$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Tạo một tệp có tên elasticsearch.repo trong /etc/yum.repos.d/ và mở thư mục đó để chỉnh sửa.
Mã:
$ sudo nano /etc/yum.repos.d/elasticsearch.repo
Dán mã sau vào it.
Mã:
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Cài đặt Elasticsearch.
Mã:
$ sudo dnf install --enablerepo=elasticsearch elasticsearch
Elasticsearch sử dụng rất nhiều bộ nhớ. Bạn cần giới hạn mức sử dụng của nó tùy thuộc vào kích thước máy chủ của bạn. Tạo tệp /etc/elasticsearch/jvm.options.d/memory.options và mở tệp đó để chỉnh sửa.
Mã:
$ sudo nano /etc/elasticsearch/jvm.options.d/memory.options
Dán mã sau vào đó. Sửa đổi các giá trị theo kích thước máy chủ của bạn. Giá trị đầu tiên đề cập đến bộ nhớ ban đầu và giá trị thứ hai đề cập đến bộ nhớ khả dụng tối đa. Đối với 1GB trở lên, hãy sử dụng định dạng -Xms1g.
Mã:
-Xms512m
-Xmx784m
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc. Thao tác này sẽ định cấu hình Elasticsearch để sử dụng 1GB RAM. Sửa đổi theo yêu cầu và thông số kỹ thuật của máy chủ.

Khởi động và kích hoạt dịch vụ.
Mã:
$ sudo systemctl enable elasticsearch --now
Kiểm tra xem Elasticsearch có hoạt động không.
Mã:
$ curl http://localhost:9200
Bạn sẽ thấy đầu ra sau.
Mã:
{ "name" : "magento.example.com", "cluster_name" : "elasticsearch", "cluster_uuid" : "saBfw0F_Tam6ayGjXr6pEA", "version" : { "number" : "7.17.17", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "aba4da413a368e296dfc64fb20897334d0340aa1", "build_date" : "2024-01-18T10:05:03.821431920Z", "build_snapshot" : false, "lucene_version" : "8.11.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search"
}

Bước 9 - Cài đặt máy chủ Redis​

Magento sử dụng Redis để lưu trữ phiên và bộ nhớ đệm. Hoàn toàn tùy chọn và bạn có thể sử dụng cơ sở dữ liệu để lưu trữ phiên. Nhưng Redis làm tốt hơn. Phiên bản mới nhất của Magento hoạt động với Redis 7.0. Rocky Linux đi kèm với Redis 6.0 nên chúng ta sẽ sử dụng kho lưu trữ Remi để cài đặt.

Chúng ta đã cài đặt kho lưu trữ Remi khi cài đặt PHP ở bước 2. Liệt kê tất cả các mô-đun Redis có sẵn.
Mã:
$ dnf module list redis
Name Stream Profiles Summary
redis 7 common [d] Redis persistent key-value database
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
redis remi-5.0 common [d] Redis persistent key-value database
redis remi-6.0 common [d] Redis persistent key-value database
redis remi-6.2 common [d] Redis persistent key-value database
redis remi-7.0 common [d] Redis persistent key-value database
redis remi-7.2 common [d] Redis persistent key-value database
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Bật Redis 7.0.
Mã:
$ sudo dnf module enable -y redis:remi-7.0
Phát hành lệnh sau để cài đặt máy chủ Redis.
Mã:
$ sudo dnf install redis
Xác nhận phiên bản Redis.
Mã:
$ redis-server -v
Redis server v=7.0.15 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=77c9855172eb54e9
Bật và khởi động Redis dịch vụ.
Mã:
$ sudo systemctl enable redis --now
Chúng ta hãy xác minh kết nối dịch vụ bằng cách sử dụng lệnh sau.
Mã:
$ redis-cli
Bạn sẽ được chuyển sang shell Redis.

Bước đầu tiên là đặt mật khẩu cho người dùng mặc định của Redis. Thay thế Your_Redis_Password bằng mật khẩu mạnh mà bạn chọn. Đảm bảo bạn thêm tiền tố mật khẩu bằng ký tự >.
Mã:
127.0.0.1:6379> acl setuser default >Your_Redis_Password
Kiểm tra Redis Xác thực.
Mã:
127.0.0.1:6379> AUTH Your_Redis_Password
OK
Ping dịch vụ.
Mã:
127.0.0.1:6379> ping
PONG
Thoát khỏi dịch vụ bằng cách nhập exit.

Bước 10 - Tải xuống Magento​

Tạo thư mục gốc web cho Magento.
Mã:
$ sudo mkdir /var/www/html/magento -p
Cấp quyền cho thư mục Magento cho người dùng.
Mã:
$ sudo chown $USER:$USER /var/www/html/magento/ -R
Trước khi đi sâu hơn, bạn cần có khóa xác thực do kho lưu trữ Magento yêu cầu. Truy cập trang web https://commercemarketplace.adobe.com/, nhấp vào liên kết Đăng nhập ở góc trên bên phải và bạn sẽ nhận được trang sau yêu cầu bạn đăng nhập bằng ID Adobe của mình.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22349%22%3E%3C/svg%3E


Nhấp vào nút Đăng nhập bằng ID Adobe để đến trang sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22710%22%3E%3C/svg%3E


Nếu bạn có Adobe ID, hãy nhập thông tin đăng nhập của bạn để tiếp tục hoặc bạn có thể tạo tài khoản tại đây. Sau khi bạn đã tạo tài khoản và đăng nhập, hãy mở URL https://commercemarketplace.adobe.com/customer/accessKeys/. Bạn cũng có thể truy cập trang này bằng cách truy cập hồ sơ của mình ( https://commercemarketplace.adobe.com/customer/account/) và nhấp vào liên kết Khóa truy cập.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22369%22%3E%3C/svg%3E


Nhấp vào nút Tạo khóa truy cập mới để tạo khóa xác thực của bạn. Đặt tên cho khóa của bạn để nhận dạng.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22257%22%3E%3C/svg%3E


Ghi lại cả khóa công khai và khóa riêng tư cho bước tiếp theo.

Tạo tệp ~/.config/composer/auth.json và mở tệp đó để đang chỉnh sửa.
Mã:
$ nano ~/.config/composer/auth.json
Dán mã sau vào đó. Sử dụng khóa công khai cho tên người dùng và khóa riêng cho mật khẩu.
Mã:
{
"http-basic": { "repo.magento.com": { "username": "
", "password": "" }
}
}
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Chuyển sang /var/www/html/magento thư mục.
Mã:
$ cd /var/www/html/magento
Tạo dự án Magento. Lưu ý period ở cuối lệnh. Lệnh này đề cập đến thư mục hiện tại mà lệnh đang được chạy.
Mã:
$ composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition .
Bạn sẽ thấy kết quả tương tự.
Mã:
Creating a "magento/project-community-edition" project at "./"
Installing magento/project-community-edition (2.4.6-p3) - Downloading magento/project-community-edition (2.4.6-p3) - Installing magento/project-community-edition (2.4.6-p3): Extracting archive
Created project in /var/www/html/magento/.
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 566 installs, 0 updates, 0 removals - Locking 2tvenom/cborencode (1.0.2) - Locking adobe-commerce/adobe-ims-metapackage (2.2.0) - Locking allure-framework/allure-codeception (v2.3.0) - Locking allure-framework/allure-php-commons (v2.3.1) - Locking allure-framework/allure-phpunit (v2.1.0)
...............................................
Chạy các lệnh sau để thiết lập quyền cho tệp và thực thi tệp nhị phân Magento. Ngoài ra, hãy đặt chủ sở hữu của thư mục Magento thành người dùng Nginx để có thể truy cập trang web.
Mã:
$ sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
$ sudo chown -R :nginx .
$ sudo chmod u+x bin/magento

Bước 11 - Cài đặt Magento​

Đảm bảo rằng bạn đang ở trong thư mục Magento.
Mã:
$ cd /var/www/html/magento
Chạy lệnh sau để cài đặt Magento.
Mã:
$ bin/magento setup:install \
--base-url=http://magento.example.com \
--use-secure=1 \
--base-url-secure=https://magento.example.com \
--use-secure-admin=1 \
--db-host=127.0.0.1 \
--db-name=magento \
--db-user=magentouser \
--db-password=Your_password2 \
--admin-firstname=Navjot \
--admin-lastname=Singh \
[emailprotected] \
--admin-user=navjot \
--admin-password=admin_password \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1 \
--elasticsearch-host=http://127.0.0.1 \
--elasticsearch-port=9200 \
--session-save=redis \
--session-save-redis-db=0 \
--session-save-redis-password=redis_password \
--cache-backend=redis \
--cache-backend-redis-db=2 \
--cache-backend-redis-password=redis_password \
--page-cache=redis \
--page-cache-redis-db=4 \
--page-cache-redis-password=redis_password
Sau khi quá trình hoàn tất, bạn sẽ nhận được kết quả tương tự.
Mã:
.......
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_l5pv1h
Nothing to import.
Ghi lại URI quản trị mà bạn sẽ cần sau này để truy cập bảng quản trị.

Tạo cron Magento công việc.
Mã:
$ php bin/magento cron:install
Xác minh công việc cron.
Mã:
$ crontab -l
Bạn sẽ thấy thông báo sau đầu ra.
Mã:
#~ MAGENTO START f37deed947b2ea951ad6f939b8ab752bc79587e3d77f40d06f20f0657c98e94d
* * * * * /usr/bin/php /var/www/html/magento/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/html/magento/var/log/magento.cron.log
#~ MAGENTO END f37deed947b2ea951ad6f939b8ab752bc79587e3d77f40d06f20f0657c98e94d

Bước 12 - Cấu hình PHP-FPM​

Mở tệp /etc/php-fpm.d/www.conf.
Mã:
$ sudo nano /etc/php-fpm.d/www.conf
Chúng ta cần đặt người dùng/nhóm Unix của các quy trình PHP thành nginx. Tìm các dòng user = apachegroup = apache trong tệp và thay đổi chúng thành nginx.
Mã:
...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...
Tìm listen.owner = nobody, listen.group = nobody, listen.mode = 0660 các dòng trong tệp và thay đổi chúng như sau sau khi bỏ chú thích.
Mã:
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server.
; Default Values: user and group are set as the running user
; mode is set to 0660
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Tăng thời gian thực hiện lên 180 giây.
Mã:
$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 180/' /etc/php.ini
Tăng giới hạn bộ nhớ cho PHP-FPM từ 128MB lên 512MB. Bạn có thể tăng giới hạn tùy thuộc vào kích thước máy chủ và yêu cầu của mình.
Mã:
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/' /etc/php.ini
Theo mặc định, Magento đặt giới hạn kích thước tệp cho thư viện phương tiện là 2MB. Chạy các lệnh sau để tăng giới hạn kích thước tệp lên 25MB.
Mã:
$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 25M/g' /etc/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 25M/g' /etc/php.ini
Bật Nén Zlib.
Mã:
$ sudo sed -i 's/zlib.output_compression = Off/zlib.output_compression = On/g' /etc/php.ini
Tăng realpath_cache cấu hình như minh họa.
Mã:
$ sudo sed -i 's/;realpath_cache_size = 4096k/realpath_cache_size = 10M/g' /etc/php.ini
$ sudo sed -i 's/;realpath_cache_ttl = 120/realpath_cache_ttl = 7200/g' /etc/php.ini
Mở tệp /etc/php.d/10-opcache.ini để chỉnh sửa.
Mã:
$ sudo nano /etc/php.d/10-opcache.ini
Tìm dòng ;opcache.save_comments=1 và bỏ chú thích như hình minh họa.
Mã:
opcache.save_comments=1
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động lại PHP-FPM dịch vụ.
Mã:
$ sudo systemctl restart php-fpm
Thay đổi nhóm thư mục phiên PHP thành Nginx.
Mã:
$ sudo chgrp -R nginx /var/lib/php/session

Bước 13 - Cấu hình SELinux​

Chạy các lệnh sau để thay đổi ngữ cảnh bảo mật cho Magento thư mục.
Mã:
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/app/etc(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/var(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/pub/media(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/pub/static(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/generated(/.*)?'
$ sudo restorecon -Rv '/var/www/html/magento/'
Áp dụng chính sách để cho phép kết nối được thực hiện với các máy chủ bên ngoài.
Mã:
$ sudo setsebool -P httpd_can_network_connect 1
Áp dụng chính sách để cho phép Nginx cấp quyền truy cập vào PostgreSQL.
Mã:
$ sudo setsebool -P httpd_can_network_connect_db 1

Bước 14 - Cấu hình Nginx​

Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Thêm dòng sau vào trước dòng include /etc/nginx/conf.d/*.conf;.
Mã:
server_names_hash_bucket_size 64;
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Tạo và mở tệp /etc/nginx/conf.d/magento.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/magento.conf
Dán mã sau vào đó.
Mã:
upstream fastcgi_backend { server unix:/run/php-fpm/www.sock;
}
server { # Redirect any http requests to https listen 80; listen [::]:80; server_name magento.example.com; return 301 https://$host$request_uri;
}
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name magento.example.com; set $MAGE_ROOT /var/www/html/magento; include /var/www/html/magento/nginx.conf.sample; client_max_body_size 25m; access_log /var/log/nginx/magento.access.log; error_log /var/log/nginx/magento.error.log; # TLS configuration ssl_certificate /etc/letsencrypt/live/magento.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/magento.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/magento.example.com/chain.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem;
}
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.

Magento đi kèm với mẫu cấu hình Nginx tại /var/www/magento/nginx.conf.sample mà chúng tôi đã đưa vào cấu hình của mình. Biến $MAGE_ROOT trỏ đến thư mục gốc web Magento mà chúng tôi đã đặt trong tệp của mình và được sử dụng trong tệp cấu hình mẫu.

Xác minh cú pháp tệp cấu hình Nginx.
Mã:
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Khởi động lại Nginx dịch vụ.
Mã:
$ sudo systemctl restart nginx
Mở trang web Magento thông qua URL https://magento.example.com. Bạn sẽ thấy trang sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22568%22%3E%3C/svg%3E


Nếu CSS và JS không tải được, hãy chạy các lệnh sau.
Mã:
$ cd /var/www/html/magento
$ sudo php bin/magento setup:static-content:deploy -f
$ sudo php bin/magento indexer:reindex

Bước 15 - Vô hiệu hóa Xác thực hai yếu tố​

Trước khi truy cập bảng quản trị, chúng ta cần vô hiệu hóa xác thực hai yếu tố được bật theo mặc định. Magento cố gắng gửi thư qua sendmail để bật xác thực hai yếu tố trong quá trình cài đặt nhưng vì chúng ta không cấu hình điều đó, nên cách duy nhất để truy cập bảng điều khiển là vô hiệu hóa tính năng này trước.

Nếu bạn đã cấu hình sendmail trên máy chủ của bạn để gửi email, bạn có thể bỏ qua bước này. Chúng ta cần vô hiệu hóa hai mô-đun của Magento bằng các lệnh sau để vô hiệu hóa xác thực hai yếu tố.
Mã:
$ sudo php /var/www/html/magento/bin/magento module:disable Magento_AdminAdobeImsTwoFactorAuth
$ sudo php /var/www/html/magento/bin/magento module:disable Magento_TwoFactorAuth
Chạy lệnh sau để tạo các lớp.
Mã:
$ sudo php /var/www/html/magento/bin/magento setup:di:compile
Xóa bộ nhớ đệm khi tốt.
Mã:
$ sudo php /var/www/html/magento/bin/magento c:c

Bước 16 - Truy cập Cổng quản trị​

Bạn phải mở cổng quản trị bằng URI mà tập lệnh cài đặt Magento cung cấp cho bạn. Nếu vì lý do nào đó bạn quên ghi chú lại hoặc làm mất, bạn có thể lấy lại URI bằng lệnh sau.
Mã:
$ php /var/www/magento/bin/magento info:adminuri
Admin URI: /admin_l5pv1h
Mở URL https://magento.example.com/admin_l5pv1h trong trình duyệt của bạn và bạn sẽ thấy màn hình sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22522%22%20height=%22630%22%3E%3C/svg%3E


Nhập thông tin đăng nhập của quản trị viên mà bạn đã cung cấp trong quá trình cài đặt và nhấp vào nút Đăng nhập để tiếp tục. Bạn sẽ được chào đón bằng màn hình sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22476%22%3E%3C/svg%3E


Bạn sẽ nhận được một cửa sổ bật lên yêu cầu Adobe cấp quyền thu thập dữ liệu sử dụng. Nhấp vào nút Không cho phép để tiếp tục.

Bước tiếp theo là cấu hình SMTP cho email để chúng ta có thể bật lại xác thực hai yếu tố. Truy cập menu Lưu trữ >> Cấu hình.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22614%22%20height=%22723%22%3E%3C/svg%3E


Mở rộng Menu nâng cao từ phía bên trái và nhấp vào tùy chọn Hệ thống để mở trang cài đặt Email.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22463%22%3E%3C/svg%3E


Bỏ chọn Sử dụng giá trị hệ thống trước các tùy chọn Transport, Host và Port. Nhấp vào menu thả xuống cho Transport và chọn SMTP. Đối với hướng dẫn của chúng tôi, chúng tôi đang sử dụng Amazon SES làm trình gửi thư.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22678%22%3E%3C/svg%3E


Nhập máy chủ SMTP của bạn, 587 làm cổng, tên người dùng và mật khẩu, đặt Auth thành LOGIN và đặt SSL thành TLS trong các trường đã cho. Nhấp vào nút Save Config khi bạn hoàn tất. Bây giờ chúng ta đã cấu hình cài đặt email, bước tiếp theo là cấu hình ID email của cửa hàng để chúng ta có thể kiểm tra chúng.

Cuộn lên, mở rộng menu Chung trên cùng một trang và chọn tùy chọn Địa chỉ email của cửa hàng.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22559%22%3E%3C/svg%3E


Bỏ chọn các trường Email người gửi mặc định và nhập ID email của cửa hàng bạn. Nhấp vào nút Lưu cấu hình khi bạn hoàn tất. Tương tự, hãy mở màn hình Danh bạ, thực hiện những thay đổi tương tự và nhấp vào nút Lưu cấu hình để hoàn tất.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22322%22%3E%3C/svg%3E


Việc thay đổi tùy chọn quản trị viên có thể ảnh hưởng đến bộ nhớ đệm và bạn sẽ nhận được cảnh báo. Chạy lệnh sau để xóa bộ nhớ đệm theo cách thủ công.
Mã:
$ sudo php /var/www/html/magento/bin/magento c:c
Để kiểm tra email, hãy truy cập trang cửa hàng và mở trang Contact Us. Bạn có thể sử dụng URL https://magento.example.com/contact/ trực tiếp để truy cập. Gửi tin nhắn thử nghiệm và nhấp vào nút Gửi. Bạn sẽ nhận được một email tương tự.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22411%22%3E%3C/svg%3E

Bước 17 - Bật và Cấu hình Xác thực Hai yếu tố​

Bây giờ chúng ta đã bật trình gửi thư SMTP, đã đến lúc bật lại xác thực hai yếu tố. Chạy các lệnh sau để bật xác thực hai yếu tố.
Mã:
$ sudo php /var/www/html/magento/bin/magento module:enable Magento_AdminAdobeImsTwoFactorAuth
$ sudo php /var/www/html/magento/bin/magento module:enable Magento_TwoFactorAuth
Nâng cấp thiết lập cho các mô-đun.
Mã:
$ sudo php /var/www/html/magento/bin/magento setup:upgrade
Chạy lệnh sau để tạo lớp.
Mã:
$ sudo php /var/www/html/magento/bin/magento setup:di:compile
Xóa bộ nhớ đệm.
Mã:
$ sudo php /var/www/html/magento/bin/magento c:c
Nếu bạn không thể truy cập vào khu vực quản trị, hãy chạy các lệnh sau.

Buộc triển khai tĩnh nội dung.
Mã:
$ sudo php /var/www/html/magento/bin/magento setup:static-content:Deploy -f
Thiết lập quyền cho tệp.
Mã:
$ cd /var/www/html/magento
$ sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
$ sudo chown -R :nginx .
Truy cập cổng thông tin Quản trị và bạn sẽ thấy màn hình sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22597%22%20height=%22574%22%3E%3C/svg%3E


Chúng tôi sẽ sử dụng Phương pháp Google Authenticator. Bạn có thể sử dụng khóa phần cứng nếu có. Phương pháp Google Authenticator hoạt động với bất kỳ ứng dụng TOTP nào bao gồm Authy, 1Password, Bitwarden, Microsoft Authenticator, v.v. Nhấp vào nút Áp dụng để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22446%22%20height=%22750%22%3E%3C/svg%3E


Ở trang tiếp theo, bạn sẽ nhận được mã QR để quét bằng ứng dụng 2FA của mình. Nhập thông tin chi tiết vào ứng dụng của bạn và sao chép mã đã tạo vào trường Mã xác thực. Nhấp vào nút Xác nhận để tiếp tục đến bảng điều khiển quản trị.

Kết luận​

Đây là phần kết thúc hướng dẫn của chúng tôi về cách cài đặt một trang web thương mại điện tử Magento trên máy chủ Rocky Linux 9 với máy chủ Nginx và Elasticsearch. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên