手动搭建Magento2电商平台研究
Home » 惠米出海Talk  »  手动搭建Magento2电商平台研究
手动搭建Magento2电商平台研究

Magento2是一款功能强大的开源电子商务平台,提供灵活的架构与丰富的特性,支持构建复杂的在线商店。它优化了性能、提升了用户体验,并简化了管理操作,适合中小企业及大型企业使用。本教程介绍如何在Ubuntu操作系统的ECS实例上部署Magento2。

软件依赖项2.4.7 - p42.4.7 - p32.4.7 - p22.4.7 - p12.4.7
Composer2.82.72.72.72.7
Elasticsearch8.168.118.118.118.11
OpenSearch2.122.122.122.122.12
MariaDB10.610.610.610.610.6
MySQL8.08.08.08.08.0
PHP8.3, 8.28.3, 8.28.3, 8.28.3, 8.28.3, 8.2
RabbitMQ3.133.133.133.133.13
Redis7.27.27.27.27.2
Varnish7.67.57.57.57.5
Apache2.42.42.42.42.4
nginx1.261.261.261.261.26
AWS Aurora (MySQL)8.08.08.08.08.0
AWS S3✔️✔️✔️✔️✔️
AWS MQ3.133.11.203.11.203.11.203.11.20
AWS ElastiCacheRedis 7.0Redis 7.0Redis 7.0Redis 7.0Redis 7.0
AWS Elasticsearch
AWS OpenSearch2.112.112.112.112.11

背景信息

本教程使用的ECS实例硬件配置如下:

  • 实例规格:ecs.c7.large
  • 操作系统:公共镜像Ubuntu 20.04 64位
  • CPU:2 vCPU
  • 内存:4 GiB

说明:搭建Magento2服务器,所选实例规格内存不能小于4GiB。

依据Magento2官网的软件依赖关系,搭建需要使用如下软件版本。

  • Composer 2.7 :Composer是安装和管理其代码库以及所有必要的第三方库的主要方式。
  • Opensearch 2.12 :OpenSearch提供产品搜索功能,包括快速查找商品、过滤选项、相关性排序等。
  • MySQL 8.0 :存储所有的业务数据,如产品信息、订单和客户资料等。
  • PHP 8.3:执行所有PHP代码逻辑,并与数据库和其他服务通信以获取数据。
  • Nginx 1.24:是位于最前端的服务器,负责处理静态文件请求,并作为反向代理将动态内容请求转发给后端PHP服务。

准备工作

  1. 获取AdobeCommerce的个人密钥,密钥如下所示。如何获取,请参见Adobe Commerce
  1. 实例已分配固定公网IP地址或绑定弹性公网IP(EIP)。如您不清楚如何开通公网,请参见开通公网
  2. 实例安全组的入方向规则已放行22。具体操作,请参见添加安全组规则
  3. 实例已经安装Docker,如您未安装,请参见安装Docker
  4. 部署LNMP环境。如您未部署,请参见手动部署LNMP环境

说明

  • LNMP版本要求:Nginx-1.24、MySQL-8.0、PHP-8.3。
  • 请在对应步骤下确认并修改版本号。

操作步骤

步骤一:安装PHP依赖包

  1. 安装PHP核心包与特定扩展。a.安装PHP核心包,包含了多个扩展。
执行命令:sudo apt-get install php8.3-cli php8.3-common php8.3-fpm php8.3-mysql php8.3-zip php8.3-gd php8.3-curl php8.3-intl php8.3-mbstring php8.3-soap php8.3-xml php8.3-bcmath php8.3-sqlite3 php8.3-opcache

b.安装特定扩展,对于那些确实需要单独安装的扩展。

执行命令:sudo apt-get install php8.3-bcmath php8.3-curl php8.3-gd php8.3-intl php8.3-mbstring php8.3-soap php8.3-xml php8.3-zip php8.3-sqlite3

c.重启 Web 服务器,使更改生效。

执行命令:sudo systemctl restart nginx

2.配置php.ini文件。
a.在编辑器中打开php.ini文件。
sudo vim /etc/php/8.3/fpm/php.ini
sudo vim /etc/php/8.3/cli/php.ini

b.修改两个文件中如下内容,保存并退出编辑器。
memory_limit = 2G
max_execution_time = 1800
zlib.output_compression = On

c.重新启动php-fpm服务。
执行命令:sudo systemctl restart php8.3-fpm

步骤二:创建Magento2数据库

1.连接数据库。

执行命令:mysql -u root -p,出现提示时输入MySQL root用户的密码。

2.按照显示的顺序输入以下命令,本节以创建名为magento且用户名为magento的数据库为例。

CREATE DATABASE magento;
CREATE USER 'magento'@'localhost' IDENTIFIED BY 'magento';
GRANT ALL PRIVILEGES ON magento.* TO 'magento'@'localhost';
FLUSH PRIVILEGES;
EXIT;

3.验证数据库。
执行命令:mysql -u magento -p
说明:如果显示MySQL监视器,则表示您正确创建了数据库。 如果显示错误,请重复上述命令。

步骤三:下载并安装OpenSearch

在使用 Docker 安装 OpenSearch 之前,请配置以下设置。

  1. 禁用主机上的内存分页交换性能以提高性能。
执行命令:sudo swapoff -a

b.增加 OpenSearch 可用的内存映射数量。

  1. 编辑sysctl.conf文件。
执行命令:sudo vi /etc/sysctl.conf

