Hướng dẫn cài đặt Magento 2.4.6 trên Localhost XAMPP (Mới nhất 2023)

Trong những năm gần đây Magento phiên bản 2.4 đã được ra mắt với nhiều cải tiến và tính năng hữu ích, đặc biệt Magento chuyển sang phương thức tìm kiếm Elasticsearch khiến mọi người háo hức cài đặt nó trên localhost, điều khó khăn là khi cài đặt như cách thông thường thì nút cài đặt bị mất khiến ta không thể cài đặt, sau một thời gian nghiên cứu thì chúng ta đã có thể cài đặt nó trên XAMPP. Trong bài viết này mình sẽ hướng dẫn các bạn cách cài đặt các phiên bản Magento 2.4 và đặc biệt là bản mới nhất 2.4.6 trên Localhost XAMPP.

1. Kiểm tra yêu cầu hệ thống của Magento 2.4

Đầu tiên, bạn hãy kiểm tra các yêu cầu hệ thống của Magento 2.4 để chọn phiên bản XAMPP và Elasticsearch tương thích.

Bạn cần chú ý đến các yêu cầu phiên bản của Apache, MySQL, PHP và Elasticsearch. Ở đây, Magento 2.4 yêu cầu:

  • Apache 2.4
  • MySQL 8.0
  • PHP 7.3, 7.4
  • Elasticsearch 7.6.x

Ngoài ra, bạn nên chú ý đến một vài extension PHP bắt buộc.

2. Tải xuống và cài đặt XAMPP

Dựa trên các yêu cầu của Magento 2.4, mình đã tiến hành chọn ra một phiên bản phù hợp là XAMPP 7.4.12, với các bản mới từ 2.4.4 trở lên thì mình chọn XAMPP 8.1.17. Bạn có thể tải xuống XAMPP.

 Tiến hành tải về và cài đặt XAMPP 7.4.12.

3. Tải xuống và cài đặt Composer

Các bạn truy cập vào https://getcomposer.org/download/ để tải Composer.

Tải về cài đặt như bình thường đến phần đường dẫn chọn đúng đường dẫn đến php.exe của XAMPP vừa cài đặt.

Các bạn có thể kiểm tra xem cài đặt Composer có thành công hay không bằng cách mở CMD với đặc quyền của quản trị viên rồi gõ lệnh: composer.

Để tránh các lỗi không đáng có trong quá trình tải và cài đặt phiên bản mới như Magento 2.4.6, các bạn nên sử dụng composer version 2.4.2.

Chúng ta sử dụng lệnh sau để chuyển version: composer self-update 2.4.2

4. Tải xuống và cài đặt Elasticsearch

Kể từ Magento 2.4, MySQL không còn được sử dụng để tìm kiếm. Các bạn phải sử dụng Elasticsearch, đây là một phần rất quan trọng để cài đặt Magento 2.4.

Mình tải Elasticsearch 7.6.2 và giải nén vào thư mục htdocs của XAMPP, các bạn có thể sử dụng phiên bản mới nhất tại: https://www.elastic.co/downloads/elasticsearch

Vào thư mục elasticsearch-7.6.2 / bin và chạy elasticsearch.bat bằng quyền của quản trị viên

Các bạn có thể kiểm tra nó tại localhost với cổng 9200: localhost:9200

5. Cấu hình các extension trước khi cài đặt

Mở bảng điều khiển XAMPP. Sau đó, mở php.ini trong cấu hình của Apache.

Với các phiên bản 2.4 cũ

Tìm các dòng:

;extension=intl
;extension=soap
;extension=sockets
;extension=xsl

Xóa dấu “;” ở đằng trước các dòng để thành:

extension=intl
extension=soap
extension=sockets
extension=xsl

Sau đó khởi động lại Apache và MySQL trong Bảng điều khiển XAMPP.

Với các phiên bản mới từ 2.4.4 – 2.4.6

Cần bật các extension sau:

;extension=gd 
;extension=intl 
;extension=soap 
;extension=xsl 
;extension=sockets 
;extension=sodium

Thay đổi một số dòng:

max_execution_time=3000 
max_input_time=2000 
memory_limit=3G

Sau đó khởi động lại Apache và MySQL.

6. Tải Magento 2.4

Chúng ta có 2 cách để tải Magento:

Cách 1: Truy cập vào trang github Magento sau đó chọn phiên bản tải về và giải nén.

Tải về xong, tạo một thư mục trong htdocs rồi giải nén file Magento vào đó.

Cách 2: Tải thông qua lệnh composer:

composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition magento246

Lưu ý thứ nhất: “magento246” là tên thư mục bạn có thể đặt tùy ý. Để tải các phiên bản khác bằng lệnh bạn chỉ cần thêm thuộc tính, ví dụ như sau:

composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition=2.4.5 magento245

Lưu ý thứ 2: Nếu bạn nhận được yêu cầu Authentication required (repo.magento.com), bạn cần có tài khoản tại https://marketplace.magento.com/customer/accessKeys/. Lấy Access Keys và điền vào tương ứng “username” là public key, “password” là private key.

7. Sửa lỗi Magento_Theme và một số lỗi khác trước khi cài đặt

Áp dụng với tất cả các phiên bản 2.4

Để sửa lỗi Module ‘Magento_Theme’ mở file php theo đường dẫn xampp/htdocs/magento_folder/vendor/magento/framework/Image/Adapter/Gd2.php, tìm tới dòng 86 thay thế hàm validateURLScheme() bằng mã dưới đây:

private function validateURLScheme(string $filename) : bool
{
    if(!file_exists($filename)) { // if file not exist
        $allowed_schemes = ['ftp', 'ftps', 'http', 'https'];
        $url = parse_url($filename);
        if ($url && isset($url['scheme']) && !in_array($url['scheme'], $allowed_schemes)) {
            return false;
        }
    }
    return true;
}

Áp dụng thêm ở các phiên bản từ 2.4.4 – 2.4.6

Mở file magento_folder\vendor\magento\framework\View\Element\Template\File\Validator.php, tìm và sửa strpos($realPath, $directory) thành strpos($path, $directory).

Tiếp theo, mở file app/etc/di.xml, tìm và sửa:

“Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink”

Sang thành:

“Magento\Framework\App\View\Asset\MaterializationStrategy\Copy”

Sau khi sửa xong hãy nhớ lưu lại.

8. Tạo virtual host (Tùy chọn)

Để có một url đẹp hơn theo sở thích, bạn hãy làm theo các bước sau:

Mở file C:\xampp\apache\conf\extra\httpd-vhosts.conf và thêm vào đoạn sau:

<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/magento_folder/pub"
    ServerName magetop.magento.com
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs"
    ServerName localhost
</VirtualHost>

Chỉnh ServerName theo mong muốn của bạn, địa chỉ này sẽ là địa chỉ ảo mà bạn có thể sử dụng để truy cập trang Magento sau khi cài đặt xong.

Tiếp theo, mở file C:\Windows\System32\drivers\etc\hosts, rồi thêm dòng sau vào phần dưới cùng của file

127.0.0.1 magetop.magento.com

Ngoài ra việc tạo virtual host cũng giúp bạn không cần chỉnh file htaccess để fix lỗi 404 ở bước 10.

9. Tạo cơ sở dữ liệu

Tạo cơ sở dữ liệu mới bằng cách truy cập localhost/phpmyadmin. Tiếp theo, chọn New, đặt tên cho cơ sở dữ liệu và nhấp vào Create.

10. Cài đặt Magento 2.4

Mở thư mục chứa Magento 2.4 đã tạo trước đó, trên thanh địa chỉ gõ cmd hoặc đường dẫn của Command Prompt.

Cửa sổ Command Prompt sẽ hiện ra, chúng ta nhập lệnh:

php bin/magento setup:install --base-url="http://localhost/magento241/" --db-host="localhost" --db-name="magento241" --db-user="root" --admin-firstname="admin" --admin-lastname="admin" --admin-email="[email protected]" --admin-user="admin" --admin-password="admin123" --language="en_US" --currency="USD" --timezone="America/Chicago" --use-rewrites="1" --backend-frontname="admin" --search-engine=elasticsearch7 --elasticsearch-host="localhost" --elasticsearch-port=9200

Lưu ý:  

  • db-name là tên của database đã tạo ở bước 9, thông tin admin account các bạn có thể đặt tùy ý.
  • Nếu bạn tạo virtual host thì hãy thay base-url bằng ServerName. Ví dụ: –base-url=”http://magetop.magento.com/”
  • Trong quá trình cài đặt luôn bật elasticsearch.bat như bước 4.

