Hướng dẫn cài đặt Magento 2.4.2 trên Ubuntu
Mới đây Magento 2.4.2 đã được phát hành với rất nhiều cải tiến bảo mật, GraphQL đồng thời bao gồm hơn 280 lỗi đã được sửa chữa. Trong bài viết này mình sẽ hướng dẫn bạn cách cài đặt Magento 2.4.2 trên Ubuntu.
Thông tin và những lưu ý trước khi cài đặt Magento 2.4.2
Đây là những thay đổi của Magento 2.4.2 so với các phiên bản trước. Chúng ta cần biết trước khi cài đặt.
- Magento 2.4.2 đã chuyển index.php vào thư mục /pub/ vì mục đích bảo mật.
- Hỗ trợ Elasticsearch 7.9.x.
- Tương thích với Varnish 6.4.
- Hỗ trợ Redix 6.x.
- Tương thích với Composer 2.x.
Các bước cài đặt Magento 2.4.2 trên Ubuntu
1. Cài đặt và cấu hình Apache
Mình đã có một bài hướng dẫn chi tiết bạn có thể tham khảo: Hướng dẫn cài đặt Apache trên Ubuntu 20.04.
2. Cài đặt MySQL
Tiến hành cài đặt MySQL bằng lệnh sau:
sudo apt install mysql-server
Khi được hỏi, hãy nhập “Y” để xác nhận cài đặt và sau đó nhấn ENTER.
Khi quá trình cài đặt hoàn tất, hãy chạy lệnh sau để bảo mật MySQL của bạn. Lệnh này sẽ loại bỏ một số cài đặt mặc định không an toàn và chặn quyền truy cập vào hệ thống cơ sở dữ liệu của bạn.
sudo mysql_secure_installation
Khi được hỏi, nhập “Y” để thiết lập.
Tiếp theo, chọn cấp độ xác thực mật khẩu. Nhập mật khẩu gốc của bạn. Máy chủ sẽ hiển thị độ mạnh yếu mật khẩu gốc bạn vừa nhập và sẽ hỏi bạn có muốn tiếp tục với mật khẩu đó hay không. Nếu bạn chấp nhận, hãy nhấn “Y”.
Đối với các câu hỏi còn lại, hãy bấm “Y” và ENTER ở mỗi lời nhắc.
Chờ cho tới khi hoàn tất, bạn kiểm tra đăng nhập vào MySQL bằng user root với lệnh:
sudo mysql
Bạn sẽ thấy như sau:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 807
Server version: 8.0.23-0ubuntu0.20.04.1 (Ubuntu)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Sau đó, thoát khỏi bảng điều khiển MySQL bằng lệnh:
exit
2.1. Cấu hình quyền truy cập mật khẩu cho tài khoản Root MySQL
Đăng nhập với user root, chạy lần lượt lệnh:
sudo mysql
SELECT user,authentication_string,plugin,host FROM mysql.user;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mat-khau-cua-ban';
Lưu ý: Bạn hãy nhập mật khẩu của mình tại ‘mat-khau-cua-ban’.
Xác minh bảng mysql.user bằng lệnh:
SELECT user,authentication_string,plugin,host FROM mysql.user;
exit
2.2. Tạo người dùng MySQL mới cho Magento 2
Đăng nhập với người dùng root, chạy lần lượt các lệnh:
mysql -u root -p
SELECT user,authentication_string,plugin,host FROM mysql.user;
CREATE USER 'magento2'@'localhost' IDENTIFIED BY 'mat-khau-cua-ban';
ALTER USER 'magento2'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mat-khau-cua-ban';
Cấp tất cả các đặc quyền cho user magento2:
GRANT ALL PRIVILEGES ON *.* TO 'magento2'@'localhost' WITH GRANT OPTION;
SELECT user,authentication_string,plugin,host FROM mysql.user;
exit
2.3. Tạo cơ sở dữ liệu Magento 2
Dùng các lệnh sau để tạo database Magento 2:
mysql -u magento2 -p
CREATE DATABASE magento2;
exit
3. Cài đặt PHP 7.4
Cập nhật kho lưu trữ APT của bạn:
sudo apt update
Cài đặt PHP 7.4 và các gói bằng lệnh:
sudo apt install php7.4 libapache2-mod-php php-mysql
Cài đặt xong, hãy xác minh phiên bản PHP của bạn:
php -v
Kết quả hiện ra sẽ là:
PHP 7.4.3 (cli) (built: Oct 6 2020 15:47:56) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
Tiếp theo, chúng ta sẽ chỉnh sửa file /etc/apache2/mods-enabled/dir.conf với lệnh:
sudo nano /etc/apache2/mods-enabled/dir.conf
Kết quả hiện ra, bạn sẽ để ý tới vị trí của index.php.
Sau đó, tiến hành chuyển index.php lên vị trí đầu tiên. Khi đó file dir.conf sẽ như sau:
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Bước tiếp theo, chúng ta sẽ cài đặt và bật mbstring extension. Chạy lần lượt các lệnh:
sudo apt install php7.4-mbstring
sudo phpenmod mbstring
Bật Apache rewrite module:
sudo a2enmod rewrite
Cài module php cho Magento 2.4.2
sudo apt install php7.4-bcmath php7.4-intl php7.4-soap php7.4-zip php7.4-gd php7.4-json php7.4-curl php7.4-cli php7.4-xml php7.4-xmlrpc php7.4-gmp php7.4-common
Sau cùng, tải lại Apache để các thay đổi có hiệu lực.
sudo systemctl reload apache2
4. Cài đặt Elasticsearch
Đầu tiên, cài đặt OpenJDK 11 bằng lệnh:
sudo apt install openjdk-11-jdk
Hãy kiểm tra phiên bản java bằng lệnh:
java -version
Tiến hành cài đặt Elasticsearch:
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt update
sudo apt-get install elasticsearch=7.9.3
4.1. Cấu hình Elasticsearch
Đầu tiên, bạn chạy lệnh:
sudo a2enmod proxy && sudo a2enmod proxy_http && sudo service apache2 restart
Sau đó, tạo tệp máy chủ ảo mới cho proxy Elasticsearch:
sudo nano /etc/apache2/ports.conf
Thêm “Listen 8080” vào tệp máy chủ ảo, sau khi thêm sẽ như sau:
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf
Listen 80
Listen 8080 //After Add Listen 8080
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Tiếp theo tạo tệp có tên theo dạng domain-của-bạn-elasticsearch.conf, bằng lệnh:
sudo nano /etc/apache2/sites-available/domain-cua-ban-elasticsearch.conf
Sửa đổi tệp trên thành đoạn code dưới đây:
<VirtualHost *:8080>
ProxyPass "/" "http://localhost:9200/"
ProxyPassReverse "/" "http://localhost:9200/"
</VirtualHost>
Bây giờ, cổng Elasticsearch là 8080. Hãy ghi nhớ điều này, chúng ta sẽ sử dụng nó trong câu lệnh cài đặt Magento 2.4.2.
sudo a2ensite domain-cua-ban-elasticsearch
sudo service apache2 restart
Khởi động và kích hoạt Elasticsearch.
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
Xác minh proxy Elasticsearch với cổng 8080 bằng lệnh:
curl -i http://localhost:8080/_cluster/health
5. Cài đặt Composer 2
Di chuyển trở lại thư mục gốc.
cd ~
Tải và cài đặt Composer với lần lượt các lệnh:
curl -sS https://getcomposer.org/installer -o composer-setup.php
sudo php composer-setup.php --install-dir=/usr/bin --filename=composer
Bạn sẽ thấy như sau:
All settings correct for using Composer
Downloading...
Composer (version 2.0.13) successfully installed to: /usr/bin/composer
Use it: php /usr/bin/composer
Để kiểm tra Composer 2 đã được cài đặt trong Ubuntu hay chưa, sử dụng lệnh:
composer
Nếu đã được cài đặt thành công, bạn sẽ thấy như sau:
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 2.0.13 2021-04-27 13:11:08
Usage:
command [options] [arguments]
Options:
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
...
6. Tải Magento 2.4.2
Di chuyển tới thư mục html với lệnh:
cd /var/www/html
Tạo một Composer project mới, bạn có thể chọn Magento Open Source hoặc Magento Commerce.
Magento Open Source
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition <ten-thu-muc-cai-dat>
Ví dụ:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition magento2
Tiếp theo, tải xuống Magento 2 Open Source:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition=<phien-ban-magento> <ten-thu-muc-cai-dat>
Ví dụ:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition=2.4.2-p1 magento2
Magento Commerce
Tương tự như trên.
composer create-project --repository-url=https://repo.magento.com/ magento/project-enterprise-edition <ten-thu-muc-cai-dat>
Tải xuống Magento 2 Commerce:
composer create-project --repository-url=https://repo.magento.com/ magento/project-enterprise-edition=<phien-ban-magento> <ten-thu-muc-cai-dat>
6.1. Xét quyền đối với tệp
Để xét quyền, bạn chạy lần lượt từng lệnh sau:
cd /var/www/html/<thu-muc-cai-dat-magento>
find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
chown -R :www-data .
chmod u+x bin/magento
7. Cài đặt Magento 2.4.2
Di chuyển tới thư mục cài đặt Magento 2.
cd /var/www/html/<thu-muc-cai-dat-magento>
Sử dụng một lệnh dưới đây để cài đặt Magento 2.4.2:
php bin/magento setup:install \
--base-url=<domain-cua-ban> \
--db-host=localhost \
--db-name=magento2 \
--db-user=magento2 \
--db-password=<mat-khau-database-cua-magento2-user> \
--admin-firstname=Admin \
--admin-lastname=Admin \
[email protected] \
--admin-user=admin \
--admin-password=<mat-khau-admin> \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1 \
--search-engine=elasticsearch7 \
--elasticsearch-host=localhost \
--elasticsearch-port=8080
Bạn có thể tùy chỉnh các thuộc tính theo mong muốn ở lệnh cài đặt và chờ cho đến khi cài đặt thành công.
8. Thay đổi DocumentRoot thành Pub
Bạn có thể đọc tài liệu chi tiết từ Magento: https://devdocs.magento.com/guides/v2.4/install-gde/tutorials/change-docroot-to-pub.html.
Nếu bạn nối tên thư mục vào tên máy chủ hoặc địa chỉ IP của máy chủ để tạo ra URL khi bạn cài đặt Magento (ví dụ: http://<ip-cua-ban>/magento2 hoặc http://<sever-hostname-cua-ban>/magento2 ), bạn sẽ cần phải xóa nó.
8.1. Chỉnh sửa tệp máy chủ ảo
Chạy lệnh:
sudo nano /etc/apache2/sites-available/000-default.conf
Thêm đường dẫn đến pub/ trong thư mục Magento vào DocumentRoot, như sau:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/magento2/pub
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory "/var/www/html">
AllowOverride all
</Directory>
</VirtualHost>
Khởi động lại Apache để có hiệu lực:
sudo systemctl restart apache2
8.2. Cập nhật URL base
Đăng nhập với user magento2:
mysql -u magento2 -p
Chỉ định cơ sở dữ liệu Magento bạn đã tạo khi cài đặt Magento:
use magento2
Cập nhật URL:
Cho IP:
UPDATE core_config_data SET value='http://<ip-cua-ban>' WHERE path='web/unsecure/base_url';
Cho Hostname:
UPDATE core_config_data SET value='http://<server-hostname-cua-ban>' WHERE path='web/unsecure/base_url';
8.3. Cập nhật file env.php
Di chuyển tới file env.php:
sudo nano /var/www/html/magento2/app/etc/env.php
Thêm đoạn dưới đây cần có trong file:
'directories' => [
'document_root_is_pub' => true
]
8.4. Chuyển đổi chế độ
Đi tới thư mục cài đặt Magento 2:
cd /var/www/html/magento2
Chuyển sang chế độ production bằng lệnh:
php bin/magento deploy:mode:set production
php bin/magento cache:flush
Làm mới lại trình duyệt của bạn và đảm bảo rằng storefront hiển thị chính xác.
Chuyển sang chế độ developer:
php bin/magento deploy:mode:set developer
php bin/magento cache:flush
Tương tự, làm mới trình duyệt của bạn và xác minh rằng storefront hiển thị chính xác.
Lưu ý: Nếu bạn thấy storefront hiển thị lỗi 500 internal server error, vui lòng thiết lập quyền cho tệp Magento 2 để fix theo bài viết: Hướng dẫn fix lỗi 500 Internal Server Error trong Magento 2.
9. Cấp quyền cho các thư mục
Ở bước này bạn sẽ phải cấp quyền cho các thư mục bằng các lệnh sau:
chmod -R 777 var
chmod -R 777 pub/static
chmod -R 777 generated
chmod -R 777 generated/
10. Kiểm tra kết quả
Đừng quên chạy các lệnh sau:
php bin/magento s:up
php bin/magento s:s:d -f
php bin/magento c:f
Lưu ý: Nếu bạn gặp lỗi “Failed to send the message. Please contact the administrator” ở trang admin, bạn cần tắt module Two-Factor Authorization bằng lệnh:
php bin/magento module:disable Magento_TwoFactorAuth
Như vậy là chúng ta đã cài đặt thành công Magento 2.4.2 trên Ubuntu. Đây là kết quả:
Bài viết này khá dài, nên bạn hãy đọc thật kỹ và làm đủ các bước để tránh phát sinh lỗi trong quá trình cài đặt Magento 2.4.2.
Chúc bạn cài đặt thành công.
Nếu bạn có bất kỳ thắc mắc nào hãy comment phía bên dưới và chờ đợi approve kèm lời giải đáp.
Tham khảo thêm các bài Hướng dẫn Magento 2.