Cách cài đặt Magento eCommerce Suite trên Debian 12 với Nginx và 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 bộ đệm tệp và phiên, 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 Debian 12 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 mình.

  • 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 apt update
$ sudo apt upgrade
[*]
Một số gói mà hệ thống của bạn cần.
Mã:
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -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. Debian đi kèm với ufw (Uncomplicated Firewall) theo mặc định.

Kiểm tra xem tường lửa có đang chạy không.
Mã:
$ sudo ufw status
Bạn sẽ thấy nội dung tương tự như sau.
Mã:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Cho phép các cổng HTTP và HTTPS như tốt.
Mã:
$ sudo ufw allow http
$ sudo ufw allow https
Kiểm tra lại trạng thái của tường lửa.
Mã:
$ sudo ufw status
Bạn sẽ thấy một đầu ra.
Mã:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)

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

Debian 12 được cài đặt sẵn phiên bản PHP 8.2 theo mặc định. Bạn có thể cài đặt nó và các tiện ích mở rộng mà Magento yêu cầu bằng cách chạy lệnh sau.
Mã:
$ sudo apt 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-xsl libsodium-dev libsodium23 libssl-dev libcurl4-openssl-dev
Để 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, hãy thêm kho lưu trữ PHP của Ondrej.

Đầu tiên, hãy nhập kho lưu trữ PHP GPG của Sury key.
Mã:
$ sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
Thêm kho lưu trữ PHP của Ondrej Sury.
Mã:
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
Cập nhật kho lưu trữ hệ thống danh sách.
Mã:
$ sudo apt update
Tiếp theo, cài đặt PHP và các tiện ích mở rộng của nó theo yêu cầu của Magento.
Mã:
$ sudo apt install php8.2-fpm php8.2-mysql php8.2-bcmath php8.2-xml php8.2-zip php8.2-curl php8.2-mbstring php8.2-gd php8.2-tidy php8.2-intl php8.2-cli php8.2-soap php8.2-xsl libsodium-dev libsodium23 libssl-dev libcurl4-openssl-dev
Xác minh cài đặt.
Mã:
$ php --version
PHP 8.2.8 (cli) (built: Jul 16 2023 11:00:43) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.8, Copyright (c) Zend Technologies with Zend OPcache v8.2.8, 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.21 2023-02-15 13:07:40

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

Debian 12 không đi kèm MySQL theo mặc định và họ vẫn chưa phát hành gói chính thức cho MySQL. Do đó, chúng tôi sẽ sử dụng MariaDB cho MySQL. MariaDB cũng không có gói chính thức cho Debian 12 nhưng Debian đi kèm MySQL. Do đó, hãy cài đặt nó bằng lệnh sau.
Mã:
$ sudo apt install mariadb-server
Kiểm tra phiên bản MySQL.
Mã:
$ mysql --version
mysql Ver 15.1 Distrib 10.11.3-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
Hiện tại, phiên bản MariaDB này không được Magento hỗ trợ và gói MariaDB chính thức cho Debian 12 hiện không khả dụng. Vì vậy, chúng tôi sẽ tiếp tục cài đặt và sử dụng giải pháp thay thế sau để bỏ qua hạn chế.

Chạy tập lệnh cài đặt an toàn MariaDB.
Mã:
$ sudo mysql_secure_installation
Bạn sẽ được yêu cầu nhập mật khẩu root. 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 xác thực 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. Trên Debian 12, mật khẩu root gắn chặt với việc bảo trì hệ thống tự động, vì vậy bạn nên để nguyên. Nhập n để tiếp tục.
Mã:
... skipping.
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] n
Tiếp theo, bạn sẽ được hỏi một số câu hỏi nhất định để cải thiện tính bảo mật của MariaDB. Nhập Y để xóa người dùng ẩn danh, không cho phép đăng nhập root 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ã:
... skipping.
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 mysql
Tạo cơ sở dữ liệu cho Magento.
Mã:
mysql> CREATE DATABASE magento;
Tạo tài khoản người dùng SQL.
Mã:
mysql> 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ã:
mysql> GRANT ALL PRIVILEGES ON magento.* TO 'magentouser'@'localhost';
Vì chúng ta không sửa đổi người dùng gốc, bạn nên tạo một người dùng SQL khác để thực hiện các tác vụ quản trị sử dụng xác thực mật khẩu. Chọn một mật khẩu mạnh cho người dùng này.
Mã:
MariaDB> GRANT ALL ON *.* TO 'navjot'@'localhost' IDENTIFIED BY 'Yourpassword32!' WITH GRANT OPTION;
Xóa quyền người dùng.
Mã:
mysql> FLUSH PRIVILEGES;
Thoát khỏi shell.
Mã:
mysql> exit

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

Debian 12 đi kèm với phiên bản Nginx cũ hơn. Để cài đặt phiên bản mới nhất, bạn cần tải xuống kho lưu trữ Nginx chính thức.