Chờ cho quá trình cài đặt hoàn tất.

Sau đó, các bạn chạy các lệnh:

php bin/magento indexer:reindex
php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy -f
php bin/magento cache:flush

Nếu đã tạo virtual host:

Với những bạn đã tạo virtual host ở bước 8 thì tới đây bạn đã có thể truy cập trang cửa hàng bằng ServerName và ServerName/admin để vào trang admin.

Nếu không tạo virtual host:

Trường hợp bạn cài Magento 2.4.1 thì hãy truy cập trang cửa hàng: localhost/magento241 và đường dẫn để vào Admin Panel: localhost/magento241/admin.

Từ phiên bản 2.4.2 trở đi, bạn sẽ bị lỗi 404 khi truy cập đường dẫn như trên.

Xử lý lỗi 404 Not Found (áp dụng với Magento 2.4.2 trở lên)

Lưu ý: Bắt đầu từ phiên bản Magento 2.4.2, Magento đã có sự thay đổi về việc di chuyển Document Root đến thư mục pub để cải thiện bảo mật và hiệu suất của trang web. Do đó để truy cập vào cửa hàng bạn cần thêm pub vào url như sau localhost/magento241/pub, admin là localhost/magento241/pub/admin.

Tuy nhiên, việc này khá là bất tiện vì vào trang nào bạn cũng cần thêm pub. Nếu bạn đã tạo virtual host thì sẽ không bị vấn đề này. Còn không thì bạn sẽ fix như sau:

Mở file .htaccess tại folder gốc của Magento và thay toàn bộ nội dung thành:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^pub/
RewriteCond %{REQUEST_URI} !^/setup/
RewriteCond %{REQUEST_URI} !^/update/
RewriteCond %{REQUEST_URI} !^/dev/
RewriteRule .* pub/$0 [L]
DirectoryIndex index.php

Sau đó lưu lại, bạn sẽ có thể truy cập bình thường không cần thêm pub trong url.

Xử lý lỗi Failed to send the message

Nếu bạn gặp lỗi: “Failed to send the message. Please contact the administrator”.

Các 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 trên localhost. Đây là kết quả:

Nếu bạn thấy trang quản trị của mình không hiển thị thông tin, chỉ có màu xám thì bạn tham khảo: Hướng dẫn Fix lỗi trang Admin Magento 2 không hiển thị.

Hãy để lại bình luận nếu bạn có bất kì thắc mắc nào và đợi admin approve. Cảm ơn các bạn đã đọc bài viết.

4.6 8 votes
Article Rating

Callula Huy

Callula is the Marketing Executive at Magetop. With more than 5 years of copywriting under her belt, Callula is into creating valuable content that is straight to the point. Life student. Workaholic. Foreign languages and traveling aficionado.

Leave a Reply or put your Question here

22 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Mai
Mai
November 30, 2020 3:07 pm

AD cho hỏi, mình làm theo bạn hướng dẫn mà tới bước chạy elasticsearch.bat báo lỗi nhưng khi mở localhost:9200 thì vẫn ra như AD. Đến bước cài đặt magento chạy cmd thì lại lỗi không tìm thấy elastic search. Mong add phản hồi giúp mình. Cảm ơn ạ.

Adam Roger
Admin
December 1, 2020 1:48 am
Reply to  Mai

Magetop xin chào bạn!

Về vấn đề của bạn, bạn có thể làm theo các lưu ý sau:
1. Bạn thử chạy elastichsearch.bat dưới quyền quản trị, sau đó bạn kiểm tra localhost:9200 xem nó có hoạt động không?
2. Khi bạn cài Magento, vui lòng không tắt cmd chạy elastichsearch.bat vì khi bạn tắt nó đi Magento sẽ không tìm thấy ext elastichsearch.

Cảm ơn bạn đã theo dõi bài viết! Chúc bạn cài đặt thành công Magento 2.4

Nam
Nam
December 18, 2020 5:41 am

Anh cho em hỏi 1 chút, làm thế nào để cài thêm sample theme vậy ạ, em đã thử làm theo trong bài viết này https://www.magetop.com/blog/cai-sample-data-trong-magento-2 nhưng bị dừng lại ở chỗ Module ‘Magento_CatalogSampleData’: không thấy nhúc nhích gì, đây là bản 2.4.1. Mong anh giúp ạ 🙂

