Magento2是一款功能强大的开源电子商务平台,提供灵活的架构与丰富的特性,支持构建复杂的在线商店。它优化了性能、提升了用户体验,并简化了管理操作,适合中小企业及大型企业使用。本教程介绍如何在Ubuntu操作系统的ECS实例上部署Magento2。
关于Magento2的更多信息,请参见Adobe Commerce官方网站。
背景信息
本教程使用的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核心包与特定扩展。
安装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
安装特定扩展,对于那些确实需要单独安装的扩展。
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
重启 Web 服务器,使更改生效。
sudo systemctl restart nginx
配置php.ini文件。
在编辑器中打开php.ini文件。
sudo vim /etc/php/8.3/fpm/php.ini sudo vim /etc/php/8.3/cli/php.ini
修改两个文件中如下内容,保存并退出编辑器。
memory_limit = 2G max_execution_time = 1800 zlib.output_compression = On
重新启动php-fpm服务。
sudo systemctl restart php8.3-fpm
步骤二:创建Magento2数据库
连接数据库。
mysql -u root -p
出现提示时输入MySQL root用户的密码。
按照显示的顺序输入以下命令,本节以创建名为magento且用户名为magento的数据库为例。
CREATE DATABASE magento; CREATE USER 'magento'@'localhost' IDENTIFIED BY 'magento'; GRANT ALL PRIVILEGES ON magento.* TO 'magento'@'localhost'; FLUSH PRIVILEGES; EXIT;
验证数据库。
mysql -u magento -p
说明如果显示MySQL监视器,则表示您正确创建了数据库。 如果显示错误,请重复上述命令。
步骤三:下载并安装OpenSearch
在使用 Docker 安装 OpenSearch 之前,请配置以下设置。
禁用主机上的内存分页和交换性能以提高性能。
sudo swapoff -a
增加 OpenSearch 可用的内存映射数量。
编辑sysctl.conf文件。
sudo vi /etc/sysctl.conf
增加
vm.max_map_count=262144
确实是否修改成功。
sudo sysctl -p cat /proc/sys/vm/max_map_count
在Docker容器中运行OpenSearch。
拉取OpenSearch镜像。
sudo docker pull opensearchproject/opensearch:2
通过在单个容器中部署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。向9200端口发送请求,默认用户名和密码为admin。
sudo curl -k http://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/" }
显示所有正在运行的容器的列表,并复制您正在测试的 OpenSearch 节点的容器 ID。
sudo docker container ls
为搜索引擎配置Nginx。
请确保您的全局/etc/nginx/nginx.conf包含
include /etc/nginx/conf.d/*.conf;
,以便加载以下部分中的其他配置文件。vi /etc/nginx/nginx.conf
将Nginx设置为代理。
使用文本编辑器创建包含以下内容的文件。
sudo vim /etc/nginx/conf.d/magento_es_auth.conf
server { listen 8080; location /_cluster/health { proxy_pass http://localhost:9200/_cluster/health; } }
重新启动nginx。
sudo service nginx restart
通过输入以下命令验证代理是否正常工作。
sudo curl -u admin:admin -i http://localhost:8080/_cluster/health?pretty
回显信息如下。
步骤四:下载并安装Composer
安装解压文件。
Composer依赖于
unzip
或p7zip
命令行工具来解压文件。通过以下命令安装。sudo apt-get install unzip sudo apt-get install p7zip-full
输入如下命令安装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');"
放入
composer.phar
PATH的目录中,您可以从任何目录调用composer。sudo mv composer.phar /usr/local/bin/composer
查看版本。
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分钟,请您耐心等待。
设置读写权限。
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
安装应用程序。
您必须使用命令行安装Adobe Commerce,此示例假定
db-host
在同一计算机(localhost)上,db-name
、db-user
和db-password
的值均为magento
。sudo bin/magento setup:install \ --base-url=http://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 \
安装完成之后显示如下内容。
Magento Admin URI为管理员访问地址。Nginx配置完成后可以访问,例如:
http://47.****.**.72/admin_46i****
。配置Nginx进行转发。
创建专属的magento.conf
sudo vim /etc/nginx/conf.d/magento.conf
添加以下配置,保存并退出编辑器。
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; }
验证语法是否正确:
nginx -t
重新启动nginx:
sudo systemctl restart nginx
访问Magento2
访问
http://<ECS实例公网IP地址>
可以看到如下图所示的默认主页。访问
http://<ECS实例公网IP地址>/admin_46i****
,输入您在安装过程中设置的后台登录账号admin
和登录密码admin***
进行登录。