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

软件依赖项 | 2.4.7 - p4 | 2.4.7 - p3 | 2.4.7 - p2 | 2.4.7 - p1 | 2.4.7 |
---|---|---|---|---|---|
Composer | 2.8 | 2.7 | 2.7 | 2.7 | 2.7 |
Elasticsearch | 8.16 | 8.11 | 8.11 | 8.11 | 8.11 |
OpenSearch | 2.12 | 2.12 | 2.12 | 2.12 | 2.12 |
MariaDB | 10.6 | 10.6 | 10.6 | 10.6 | 10.6 |
MySQL | 8.0 | 8.0 | 8.0 | 8.0 | 8.0 |
PHP | 8.3, 8.2 | 8.3, 8.2 | 8.3, 8.2 | 8.3, 8.2 | 8.3, 8.2 |
RabbitMQ | 3.13 | 3.13 | 3.13 | 3.13 | 3.13 |
Redis | 7.2 | 7.2 | 7.2 | 7.2 | 7.2 |
Varnish | 7.6 | 7.5 | 7.5 | 7.5 | 7.5 |
Apache | 2.4 | 2.4 | 2.4 | 2.4 | 2.4 |
nginx | 1.26 | 1.26 | 1.26 | 1.26 | 1.26 |
AWS Aurora (MySQL) | 8.0 | 8.0 | 8.0 | 8.0 | 8.0 |
AWS S3 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
AWS MQ | 3.13 | 3.11.20 | 3.11.20 | 3.11.20 | 3.11.20 |
AWS ElastiCache | Redis 7.0 | Redis 7.0 | Redis 7.0 | Redis 7.0 | Redis 7.0 |
AWS Elasticsearch | — | — | — | — | — |
AWS OpenSearch | 2.11 | 2.11 | 2.11 | 2.11 | 2.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服务。
准备工作
- 获取AdobeCommerce的个人密钥,密钥如下所示。如何获取,请参见Adobe Commerce。

- 实例已分配固定公网IP地址或绑定弹性公网IP(EIP)。如您不清楚如何开通公网,请参见开通公网。
- 实例安全组的入方向规则已放行22。具体操作,请参见添加安全组规则。
- 实例已经安装Docker,如您未安装,请参见安装Docker。
- 部署LNMP环境。如您未部署,请参见手动部署LNMP环境。
说明
- LNMP版本要求:Nginx-1.24、MySQL-8.0、PHP-8.3。
- 请在对应步骤下确认并修改版本号。
操作步骤
步骤一:安装PHP依赖包
- 安装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 之前,请配置以下设置。
- 禁用主机上的内存分页和交换性能以提高性能。
执行命令:sudo swapoff -a
b.增加 OpenSearch 可用的内存映射数量。
- 编辑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
- 安装解压文件。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
- 使用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
- 访问
https://<ECS实例公网IP地址>
可以看到如下图所示的默认主页。

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

