Cách cài đặt Magento 2.1 trên CentOS 7

theanh

Administrator
Nhân viên
Magento là một cửa hàng mã nguồn mở (phần mềm thương mại điện tử) và hệ thống quản lý nội dung cho các trang web thương mại điện tử dựa trên PHP Zend Framework. Magento áp dụng các quy ước của Lập trình hướng đối tượng và kiến trúc MVC (Model-View-Controller) và sử dụng MySQL/MariaDB làm cơ sở dữ liệu. Phần mềm được phát triển đã được Varien Inc. bắt đầu vào năm 2008. Trong những năm qua, Magento đã trở thành một nền tảng đáng tin cậy cho phần mềm thương mại điện tử hỗ trợ các doanh nghiệp trực tuyến trên toàn thế giới.

Trong hướng dẫn này, tôi sẽ hướng dẫn bạn cài đặt Magento 2.1. Chúng ta sẽ cài đặt Magento 2.1 với Nginx và Php7.0-fpm và MySQL làm cơ sở dữ liệu. Với mục đích này, tôi sẽ sử dụng máy chủ CentOS 7 có bật SELinux.

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

Trong bước này, chúng ta sẽ cài đặt Nginx từ epel-repository. Epel không khả dụng theo mặc định, vì vậy chúng ta cần cài đặt epel-repository trước khi cài đặt Nginx.

Cài đặt epel-repository bằng lệnh yum này.
Mã:
yum -y install epel-release
Bây giờ chúng ta có thể cài đặt Nginx từ epel-repository.
Mã:
yum -y install nginx
Sau khi cài đặt hoàn tất, hãy khởi động Nginx và thêm nó để bắt đầu khi khởi động.
Mã:
systemctl start nginx
systemctl enable nginx
Nginx được khởi động trên cổng 80, bạn có thể kiểm tra điều đó bằng lệnh netstat bên dưới.
Mã:
netstat -plntu


Trong trường hợp bạn thấy kết quả 'command not found', bạn có thể cài đặt net-tools như thế này.
Mã:
yum -y install net-tools

Bước 2 - Cài đặt và cấu hình PHP-FPM​

Trong hướng dẫn này, chúng ta sẽ sử dụng PHP-FPM 7 để cài đặt Magento. Tôi sẽ sử dụng các gói PHP 7 từ Webtaticrepository.

Tải xuống và thêm kho lưu trữ webtatic mới vào hệ thống.
Mã:
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Bây giờ hãy chạy lệnh bên dưới để cài đặt PHP-FPM7 với tất cả các gói và tiện ích mở rộng cần thiết cho quá trình cài đặt Magento.
Mã:
yum -y install php70w-fpm php70w-mcrypt php70w-curl php70w-cli php70w-mysql php70w-gd php70w-xsl php70w-json php70w-intl php70w-pear php70w-devel php70w-mbstring php70w-zip php70w-soap
Khi quá trình cài đặt PHP-FPM7 hoàn tất, chúng ta cần định cấu hình nó. Chúng tôi sẽ cấu hình tệp php.ini và tệp cấu hình php-fpm 'www.conf'.

Chỉnh sửa php.ini bằng vim.
Mã:
vim /etc/php.ini
Bỏ ghi chú dòng cgi.fix_pathinfo 762 và đổi giá trị thành 0.
Mã:
cgi.fix_pathinfo=0
Cấu hình giới hạn bộ nhớ, thời gian thực thi tối đa và bật nén đầu ra zlib, đảm bảo bạn đặt các giá trị như hiển thị bên dưới.
Mã:
memory_limit = 512M
max_execution_time = 1800
zlib.output_compression = On
Bỏ ghi chú thư mục đường dẫn phiên và đổi thư mục như bên dưới.
Mã:
session.save_path = "/var/lib/php/session"
Lưu và thoát.