Adam Roger
Admin
January 25, 2021 2:55 am
Reply to  Nam

Vậy là bạn bị cache từ trước rồi, xoá sạch cache + cookie rồi cài đặt từ đầu nhé bạn, chúc bạn thành công.

tranp
tranp
January 13, 2021 2:24 am

php bin/magento cache:flush mình chạy lệnh nay ko dc nó ra lỗi : The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

Adam Roger
Admin
January 15, 2021 3:10 am
Reply to  tranp

Chào bạn,
Vấn đề này là do bạn đang bật chế độ Maintenance. Để tắt chế độ bạn có thể tham khảo bài viết: https://www.magetop.com/blog/bat-tat-che-do-maintenance-magento-2/

Đức Hải
Đức Hải
March 9, 2021 9:36 am

Anh ơi em bị lỗi khi chạy cmd:
Parse error: syntax error, unexpected ‘;’ in E:\xampp\htdocs\prjmagento\vendor\magento\framework\Image\Adapter\Gd2.php on line 91
{“messages”:{“error”:[{“code”:500,”message”:”Server internal error. See details in report api\/1011165392484″}]}}PHP Fatal error: Uncaught Exception: User Error: Some transactions have not been committed or rolled back in E:\xampp\htdocs\prjmagento\vendor\magento\framework\DB\Adapter\Pdo\Mysql.php on line 4021 in E:\xampp\htdocs\prjmagento\vendor\magento\framework\App\ErrorHandler.php:61
Stack trace:
#0 [internal function]: Magento\Framework\App\ErrorHandler->handler(256, ‘Some transactio…’, ‘E:\xampp\htdocs…’, 4021, Array)
#1 E:\xampp\htdocs\prjmagento\vendor\magento\framework\DB\Adapter\Pdo\Mysql.php(4021): trigger_error(‘Some transactio…’, 256)
#2 [internal function]: Magento\Framework\DB\Adapter\Pdo\Mysql->__destruct()
#3 {main}
thrown in E:\xampp\htdocs\prjmagento\vendor\magento\framework\App\ErrorHandler.php on line 61
Em làm đúng theo hướng dẫn nhưng khi chạy setup trên cmd thì nó báo lỗi vậy ạ

Adam Roger
Admin
March 10, 2021 1:56 am
Reply to  Đức Hải

Bạn cần kiểm tra lại php version đang sử dụng rồi chạy lại CMD là làm việc.

xuan
xuan
August 31, 2021 9:19 am

AD cho hỏi mình làm tới setup tới bước cuối cùng truy cập vào web thì lỗi 500, nhờ ad giúp với . thanks

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at postmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

Apache/2.4.46 (Win64) OpenSSL/1.1.1h PHP/7.4.12 Server at localhost Port 80

Adam Roger
Admin
September 1, 2021 3:44 am
Reply to  xuan

Cám ơn bạn đã quan tâm, lỗi 500 bạn có thể check qua link này nhé : https://www.magetop.com/blog/fix-loi-500-internal-server-error-trong-magento-2

Lam
Lam
April 26, 2023 8:54 am

Chao AD,
Cho mình hỏi chút, các bước trên mình đều làm ok hết, ko báo lỗi j, cài đặt cũng ok hết
nhưng khi truy cập thì báo Not Found kiểu như folder không tồn tại, hoạc kiểu như .htaccess ko chạy dc, nó ko truy cập vào dc pup/index.php https://prnt.sc/UGcEAFNN3_dH
– nhưng htaccess mặc định xampp đã bật, mình kiểm tra httpd.conf cũng bật AllowOverride All
– cái lỗi này mình bị từ trước tới nay rồi, ko thể cài lên localhost dc, cả xampp và wamp, đã cài thử ở máy bàn lẫn laptop, đều bị lỗi tương tự
– nếu cài bản cũ hơn (file index.php nằm ở thư mục root) thì nó chạy dc phần php, còn các link css, js đều không chạy dc
Mong ad giup. Cảm ơn

Adam Roger
Admin
April 26, 2023 9:27 am
Reply to  Lam

