Cách cài đặt Magento eCommerce trên Ubuntu 22.04 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 và được đặt tên là Adobe eCommerce. 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 Ubuntu 22.04 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 nhu cầu.
Mã:
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-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. Ubuntu đ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ẽ nhận được kết quả sau.
Mã:
Status: inactive
Cho phép cổng SSH để tường lửa không làm gián đoạn kết nối hiện tại khi bật nó.
Mã:
$ sudo ufw allow OpenSSH
Cho phép cả cổng HTTP và HTTPS.
Mã:
$ sudo ufw allow http
$ sudo ufw allow https
Kích hoạt Tường lửa
Mã:
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Kiểm tra lại trạng thái của tường lửa.
Mã:
$ sudo ufw status
Bạn sẽ thấy trạng thái tương 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ó​

Ubuntu 22.04 đi kèm với phiên bản PHP 8.1.2, phiên bản này hơi lỗi thời. Chúng tôi sẽ cài đặt phiên bản PHP 8.2 mới nhất bằng kho lưu trữ PHP của Ondrej.
Mã:
$ sudo add-apt-repository ppa:ondrej/php
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 libcurl14-openssl-dev
Xác minh cài đặt.
Mã:
$ php --version
PHP 8.2.5 (cli) (built: Apr 14 2023 04:27:02) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.5, Copyright (c) Zend Technologies with Zend OPcache v8.2.5, 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 MySQL​

Ubuntu 22.04 được tích hợp phiên bản MySQL mới nhất. Bạn có thể cài đặt nó bằng một lệnh duy nhất.
Mã:
$ sudo apt install mysql-server
Kiểm tra phiên bản MySQL.
Mã:
$ mysql --version
mysql Ver 8.0.33-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))
Bước này cần thiết cho MySQL phiên bản 8.0.28 trở lên. Nhập MySQL Shell.
Mã:
$ sudo mysql
Chạy lệnh sau để đặt mật khẩu cho người dùng root của bạn. Đảm bảo mật khẩu có sự kết hợp giữa số, chữ hoa, chữ thường và ký tự đặc biệt.
Mã:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';
Thoát khỏi shell.
Mã:
mysql> exit
Chạy cài đặt bảo mật MySQL script.
Mã:
$ sudo mysql_secure_installation
Đầu tiên, bạn sẽ được yêu cầu nhập mật khẩu gốc. Nhập mật khẩu. Tiếp theo, bạn sẽ được yêu cầu cài đặt Thành phần Xác thực Mật khẩu. Thành phần này sẽ kiểm tra độ mạnh của mật khẩu được sử dụng trong MySQL. Nhấn Y để cài đặt. Tiếp theo, bạn sẽ được yêu cầu đặt mức chính sách xác thực mật khẩu. Chọn 2 vì đây là mật khẩu mạnh nhất.
Mã:
Securing the MySQL server deployment.
Enter password for user root:
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: Y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Using existing password for root.
Estimated strength of the password: 100
Tiếp theo, nhập N để từ chối thay đổi mật khẩu gốc của bạn. Ngoài ra, hãy 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 bảng đặc quyền.
Mã:
Change the password for root ? ((Press y|Y for Yes, any other key for No) : N ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : Y
Success.
By default, MySQL 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : Y
Success.
All done!

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

Đăng nhập vào shell MySQL. Nhập mật khẩu gốc của bạn khi được nhắc.
Mã:
$ sudo mysql -u root -p
Tạo cơ sở dữ liệu cho Magento.
Mã:
mysql> CREATE DATABASE magento;
Tạo người dùng SQL tài khoản.
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';
Xóa người dùng quyền.
Mã:
mysql> FLUSH PRIVILEGES;
Thoát khỏi shell.
Mã:
mysql> exit

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

Ubuntu 22.04 đ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 arch=amd64] \
http://nginx.org/packages/ubuntu `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.
Mã:
$ nginx -v
nginx version: nginx/1.24.0
Khởi động máy chủ Nginx.
Mã:
$ sudo systemctl start nginx

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 Ubuntu hoặc lấy phiên bản mới nhất bằng công cụ Snapd. Chúng ta sẽ sử dụng phiên bản Snapd.

Ubuntu 22.04 đi kèm với Snapd được cài đặt theo mặc định. Chạy các lệnh sau để đảm bảo rằng 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 rằng 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
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
.....
Sun 2023-02-26 06:32:00 UTC 9h left Sat 2023-02-25 18:04:05 UTC 2h 59min ago snap.certbot.renew.timer snap.certbot.renew.service
Sun 2023-02-26 06:43:20 UTC 9h left Sat 2023-02-25 10:49:23 UTC 10h ago apt-daily-upgrade.timer apt-daily-upgrade.service
Sun 2023-02-26 09:00:06 UTC 11h left Sat 2023-02-25 20:58:06 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 kho lưu trữ của hệ thống list.
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 nó.
Mã:
-Xms1g
-Xmx1g
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" : "6yks8tZ6T4GskIwWoXuSLA", "version" : { "number" : "7.17.10", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "fecd68e3150eda0c307ab9a9d7557f5d5fd71349", "build_date" : "2023-04-23T05:33:18.138275597Z", "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. Ubuntu đ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 danh sách kho lưu trữ hệ thống.
Mã:
$ sudo apt update
Phát hành lệnh sau để cài đặt Redis máy chủ.
Mã:
$ sudo apt install redis
Xác nhận phiên bản Redis.
Mã:
$ redis-server -v
Redis server v=7.0.11 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=3af367a78d5e21e9
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 lệnh.
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
Chuyển sang /var/www thư mục.
Mã:
$ cd /var/www
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.


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 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 dự án Magento.
Mã:
$ composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition magento
Bạn sẽ được yêu cầu nhập tên người dùng và mật khẩu cho kho lưu trữ. Sử dụng khóa công khai làm tên người dùng và khóa riêng làm mật khẩu. Bạn sẽ được hỏi xem bạn có muốn lưu trữ thông tin xác thực trong thư mục cấu hình Composer không. Nhập y để thực hiện.
Mã:
Creating a "magento/project-community-edition" project at "./magento" Authentication required (repo.magento.com): Username: 53211xxxxxxxxxxxxxxxxxxxxxxxxxxx Password:
Do you want to store credentials for repo.magento.com in /home/navjot/.config/composer/auth.json ? [Yn] y
Installing magento/project-community-edition (2.4.6) - Downloading magento/project-community-edition (2.4.6) - Installing magento/project-community-edition (2.4.6): 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: 564 installs, 0 updates, 0 removals - Locking 2tvenom/cborencode (1.0.2) - Locking adobe-commerce/adobe-ims-metapackage (2.2.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ã:
$ 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 .
$ sudo chmod u+x bin/magento

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

Đảm bảo bạn đang ở trong thư mục Magento.
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 thông báo tương tự đầu ra.
Mã:
.......
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_19uadb
Nothing to import.
Ghi lại URI quản trị mà bạn sẽ cần sau này để truy cập bảng điều khiển quản trị.

Tạo các công việc cron Magento.
Mã:
$ php bin/magento cron:install
Xác minh cron công việc.
Mã:
$ crontab -l
Bạn sẽ thấy kết quả sau.
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 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 = 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 - Tắt xác thực hai yếu tố 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 tính năng đó 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_19uadb
Mở URL https://magento.example.com/admin_19uadb 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ủ Ubuntu 22.04 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