Tiếp theo, chỉnh sửa Tệp cấu hình php-fpm www.conf với lệnh vim.
Mã:
vim /etc/php-fpm.d/www.conf
PHP-FPM7 sẽ chạy dưới người dùng và nhóm 'nginx', hãy thay đổi giá trị thành 'nginx' cho các dòng người dùng và nhóm.
Mã:
user = nginx
group = nginx
Chúng ta sẽ chạy php-fpm dưới tệp socket, không phải cổng máy chủ. Thay đổi giá trị của dòng listen thành đường dẫn của tệp socket.
Mã:
listen = /var/run/php/php-fpm.sock
Tệp socket cần phải thuộc sở hữu của người dùng và nhóm 'nginx', bỏ chú thích các dòng listen và thay đổi các giá trị như hiển thị bên dưới.
Mã:
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Cuối cùng, bỏ chú thích các dòng môi trường PHP-FPM 366-370.
Mã:
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Lưu và thoát.

Tiếp theo, tạo một thư mục mới cho đường dẫn phiên và vị trí tệp php sock. Sau đó thay đổi chủ sở hữu thành người dùng và nhóm 'nginx'.

Tạo một thư mục mới cho đường dẫn phiên.
Mã:
mkdir -p /var/lib/php/session/
chown -R nginx:nginx /var/lib/php/session/
Tạo một thư mục mới cho vị trí tệp socket php-fpm.
Mã:
mkdir -p /run/php/
chown -R nginx:nginx /run/php/
Cấu hình PHP-FPM7 đã hoàn tất, hãy khởi động daemon ngay bây giờ và cho phép nó khởi động khi khởi động bằng lệnh systemctl bên dưới.
Mã:
systemctl start php-fpm
systemctl enable php-fpm
Khi không có lỗi, bạn có thể sử dụng lệnh bên dưới để kiểm tra xem php-fpm có đang chạy trong tệp socket hay không.
Mã:
netstat -pl | grep php-fpm.sock

Bước 3 - Cài đặt MySQL 5.7 Server​

Magento 2.1 yêu cầu phiên bản MySQL hiện tại, bạn có thể sử dụng MySQL 5.6 hoặc 5.7 để cài đặt. Trong hướng dẫn này, chúng tôi sẽ sử dụng MySQL 5.7 có thể được cài đặt từ kho lưu trữ MySQL chính thức. Vì vậy, trước tiên chúng ta cần thêm kho lưu trữ MySQL mới.

Tải xuống và thêm kho lưu trữ MySQL mới để cài đặt MySQL 5.7.
Mã:
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
Bây giờ hãy cài đặt MySQL 5.7 từ kho lưu trữ MySQL bằng lệnh yum bên dưới.
Mã:
yum install mysql-community-server
Khi quá trình cài đặt hoàn tất, hãy khởi động mysql và thêm nó để bắt đầu khi khởi động.
Mã:
systemctl start mysqld
systemctl enable mysqld
MySQL 5.7 đã được cài đặt với mật khẩu root mặc định, mật khẩu này được lưu trữ trong tệp mysqld.log. Sử dụng lệnh grep để xem mật khẩu mặc định cho MySQL 5.7. Chạy lệnh bên dưới.
Mã:
grep 'temporary' /var/log/mysqld.log


Bây giờ bạn thấy mật khẩu root MySQL hiện tại, bạn nên thay đổi mật khẩu mặc định.

Kết nối với shell mysql bằng người dùng root và mật khẩu mặc định.
Mã:
mysql -u root -p
TYPE DEFAULT PASSWORD
Thay đổi mật khẩu root mặc định bằng truy vấn bên dưới. Tôi sẽ sử dụng mật khẩu mới 'Hakase-labs123@' ở đây. Vui lòng chọn một mật khẩu an toàn.
Mã:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Hakase-labs123@';
flush privileges;


Mật khẩu root MySQL mặc định đã được thay đổi. Tiếp theo, chúng ta cần tạo một người dùng mới và một cơ sở dữ liệu mới để cài đặt Magento.

