Magento là một mã nguồn mở được xây dựng bằng PHP trên nền tảng Zend Framework giúp tạo lập và phát triển các website thương mại điện tử. Ra mắt ngày 31/3/2008, Magento được phát triển bởi Varien và thuộc quyền sở hữu của Magento Inc. Magento được xây dựng theo kiến trúc module đồng thời cơ sở dữ liệu dựa trên mô hình EAV (entity – attribute – value).
Nội dung bài viết
1. Tổng quát về Magento
Hiện nay, Magento phát hành 2 phiên bản song song:
- MagentoCE Comunity Edition – Phiên bản Magento hoàn toàn miễn phí.
- MagentoEE Enterprise Edition – Phiên bản Magento thương mại, chuyên nghiệp, tích hợp các tính năng mạnh mẽ nhất dành cho các website thương mại điện tử lớn.
Vượt qua giới hạn của một mã nguồn mở miễn phí, Magento có được hàng loạt những tính năng hữu ích như:
- Quản lý sản phẩm với nhiều tùy chọn như hình ảnh, nhận xét/đánh giá sản phẩm, danh mục yêu thích…
- Quản lý category dễ dàng với tìm kiếm và chọn lọc sản phẩm theo category.
- Quản lý kho: dễ dàng quản lý sản phẩm còn lại trong kho, lượng nhập/xuất/tồn.
- Quản lý khách hàng: tiện lợi và đầy đủ với tình trạng tài khoản, lịch sử giao dịch, danh mục ưu thích, địa chỉ, giỏ hàng. Ngoài ra còn có các tính năng, hình thức để liên hệ và chăm sóc khách hàng với phiếu giảm giá, khuyến mại…
- Thanh toán: tích hợp nhiều phương thức như thẻ tín dụng, PayPal, Google Checkout, hỗ trợ các module thanh toán bên ngoài như CyberSource, ePay, eWAY và nhiều hơn thế.
- Công nghệ tìm kiếm nhanh chóng, thân thiện. Hệ thống ngôn ngữ và đơn vị tiền tệ đa dạng, phục vụ nhiều quốc gia
- Thống kê, phân tích và báo cáo: tích hợp với dịch vụ Google Analytics và nhiều công cụ thống kê/báo cáo khác.
- Đồng bộ nhanh chóng dữ liệu phần mềm với một website hoàn toàn mới qua addon.
Bên cạnh đó, Magento có một cộng đồng cả người dùng và nhà phát triển lớn, đã góp phần rất nhiều vào sự phát triển chung. Magento Marketplace là một kho ứng dụng addon lớn, bao gồm cả miễn phí và thương mại, cho phép bạn nâng cấp website thương mại điện tử với rất nhiều dịch vụ của cả bên thứ 3 và cả từ nhà phát triển hệ thống.
2. Yêu cầu hệ thống
Để sử dụng Magento, hệ thống bạn cần đáp ứng những yêu cầu sau:
- Hệ điều hành: Linux x86-64(RHEL, CentOS, Ubuntu, Debian…).
- RAM: tối thiểu 2GB RAM. Bạn có thể sử dụng SWAP nếu hệ thống nhỏ hơn 2GB RAM.
- Webserver: Apache 2.2/2.4 hoặc Nginx 1.8 trở lên.
- Database: MySQL 5.6 trở lên. MariaDB hoặc Percona đều tương thích với Magento do có hỗ trợ MySQL 5.6 APIs.
- PHP: chỉ hoạt động trên PHP 5.6.5–5.6.x, 7.0.2, 7.0.4, 7.0.6–7.0.x.
- Các PHP extensions yêu cầu: curl, gd, ImageMagick (6.3.7 trở lên), intl, mbstring, mcrypt, mhash, openssl, PDO/MySQL, SimpleXML, soap, xml, xsl, zip. Nếu sử dụng MagentoEE thì cài thêm bc-math. Nếu dùng PHP 7 thì cài thêm json và iconv. Ngoài ra, nên cài đặt thêm PHP_Xdebug 2.2.0 và PHPUnit 4.1 trở lên.
- Composer: phiên bản ổn định mới nhất 1.4.2.
- Các kĩ thuật cache: sử dụng PHP OPcache. Bên cạnh đó, có thể sử dụng Redis 3.0 hoặc Varnish 3.5 trở lên để page caching. Sử dụng Redis hoặc Memcached để session storage.
Trong bài viết này, mình sẽ hướng dẫn cài đặt MagentoCE 2.1.7 trên VPS CentOS 6×64, 2GB RAM, cài đặt HocVPS Script (có sẵn Nginx 1.12.0, PHP 7.0.21 và MariaDB 10.0.31) với domain hocvps.com
.
3. Cài đặt hệ thống
– Cập nhật hệ thống lên CentOS 6.9 (Final). Thiết lập SWAP nếu cần thiết.
# yum -y upgrade # cat /etc/*-release CentOS release 6.9 (Final)
– Cài đặt HocVPS Script phiên bản mới nhất với PHP 7.0 (port HocVPS Admin 2017)
# curl -sO https://hocvps.com/install && bash install
– Cài đặt các PHP extensions cần thiết.
# yum install ImageMagick ImageMagick-devel # yum install php-intl php-soap php-xmlrpc php-xdebug php-devel php-imagick
– Chỉnh sửa cấu hình PHP-FPM bằng cách thêm đoạn sau vào cuối /etc/php-fpm.d/www.conf
nếu chưa có
; Set data paths to directories owned by process user php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache
– Chỉnh sửa cấu hình PHP tại /etc/php.d/00-hocvps-custom.ini
memory_limit = 756M
– Cài đặt PHP Composer
# curl -sS https://getcomposer.org/installer | php # mv composer.phar /usr/local/bin/composer
Kiểm tra lại
# composer -v ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 1.4.2 2017-05-17 08:17:52
– Cấu hình Nginx cho domain cài đặt Magento, thay toàn bộ nội dung bằng đoạn dưới:
# nano /etc/nginx/conf.d/hocvps.com.conf
upstream fastcgi_backend { server 127.0.0.1:9000; } server { listen 80; server_name www.hocvps.com; rewrite ^(.*) http://hocvps.com$1 permanent; } server { listen 80 default_server; server_name hocvps.com; set $MAGE_ROOT /home/hocvps.com/public_html; root $MAGE_ROOT/pub; index index.php index.html index.htm; autoindex off; charset UTF-8; access_log /home/hocvps.com/logs/access.log; error_log /home/hocvps.com/logs/error.log; location / { try_files $uri $uri/ /index.php?$args; } # PHP entry point for setup application location ~* ^/setup($|/) { root $MAGE_ROOT; location ~ ^/setup/index.php { fastcgi_pass fastcgi_backend; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ ^/setup/(?!pub/). { deny all; } location ~ ^/setup/pub/ { add_header X-Frame-Options "SAMEORIGIN"; } } # PHP entry point for update application location ~* ^/update($|/) { root $MAGE_ROOT; location ~ ^/update/index.php { fastcgi_split_path_info ^(/update/index.php)(/.+)$; fastcgi_pass fastcgi_backend; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; } # Deny everything but index.php location ~ ^/update/(?!pub/). { deny all; } location ~ ^/update/pub/ { add_header X-Frame-Options "SAMEORIGIN"; } } # PHP for /pub location /pub/ { location ~ ^/pub/media/(downloadable|customer|import|theme_customization/.*\.xml) { deny all; } alias $MAGE_ROOT/pub/; add_header X-Frame-Options "SAMEORIGIN"; } # PHP for /static location /static/ { # Uncomment the following line in production mode #expires max; # Remove signature of the static files that is used to overcome the browser cache location ~ ^/static/version { rewrite ^/static/(version\d*/)?(.*)$ /static/$2 last; } location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$ { add_header Cache-Control "public"; add_header X-Frame-Options "SAMEORIGIN"; expires +1y; if (!-f $request_filename) { rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last; } } location ~* \.(zip|gz|gzip|bz2|csv|xml)$ { add_header Cache-Control "no-store"; add_header X-Frame-Options "SAMEORIGIN"; expires off; if (!-f $request_filename) { rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last; } } if (!-f $request_filename) { rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last; } add_header X-Frame-Options "SAMEORIGIN"; } # PHP for /media location /media/ { try_files $uri $uri/ /get.php?$args; location ~ ^/media/theme_customization/.*\.xml { deny all; } location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$ { add_header Cache-Control "public"; add_header X-Frame-Options "SAMEORIGIN"; expires +1y; try_files $uri $uri/ /get.php?$args; } location ~* \.(zip|gz|gzip|bz2|csv|xml)$ { add_header Cache-Control "no-store"; add_header X-Frame-Options "SAMEORIGIN"; expires off; try_files $uri $uri/ /get.php?$args; } add_header X-Frame-Options "SAMEORIGIN"; } location /media/customer/ { deny all; } location /media/downloadable/ { deny all; } location /media/import/ { deny all; } # PHP entry point for main application location ~ (index|get|static|report|404|503)\.php$ { try_files $uri =404; fastcgi_pass fastcgi_backend; fastcgi_buffers 1024 4k; fastcgi_param PHP_FLAG "session.auto_start=off \n suhosin.session.cryptua=off"; fastcgi_param PHP_VALUE "memory_limit=768M \n max_execution_time=600"; fastcgi_read_timeout 600s; fastcgi_connect_timeout 600s; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # Banned locations (only reached if the earlier PHP entry point regexes don't match) location ~* (\.php$|\.htaccess$|\.git) { deny all; } # Custom configuration include /home/hocvps.com/public_html/*.conf; location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; allow 45.77.34.137; deny all; } location /php_status { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; allow 127.0.0.1; allow 45.77.34.137; deny all; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } } server { listen 2017; access_log off; log_not_found off; error_log /home/hocvps.com/logs/nginx_error.log; root /home/hocvps.com/private_html; index index.php index.html index.htm; server_name hocvps.com; auth_basic "Restricted"; auth_basic_user_file /home/hocvps.com/private_html/hocvps/.htpasswd; location / { autoindex on; try_files $uri $uri/ /index.php; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_connect_timeout 1000; fastcgi_send_timeout 1000; fastcgi_read_timeout 1000; fastcgi_buffer_size 256k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ /\. { deny all; } }
Chú ý: Trong trường hợp này, Magento 2 cài đặt với domain hocvps.com
, thư mục website lưu tại /home/hocvps.com/public_html/
và port HocVPS Admin là 2017. Phần bôi đỏ các bạn sửa cho phù hợp hệ thống của mình nhé. Có thể copy toàn bộ rồi thay hocvps.com bằng domain của bạn.
Nếu cài Magento trên site khác site chính HocVPS hoặc sử dụng hệ thống khác HocVPS thì bỏ block port HocVPS (block 2017 như ví dụ) và bỏ default_server
.
Sau đó, bạn khởi động lại Nginx và PHP-FPM :
# service nginx restart Stopping nginx: [ OK ] Starting nginx: [ OK ] # service php-fpm restart Stopping php-fpm: [ OK ] Starting php-fpm: [ OK ]
4. Cài đặt Magento
– Tải Magento 2 Community Edition phiên bản mới nhất 2.1.7. Bạn có thể tải từ Magento Tech Resources hoặc sao chép từ Magento 2 Github repository .
Trong trường hợp này, mình tải Magento 2 từ Magento Tech Resources với file nhận được là Magento-CE-2.1.7-2017-05-30-01-54-40.tar.gz
Lưu ý: Với Magento 2 Github repository, bạn chỉ có thể thể sử dụng dạng Developer Mode – dành cho nhà lập trình ứng dụng, không thể mở gian hàng, đặt hàng…
– Upload Magento 2 lên VPS, đặt tại thư mục website, ví dụ/home/hocvps.com/public_html
. Có thể sử dụng sFTP qua Bitvise/FileZilla để upload.
– Giải nén toàn bộ nội dung. Như vậy, thư mục Magento 2 tại /home/hocvps.com/public_html/
# cd /home/hocvps.com/public_html # tar -xzvf Magento-CE-2.1.7-2017-05-30-01-54-40.tar.gz
– Tạo database với lệnh hocvps
menu 8)Tao Database
.
– Phân Quyền Webserver cho Magento 2 với lệnh hocvps
menu 14) Phan Quyen Webserver
.
– Tiến hành cài đặt Magento 2 bằng dòng lệnh hoặc giao diện web. Mình sẽ hướng dẫn cài đặt bằng giao diện web. Truy cập đường dẫn domain.com/setup
để cài đặt Magento 2 lần lượt từng bước:
Nhấn chọn Agree and Setup Magento
Bước 1: Readiness Check – Kiểm tra yêu cầu hệ thống. Đảm bảo yêu cầu bạn nhấn Next
Bước 2: Add A Databse – Điền thông tin Database đã tạo
Bước 3: Web Configuration – Cấu hình Magento Website. Bạn nhập Website URL và Admin URL. Hiện tại chưa cài đặt SSL nên các bạn không chọn HTTPS
Bước 4: Customize Your Store – Cấu hình gian hàng, bao gồm múi giờ, đơn vị tiền tệ và ngôn ngữ.
Bước 5: Create Admin Account – Tạo lập tài khoản Admin
Bước 6: Install – Cấu hình hoàn tất, bạn nhấn Install Now để cài đặt
Cài đặt hoàn thành, bạn lưu lại các thông tin đăng nhập cùng Enryption Key. Magento sử dụng Enryption Key để mã hóa các thông tin quan trọng như thẻ tín dụng, tài khoản đăng nhập trang quản lý, nội dung CAPTCHA…
– Xoá quyền ghi tại thư mục app/etc
:
chmod ugo-w /home/hocvps.com/public_html/app/etc
– Thiết lập Magento Crontab
# EDITOR=nano crontab -u nginx -e
Điền đoạn dưới và lưu lại (nhớ sửa nội dung cho phù hợp hệ thống của bạn)
* * * * * /usr/bin/php /home/hocvps.com/public_html/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /home/hocvps.com/public_html/var/log/magento.cron.log * * * * * /usr/bin/php /home/hocvps.com/public_html/update/cron.php >> /home/hocvps.com/public_html/var/log/update.cron.log * * * * * /usr/bin/php /home/hocvps.com/public_html/bin/magento setup:cron:run >> /home/hocvps.com/public_html/var/log/setup.cron.log
Như vậy, bạn đã cài đặt thành công Magento 2 trên hệ thống HocVPS Script. Bạn có thể truy cập hệ thống và sử dụng.
Giao diện Magento Storefront.
Giao diện Magento Admin
Chúc các bạn thành công.
Lâu rồi chưa cập nhật bài viết ad nhỉ, hu hu 4 năm rồi
Mình cài phần check thì báo lỗi này, phiên bản mới nhất 2.3.2
Link: https://prnt.sc/ox5r8t
Cái VPS đã cài web WordPress giờ cài thêm web chạy magento thì có xung đột gì hok nhỉ ?
Với bản mới nhất là 2.3.x liệu cài có gì khác cái bản 2.1.x này không ?
Anh cho em hỏi, làm cách nào để em có thể cài theme 1 git server và clone về để dev magento được không ạ?
ý bạn là 2 magento trên hocvps?
1 thôi ạ, nhưng em muốn pull code về local và mở bằng netbean để làm việc và sau đó push lên như git ấy ạ
1 magento thôi ạ, nhưng em muốn pull code đó về và lập trình bằng netbean ấy ạ
Nếu vậy bạn backup theo menu magento về lấy được không?
A kiểm tra sớm giúp e với. e cài lại 3 4 lần rồi vẫn bị. cài xong bước 3 là vô web 404 not found. up magento 2.1.17 lên thì web không truy cập được luôn. web e laptopxachtaybmt[.]com
Xin anh giúp giùm với
Bạn đã chạy Phân Quyền Webserver chưa? Còn chưa cài đặt xong thì truy cập website có được đâu
Dạ em cảm ơn ad. ad cho hỏi. em cài theme sm market. chỉ cần xóa tất cả file trong public_html rồi upload theme sm market cài như bình thường thôi ạ. qua bên magento lắm lỗi quá e làm từ qua giờ chưa xong 🙁
Vấn đề theme sm market thì mình không rõ lắm rồi
a cho hỏi. e chạy php 7.1 thì bị thiếu mất file PHP Extension bcmath.
khi cài đặt thì làm thế nào ạ
Bạn cài đặt module như bình thường nhé. Tham khảo
https://hoidap.hocvps.com/t/topic/3661/6
Ad ơi nó chạy được 67 đứng luôn rồi. sao ad chạy được ạ https://imgur.com/y3vBNU8
em đã nâng các giới hạn lên vẫn không được ạ 🙁
max_execution_time = 18000
short_open_tag = On
realpath_cache_size = 384k
realpath_cache_ttl = 28800
memory_limit = 1024M
upload_max_filesize = 160M
post_max_size = 160M
expose_php = Off
mail.add_x_header = Off
max_input_nesting_level = 128
max_input_vars = 2000
mysqlnd.net_cmd_buffer_size = 16384
always_populate_raw_post_data=-1
disable_functions=shell_exec
Bạn sửa xong đã restart lại Nginx và PHP-FPM chưa? Bạn kiểm tra trong server info của HocVPS Admin là biết thông số hiện tại nhé ip:port/serverinfo/. Cụ thể : http://prntscr.com/n68qej
Nếu đã cài Cài đặt chứng chỉ Let’s Encrypt SSL trên server HocVPS Script thì phần Cấu hình Nginx Webserver cho Magento sửa như thế nào vậy ad?
Bạn sửa như bình thường nhé, vì cấu hình SSL liên quan đến server_name với redirect thôi. Phần cần sửa thì bạn sửa, còn đâu giữ nguyên cấu hình Magento
Mình làm theo từng bước rồi nhưng vào Domain/setup/ thì nó lại báo lỗi 500
This page isn’t working dotienich.life is currently unable to handle this request.
HTTP ERROR 500
http://dotienich.life/setup/
HTTP ERROR 500 lỗi này nhiều nguyên nhân nên bạn check lại log PHP-FPM mới biết được nhé
Còn nếu không biết check log thì rà lại từ đầu các bước cài đặt
Hình như em get 2.3 nên nó không chạy được với cái PHP 7.0
Bác có thể update cách cài phiên bản mới nhất không ạ?
http://prntscr.com/lwtwtl
Version 2.3 vẫn hoàn toàn bình thường nên bạn kiểm tra lại các bước cài đặt nhé. Nhất là Phân Quyền Webserver
Mình đang dùng hocvps script và chạy Magento 1.9.x
Trong magento mình kết nối tới UPS để tính shipping cost. Nhưng bị lỗi như thế này.
Unable to Connect to ssl://www.ups.com:443. Error #0: php_network_getaddresses: getaddrinfo failed: Name or service not known
Không biết là có solution nào cho lỗi này ko bạn??
Mình đọc trên mạng thì thấy là Enable cái SELinux lên, mà cái này hocvps mình disable mặc định.
Admin có cao kiến gì ko nhỉ?
Thanks
Vậy bạn kết nối tới http://www.ups.com:80 thì kết quả như thế nào? Còn giải pháp kia thì bạn có thể enable Selinux lên nếu muốn
Hi Phương,
Port 80 vẫn ra thông báo lỗi như dưới.
Unable to Connect to tcp://www.ups.com:80. Error #0: php_network_getaddresses: getaddrinfo failed: System error
Thanks
Vậy bạn bật Selinux có giải quyết được vấn đề không?
Enable Selinux thì Okay 🙂
Cảm ơn bạn về bài viết! nhưng mình có 1 chút vấn đề khi import data vào database. Mình bị lỗi Nginx 502 Bad Gateway khi check log thì có thông báo “[emerg] 1897#1897: a duplicate default server for 0.0.0.0:80 in /etc/nginx/conf.d/.com.conf:9” . Xin bạn cách hướng dẫn khắc phục :d.
Như thông báo, có 2 defaul server trong /etc/nginx/conf.d. Có thể vấn đề ở việc bạn cài Magento lên website khác website chính, khi đó trong VPS sẽ có tận 2 default_server
Bạn xem ở đâu thì xóa đi
Magento mới đúng nghĩa là code shop chuẩn nhưng triển khai nó khá tốn kém cả con người lẫn thời gian công sức và tài chính . Hix
thật sự bán hàng thì phải chơi magento/
Tks ad
Thanks ! Rất chi tiết.
Cảm ơn!
Trước giờ chỉ nghe Magento nhưng chưa có cơ hội trải nghiệm, nhìn hình install đỡ ghiền.
Hướng dẫn cài thêm Cache nữa đi ad!
Cũng chờ lâu lắm 😀
Thấy anh em hỏi han Magento2 nhiều quá 🙂 Không kém Woo