Nhập khóa ký của Nginx.
Mã:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Thêm kho lưu trữ cho phiên bản ổn định của Nginx.
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Cập nhật hệ thống kho lưu trữ.
Mã:
$ sudo apt update
Cài đặt Nginx.
Mã:
$ sudo apt install nginx
Xác minh cài đặt. Trên hệ thống Debian, lệnh sau chỉ hoạt động với sudo.
Mã:
$ sudo nginx -v
nginx version: nginx/1.24.0
Khởi động Nginx máy chủ.
Mã:
$ sudo systemctl start nginx
Kiểm tra trạng thái dịch vụ.
Mã:
? nginx.service - nginx - high performance web server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled) Active: active (running) since Wed 2023-08-02 06:45:52 UTC; 14s ago Docs: https://nginx.org/en/docs/ Process: 18326 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 18327 (nginx) Tasks: 2 (limit: 2315) Memory: 1.8M CPU: 11ms CGroup: /system.slice/nginx.service ??18327 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??18328 "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. Bạn có thể cài đặt Certbot bằng kho lưu trữ của Debian hoặc tải phiên bản mới nhất bằng công cụ Snapd. Chúng tôi sẽ sử dụng phiên bản Snapd.

Debian 12 không đi kèm Snapd đã cài đặt. Cài đặt gói Snapd.
Mã:
$ sudo apt install snapd
Chạy các lệnh sau để đảm bảo phiên bản Snapd của bạn được cập nhật.
Mã:
$ sudo snap install core && sudo snap refresh core
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 được 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
Kiểm tra xem Certbot có hoạt động bình thường không.
Mã:
$ certbot --version
certbot 2.6.0
Chạy lệnh sau để tạo SSL Chứng chỉ.
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 chứng chỉ xuống thư mục /etc/letsencrypt/live/magento.example.com trên máy chủ của bạn.

Tạo nhóm Diffie-Hellman chứng chỉ.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Kiểm tra dịch vụ lập lịch gia hạn Certbot.
Mã:
$ sudo systemctl list-timers
Bạn sẽ tìm 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
.....
Wed 2023-08-02 08:09:00 UTC 9h left Wed 2023-08-02 07:39:06 UTC 2h 59min ago snap.certbot.renew.timer snap.certbot.renew.service
Thu 2023-08-03 06:41:11 UTC 9h left Wed 2023-08-02 06:24:33 UTC 10h ago apt-daily-upgrade.timer apt-daily-upgrade.service
Wed 2023-08-02 14:06:00 UTC 11h left Sun 2021-11-14 02:03:02 UTC 5min ago apt-daily.timer apt-daily.service
Thực hiện chạy thử quy trình để kiểm tra xem việc gia hạn SSL có hoạt động không tốt.
Mã:
$ sudo certbot renew --dry-run
Nếu bạn không thấy lỗi nào, 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.