Chúng ta sẽ tạo một cơ sở dữ liệu mới có tên là 'magentodb' và một người dùng mới 'magentouser' với mật khẩu 'Magento123@'. Sau đó, cấp tất cả các đặc quyền của cơ sở dữ liệu cho người dùng mới. Chạy truy vấn mysql bên dưới.
Mã:
create database magentodb;
create user magentouser@localhost defined by 'Magento123@';
grant all privileges on magentodb.* to magentouser@localhost defined by 'Magento123@';
flush privileges;


Quá trình cài đặt và cấu hình MySQL 5.7 đã hoàn tất và một cơ sở dữ liệu để cài đặt Magento đã được tạo.

Bước 4 Cài đặt và cấu hình Magento​

Trong bước này, chúng ta sẽ bắt đầu cài đặt và cấu hình Magento. Đối với thư mục gốc web, chúng ta sẽ sử dụng thư mục '/var/www/magento2'. Chúng ta cần PHP composer để cài đặt gói Magento.

Cài đặt PHP Composer

Chúng ta sẽ sử dụng Composer để cài đặt phụ thuộc gói PHP. Cài đặt composer bằng lệnh curl bên dưới.
Mã:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer
Khi quá trình cài đặt hoàn tất, bạn có thể kiểm tra phiên bản composer như hình bên dưới.
Mã:
composer -v


PHP Composer đã được cài đặt.

Tải xuống và giải nén Magento

Đi đến thư mục '/var/www' và tải xuống mã Magento bằng lệnh wget.
Mã:
cd /var/www/
wget https://github.com/magento/magento2/archive/2.1.zip
Cài đặt unzip bằng yum.
Mã:
yum -y install unzip
Giải nén mã Magento và đổi tên thư mục thành thư mục 'magento2'.
Mã:
unzip 2.1.zip
mv magento2-2.1 magento2
Cài đặt PHP Dependencies

Đi đến thư mục magento2 và cài đặt tất cả các dependency Magento bằng lệnh composer.
Mã:
cd magento2
composer install -v


Chờ cài đặt PHP Dependency hoàn tất.

Cấu hình Magento Virtual Host

Đi đến thư mục Nginx và tạo tệp cấu hình máy chủ ảo mới có tên 'magento.conf' trong thư mục 'conf.d'.
Mã:
cd /etc/nginx/
vim conf.d/magento.conf
Dán cấu hình máy chủ ảo bên dưới.
Mã:
upstream fastcgi_backend {
 server unix:/run/php/php-fpm.sock;
}
 
server {
 
 listen 80;
 server_name magento.hakase-labs.com;
 set $MAGE_ROOT /var/www/magento2;
 set $MAGE_MODE developer;
 include /var/www/magento2/nginx.conf.sample;
}
Lưu và thoát.

Bây giờ hãy kiểm tra cấu hình. Khi không có lỗi, hãy khởi động lại dịch vụ Nginx.
Mã:
nginx -t
systemctl restart nginx


Cài đặt Magento 2.1

Đi đến thư mục magento2 để cài đặt Magento trên dòng lệnh.
Mã:
cd /var/www/magento2
Chạy lệnh bên dưới, đảm bảo bạn có cấu hình chính xác. Các giá trị cần thay đổi được giải thích bên dưới.
Mã:
cài đặt bin/magento:cài đặt --backend-frontname="adminlogin" \
--key="biY8vdWx4w8KV5Q59380Fejy36l6ssUb" \
--db-host="localhost" \
--db-name="magentodb" \
--db-user="magentouser" \
--db-password="Magento123@" \
--language="en_US" \
--currency="USD" \
--timezone="America/New_York" \
--use-rewrites=1 \
--use-secure=0 \
--base-url="http://magento.hakase-labs.com" \
--base-url-secure="https://magento.hakase-labs.com" \
--admin-user=adminuser \
--admin-password=admin123@ \
[emailprotected] \
--admin-firstname=admin \
--admin-lastname=user \
--cleanup-database
Thay đổi giá trị cho:
  • --backend-frontname: Trang đăng nhập quản trị Magento "adminlogin"
  • --key: tạo khóa riêng của bạn
  • --db-host: Máy chủ cơ sở dữ liệu localhost
  • --db-name: tên cơ sở dữ liệu 'magentodb'
  • --db-user: người dùng cơ sở dữ liệu 'magentouser'
  • --db-password: mật khẩu cơ sở dữ liệu 'Magento123@'
  • --base-url: Magento URL
  • --admin-user: Người dùng quản trị của bạn
  • --admin-password: Mật khẩu quản trị Magento của bạn
  • --admin-email: Địa chỉ email của bạn