Cảm ơn bạn đã quan tâm, với các phiên bản mới bạn sẽ phải thêm pub vào url, ví dụ như của bạn thì url sẽ là: localhost/magento/pub và admin là localhost/magento/pub/admin. Để tránh bị lỗi này bạn hãy tạo virtual host ở bước 8 rồi tiền hành cài đặt lại hoặc sửa lại file htaccess như sau:
RewriteEngine on

RewriteCond %{REQUEST_URI} !^pub/

RewriteCond %{REQUEST_URI} !^/setup/

RewriteCond %{REQUEST_URI} !^/update/

RewriteCond %{REQUEST_URI} !^/dev/

RewriteRule .* pub/$0 [L]

DirectoryIndex index.php

Nam
Nam
April 26, 2023 10:39 am

Xin chào,
Em đã rất cố gắng cài Magento 2.4.6, cuối cùng thì cũng vào được admin, tuy nhiên ở màn hình homepage có chữ LUMA Homepage rồi, thế nhưng chưa có những nội dung phía dưới như của admin. Hiện tại vẫn còn dòng CMS homepage content goes here. Liệu đây là do em chưa có dữ liệu hay do em bị lỗi ạ?

Em xin chân thành cảm ơn

Adam Roger
Admin
April 26, 2023 11:03 am
Reply to  Nam

Cảm ơn bạn đã quan tâm, cái này là do phiên bản của bạn là bản không có sample data nên không có vấn đề gì cả, chúc mừng bạn đã cài đặt thành công

Hoàng Nam
Hoàng Nam
May 24, 2023 9:27 am

Chào ad,
Hiện tại, mình đang triển khai dự án trên một shared host, không thể sử dụng elastic search. Ad có thể cho mình một số phương án được không ạ?
Mình đang thiên về việc sử dụng Legacy Mysql Search, tuy nhiên mình không biết mình phải cài đặt nó như thế nào. Ad có thể giúp mình được không?

Adam Roger
Admin
May 24, 2023 10:48 am
Reply to  Hoàng Nam

Chào bạn,
Với các phiên bản mới của Magento thì việc cài đặt elasticsearch là bắt buộc. Tuy nhiên thì trường hợp này bạn có thể thử với module Legacy Mysql Search: https://github.com/swissup/module-search-mysql-legacy

Có bao gồm cả cách cài đặt không có Elasticsearch, chúc bạn thành công với solution này

Nhân
Nhân
May 25, 2023 3:51 am

Chào ad.
Mình đang cài Magento 2 trên máy ảo windows. Tuy nhiên, mình vẫn bị lỗi 404 not found dù là đã sửa file .htaccess. Không biết lỗi có thể do đâu nữa nhỉ?

Adam Roger
Admin
May 26, 2023 4:19 am
Reply to  Nhân

Chào bạn,
Bạn có thể tạo virtual host rồi cài lại để giải quyết lỗi này.

Hoang
Hoang
June 11, 2023 6:59 am

when I setup Elasticsearch, it is setup for so long time 2hours anh then not finished…
-> [2023-06-11T12:08:00,358][INFO ][o.e.m.j.JvmGcMonitorService] [ADMIN] [gc][293] overhead, spent [637ms] collecting in the last [1.7s]
…..
Please help to guide me

Hoang
Hoang
June 11, 2023 7:37 am

Dear, I can not setup elasticsearch.bat , because this problem issue.
Please help me and guide:
-> [2023-06-11T14:21:08,723][INFO ][o.e.c.r.a.DiskThresholdMonitor] [ADMIN] low disk watermark [85%] exceeded on [cAwXyXAlTvKjAn3ZfNa7Nw][ADMIN][C:\xampp\htdocs\elasticsearch-8.8.1\data] free: 8.8gb[14.7%], replicas will not be assigned to this node

….

hoa
hoa
August 25, 2023 11:39 am

Ad ơi, e bị lỗi này trên máy mac không biết fix sao
main.CRITICAL: DomainException: The default website isn’t defined. Set the website and try again. in /Applications/XAMPP/xamppfiles/htdocs/project/vendor/magento/module-store/Model/WebsiteRepository.php:159

Adam Roger
Admin
September 7, 2023 10:49 am
Reply to  hoa

Chào bạn,
Bạn hãy thử xóa file app/etc/env.php rồi chạy lại lệnh cài đặt.

22
0
Would love your thoughts, please comment.x
()
x