Nhập khóa GPG của Elasticsearch.
Mã:
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
Thêm kho lưu trữ Elasticsearch.
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
Cập nhật danh sách kho lưu trữ của hệ thống.
Mã:
$ sudo apt update
Cài đặt Elasticsearch.
Mã:
$ sudo apt install 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. Bạn có thể sử dụng bất kỳ giá trị nào nếu cần.

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 thông báo sau output.
Mã:
{ "name" : "magento", "cluster_name" : "elasticsearch", "cluster_uuid" : "LNFRevgvQIOGeWCdtvc7bA", "version" : { "number" : "7.17.12", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "e3b0c3d3c5c130e1dc6d567d6baef1c73eeb2059", "build_date" : "2023-07-20T05:33:33.690180787Z", "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. Debian đi kèm với Redis 6.0 nên chúng ta sẽ sử dụng kho lưu trữ Redis để cài đặt.

Nhập khóa GPG Redis chính thức.
Mã:
$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
Thêm kho lưu trữ APT vào danh sách nguồn của bạn.
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
Cập nhật kho lưu trữ hệ thống danh sách.
Mã:
$ sudo apt update
Phát hành lệnh sau để cài đặt máy chủ Redis.
Mã:
$ sudo apt install redis
Xác nhận Redis phiên bản.
Mã:
$ redis-server -v
Redis server v=7.0.12 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=d706905cc5f560c1
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/magento -p
Cấp quyền cho thư mục Magento cho người dùng.
Mã:
$ sudo chown $USER:$USER /var/www/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://account.magento.com/ 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.





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 tạo tài khoản và đăng nhập, hãy mở URL https://marketplace.magento.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 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 đó để 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/magento thư mục.
Mã:
$ cd /var/www/magento
Tạo dự án Magento. Lưu ý period ở cuối lệnh. Nó đề 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 đầu ra tương tự.
Mã:
Creating a "magento/project-community-edition" project at "./"
Installing magento/project-community-edition (2.4.6-p1) - Downloading magento/project-community-edition (2.4.6-p1) - Installing magento/project-community-edition (2.4.6-p1): Extracting archive
Created project in /var/www/magento/.
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 565 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)
...............................................
Có sự cố với tệp cấu hình Nginx mẫu do Adobe cung cấp. Chạy lệnh sau để sửa lỗi.
Mã:
$ sed -i 's/php-fpm:9000/fastcgi_backend/g' /var/www/magento/nginx.conf.sample
Chạy các lệnh sau để thiết lập quyền cho tệp và làm cho tệp nhị phân Magento có thể thực thi được. 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​

Trước khi tiến hành cài đặt, chúng ta cần sửa đổi trình cài đặt để cho phép chúng ta sử dụng MariaDB 10.11.3 hiện không được Magento hỗ trợ. Magento hỗ trợ các phiên bản MariaDB 10.2-10.6 cho đến nay.

Mở tệp /var/www/magento/app/etc/di.xml để chỉnh sửa.
Mã:
$ sudo nano /var/www/magento/app/etc/di.xml
Tìm kiếm các mục sau dòng.
Mã:
^10\.[2-6]\.
Thay thế bằng mã sau.
Mã:
^10\.([2-9]|10|11)\.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Đảm bảo bạn đang ở trong Magento thư mục.
Mã:
$ cd /var/www/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=localhost \
--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_11xb2x
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 Magento cron 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 d1957f62aa710cc367525c9ec68dd7456d4311756b5aa37d2143c4a98b25318c
* * * * * /usr/bin/php8.2 /var/www/magento/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/magento/var/log/magento.cron.log
#~ MAGENTO END d1957f62aa710cc367525c9ec68dd7456d4311756b5aa37d2143c4a98b25318c

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

Mở tệp /etc/php/8.2/fpm/pool.d/www.conf.
Mã:
$ sudo nano /etc/php/8.2/fpm/pool.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=www-datagroup=www-data trong tệp và thay đổi chúng thành nginx.
Mã:
...
; Unix user/group of the child processes. This can be used only if the master
; process running user is root. It is set after the child process is created.
; The user and group can be specified either by their name or by their numeric
; IDs.
; Note: If the user is root, the executable needs to be started with
; --allow-to-run-as-root option to work.
; Default Values: The user is set to master process running user by default.
; If the group is not set, the user's group is used.
user = nginx
group = nginx
...
Tìm listen.owner = www-datalisten.group = www-data dòng trong tệp và thay đổi chúng thành nginx.
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. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
; mode is set to 0660
listen.owner = nginx
listen.group = nginx
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 thi cho PHP-FPM và PHP-CLI lên 180 giây.
Mã:
$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 180/' /etc/php/8.2/fpm/php.ini
$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 180/' /etc/php/8.2/cli/php.ini
Tăng giới hạn bộ nhớ cho PHP-FPM từ 128MB lên 256MB. 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 = 256M/' /etc/php/8.2/fpm/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/8.2/fpm/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 25M/g' /etc/php/8.2/fpm/php.ini
Bật Nén Zlib.
Mã:
$ sudo sed -i 's/zlib.output_compression = Off/zlib.output_compression = On/g' /etc/php/8.2/fpm/php.ini
Khởi động lại PHP-FPM dịch vụ.
Mã:
$ sudo systemctl restart php8.2-fpm
Thay đổi nhóm thư mục phiên PHP thành Nginx.
Mã:
$ sudo chgrp -R nginx /var/lib/php/sessions

Bước 13 - 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 nó.
Mã:
upstream fastcgi_backend { server unix:/run/php/php8.2-fpm.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/magento; include /var/www/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 cho bạn, hãy chạy các lệnh sau.
Mã:
$ cd /var/www/magento
$ php bin/magento setup:static-content:deploy -f
$ php bin/magento indexer:reindex

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

Trước khi truy cập bảng quản trị, chúng ta cần tắt 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 tôi không định cấu hình điều đó nên cách duy nhất để truy cập bảng điều khiển là tắt tính năng này trước.

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

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

Bạn sẽ cần 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_11xb2x
Mở URL https://magento.example.com/admin_11xb2x trong trình duyệt của bạn và bạn sẽ nhận được màn hình sau.


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


Nhập thông tin đăng nhập quản trị viên được 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 Cửa hàng >> Menu 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 ở phía trước các tùy chọn Giao thông, Máy chủ và Cổng. Nhấp vào menu thả xuống cho Giao thông và chọn SMTP từ đó. Đối với hướng dẫn của chúng tôi, chúng tôi 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 và 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ạ và thực hiện những thay đổi tương tự, sau đó 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ã:
$ php /var/www/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 16 - 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ã:
$ php /var/www/magento/bin/magento module:enable Magento_AdminAdobeImsTwoFactorAuth
$ php /var/www/magento/bin/magento module:enable Magento_TwoFactorAuth
Nâng cấp thiết lập cho các mô-đun.
Mã:
$ php /var/www/magento/bin/magento setup:upgrade
Chạy lệnh sau để tạo lớp.
Mã:
$ php /var/www/magento/bin/magento setup:di:compile
Xóa bộ nhớ đệm.
Mã:
$ php /var/www/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ã:
$ php /var/www/magento/bin/magento setup:static-content:Deploy -f
Thiết lập quyền cho tệp.
Mã:
$ cd /var/www/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​

Bài hướng dẫn này kết thúc về cách cài đặt Magento eCommerce Site trên máy chủ Debian 12 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