Khi không có lỗi trong lệnh, bạn sẽ thấy kết quả bên dưới.



Magento 2.1 đã được cài đặt. Chạy lệnh bên dưới để thay đổi quyền cho thư mục etc và thay đổi chủ sở hữu của thư mục magento2 thành người dùng 'nginx'.
Mã:
chmod 700 /var/www/magento2/app/etc
chown -R nginx:nginx /var/www/magento2
Cấu hình Magento Cron

Cronjob này là cần thiết cho trình lập chỉ mục Magento. Tạo một cronjob mới với tư cách là người dùng 'nginx' (vì magento đang chạy dưới người dùng và nhóm nginx).
Mã:
crontab -u nginx -e
Dán cấu hình bên dưới.
Mã:
* * * * * /usr/bin/php /var/www/magento2/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /var/www/magento2/var/log/magento.cron.log
* * * * * /usr/bin/php /var/www/magento2/update/cron.php >> /var/www/magento2/var/log/update.cron.log
* * * * * /usr/bin/php /var/www/magento2/bin/magento setup:cron:run >> /var/www/magento2/var/log/setup.cron.log
Lưu và thoát.

Bước 5 - Cấu hình SELinux và Firewalld​

Trong hướng dẫn này, chúng tôi sẽ để SELinux ở chế độ 'Enforcing'. Chạy các lệnh bên dưới để kiểm tra trạng thái SELinux.
Mã:
sestatus


SELinux đang ở chế độ 'Enforcing'.

Cài đặt công cụ quản lý SELinux 'policycoreutils-python' bằng lệnh yum bên dưới.
Mã:
yum -y install policycoreutils-python
Đi tới thư mục '/var/www/'.
Mã:
cd /var/www/
Chạy các lệnh bên dưới để thay đổi ngữ cảnh bảo mật cho các tệp và thư mục Magento.
Mã:
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/app/etc(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/var(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/pub/media(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/pub/static(/.*)?'
restorecon -Rv '/var/www/magento2/'
Cấu hình SELinux đã hoàn tất. Bây giờ chúng ta cần cấu hình firewalld.

Cài đặt gói firewalld nếu bạn chưa có nó trên máy chủ của mình.
Mã:
yum -y install firewalld
Khởi động tường lửa và thêm firewalld để bắt đầu khi khởi động.
Mã:
systemctl start firewalld
systemctl enable firewalld
Mở các cổng cho HTTP và HTTPS để chúng ta có thể truy cập URL Magento từ trình duyệt web.
Mã:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
Xem các cổng mở cho các dịch vụ bằng lệnh bên dưới.
Mã:
firewall-cmd --list-all


HTTP và HTTPS đã sẵn sàng để kết nối.

Bước 6 - Kiểm tra​

Mở trình duyệt web của bạn và sau đó duyệt URL Magento. Của tôi là:

magento.hakase-labs.com

Và bạn sẽ thấy trang chủ Magento mặc định.



Tiếp theo, đăng nhập vào bảng điều khiển quản trị bằng cách mở URL adminlogin.

magento.hakase-labs.com/adminlogin

Đăng nhập bằng tên người dùng và mật khẩu quản trị của bạn.



Bảng điều khiển quản trị Magento.



Magento 2.1 đã được cài đặt thành công với Nginx, PHP-FPM7 và MySQL 5.7 trên máy chủ CentOS 7.

Tham khảo​

 
Back
Bên trên