2.增加vm.max_map_count=262144

3.确实是否修改成功。执行命令:sudo sysctl -p
cat /proc/sys/vm/max_map_count

2.在Docker容器中运行OpenSearch。

a.拉取OpenSearch镜像。

执行命令:sudo docker pull opensearchproject/opensearch:2

b.通过在单个容器中部署OpenSearch来验证Docker是否正常工作。

执行命令:sudo docker run -d \
 -p 9200:9200 \
 -p 9600:9600 \
 -e "discovery.type=single-node" \
 -e "OPENSEARCH_INITIAL_ADMIN_PASSWORD=admin" \
 -e "plugins.security.disabled=true" \
 opensearchproject/opensearch:latest
说明:本示例为测试设置 plugins.security.disabled为true以禁用HTTP和Transport层的 SSL。

c.向9200端口发送请求,默认用户名和密码为admin。

执行命令:sudo curl -k https://localhost:9200 -ku admin:admin

返回信息如下所示。

{
  "name" : "a937e018****",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "GLAjAG6bTeWE****_d-CLw",
  "version" : {
    "distribution" : "opensearch",
    "number" : <version>,
    "build_type" : <build-type>,
    "build_hash" : <build-hash>,
    "build_date" : <build-date>,
    "build_snapshot" : false,
    "lucene_version" : <lucene-version>,
    "minimum_wire_compatibility_version" : "7.10.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "The OpenSearch Project: https://opensearch.org/"
}

1.显示所有正在运行的容器的列表,并复制您正在测试的 OpenSearch 节点的容器 ID。

执行命令:sudo docker container ls

2.为搜索引擎配置Nginx。

a.请确保您的全局/etc/nginx/nginx.conf包含include /etc/nginx/conf.d/*.conf;,以便加载以下部分中的其他配置文件。vi /etc/nginx/nginx.conf

b.将Nginx设置为代理。

1.使用文本编辑器创建包含以下内容的文件。

执行命令:sudo vim /etc/nginx/conf.d/magento_es_auth.conf

server { listen 8080; location /_cluster/health { proxy_pass https://localhost:9200/_cluster/health; } }

2.重新启动nginx。

执行命令:sudo service nginx restart

3.通过输入以下命令验证代理是否正常工作。

执行命令:sudo curl -u admin:admin -i https://localhost:8080/_cluster/health?pretty
回显信息如下。

步骤四:下载并安装Composer

  1. 安装解压文件。Composer依赖于 unzip 或 p7zip 命令行工具来解压文件。通过以下命令安装。
执行命令:sudo apt-get install unzip
sudo apt-get install p7zip-full

2.输入如下命令安装Composer。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

3.放入composer.pharPATH的目录中,您可以从任何目录调用composer。
执行命令:sudo mv composer.phar /usr/local/bin/composer

4.查看版本。
执行命令:composer -version

步骤五:下载并安装Magento2

  1. 使用Adobe Commerce的密钥创建编辑器项目,项目名称为magento。
执行命令:cd /var/www/html/
sudo composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition magento
出现提示时,输入您的身份验证密钥。
密钥为在准备工作中获取AdobeCommerce的个人密钥。
下载Magento2软件包需要等待5-10分钟,请您耐心等待。

3.设置读写权限。

cd /var/www/html/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

4.安装应用程序。
您必须使用命令行安装Adobe Commerce,此示例假定db-host在同一计算机(localhost)上,db-name、db-user和db-password的值均为magento。
sudo bin/magento setup:install \
  --base-url=https://196.****.*.1/ \ #实例的公网IP
  --db-host=localhost \ #数据库地址
  --db-name=magento \  #数据库名称
  --db-user=magento \ #数据库账号
  --db-password=magento \ #数据库密码
  --admin-firstname=admin \ #后台管理员的名称
  --admin-lastname=admin \ 
  --admin-email=cy****sper@email.com \ #管理员邮箱
  --admin-user=admin \ #后台登录账号
  --admin-password=admin*** \ #后台登录密码
  --language=en_US \ #网站语言
  --currency=USD \
  --timezone=America/Chicago \
  --use-rewrites=1 \
  --search-engine=opensearch \ 
  --opensearch-host=localhost \
  --opensearch-port=9200 \
  --opensearch-enable-auth=1 \
  --opensearch-username=admin \
  --opensearch-password=admin \
  --opensearch-index-prefix=magento2 \

5.安装完成之后显示如下内容。

Magento Admin URI为管理员访问地址。Nginx配置完成后可以访问,例如:https://47.****.**.72/admin_46i****

6.配置Nginx进行转发。

a.创建专属的magento.conf

sudo vim /etc/nginx/conf.d/magento.conf

b.添加以下配置,保存并退出编辑器。
upstream fastcgi_backend {
  server  unix:/run/php/php8.3-fpm.sock;
}
server {
  listen 80;
  server_name ip;
  set $MAGE_ROOT /var/www/html/magento;
  include /var/www/html/magento/nginx.conf.sample;
}

c.验证语法是否正确:执行命令:nginx -t

d.重新启动nginx:执行命令:sudo systemctl restart nginx

访问Magento2

  1. 访问https://<ECS实例公网IP地址>可以看到如下图所示的默认主页。

访问https://<ECS实例公网IP地址>/admin_46i****,输入您在安装过程中设置的后台登录账号admin和登录密码admin***进行登录。

了解更多,请移步访问。