手动搭建Magento2电子商务网站

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服务。

准备工作

  1. 获取AdobeCommerce的个人密钥,密钥如下所示。如何获取,请参见Adobe Commerce

    image

  2. 实例已分配固定公网IP地址或绑定弹性公网IP(EIP)。如您不清楚如何开通公网,请参见开通公网

  3. 实例安全组的入方向规则已放行22。具体操作,请参见添加安全组规则

  4. 实例已经安装Docker,如您未安装,请参见安装Docker

  5. 部署LNMP环境。如您未部署,请参见手动部署LNMP环境

    说明
    • LNMP版本要求:Nginx-1.24、MySQL-8.0、PHP-8.3。

    • 请在对应步骤下确认并修改版本号。

操作步骤

步骤一:安装PHP依赖包

  1. 安装PHP核心包与特定扩展。

    1. 安装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
    2. 安装特定扩展,对于那些确实需要单独安装的扩展。

      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
    3. 重启 Web 服务器,使更改生效。

      sudo systemctl restart nginx  
  2. 配置php.ini文件。

    1. 在编辑器中打开php.ini文件。

      sudo vim /etc/php/8.3/fpm/php.ini
      sudo vim /etc/php/8.3/cli/php.ini
    2. 修改两个文件中如下内容,保存并退出编辑器。

      memory_limit = 2G
      max_execution_time = 1800
      zlib.output_compression = On
    3. 重新启动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

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

    1. 禁用主机上的内存分页交换性能以提高性能。

      sudo swapoff -a
    2. 增加 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

        image

  2. Docker容器中运行OpenSearch。

    1. 拉取OpenSearch镜像。

      sudo docker pull opensearchproject/opensearch:2
    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.disabledtrue以禁用HTTPTransport层的 SSL。

    3. 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/"
      }
  1. 显示所有正在运行的容器的列表,并复制您正在测试的 OpenSearch 节点的容器 ID。

    sudo docker container ls
  2. 为搜索引擎配置Nginx。

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

      vi /etc/nginx/nginx.conf

      image

    2. Nginx设置为代理。

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

        sudo vim /etc/nginx/conf.d/magento_es_auth.conf
        server {
           listen 8080;
           location /_cluster/health {
              proxy_pass http://localhost:9200/_cluster/health;
           }
        }
      2. 重新启动nginx。

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

        sudo curl -u admin:admin -i http://localhost:8080/_cluster/health?pretty

        回显信息如下。

        image

步骤四:下载并安装Composer

  1. 安装解压文件。

    Composer依赖于 unzipp7zip 命令行工具来解压文件。通过以下命令安装。

    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
  2. 出现提示时,输入您的身份验证密钥。

    说明
    • 密钥为在准备工作中获取AdobeCommerce的个人密钥。

    • 下载Magento2软件包需要等待5-10分钟,请您耐心等待。

    image

  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-namedb-userdb-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 \
  5. 安装完成之后显示如下内容。

    image

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

  6. 配置Nginx进行转发。

    1. 创建专属的magento.conf

      sudo vim /etc/nginx/conf.d/magento.conf
    2. 添加以下配置,保存并退出编辑器。

      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;
      }
      
    3. 验证语法是否正确:

      nginx -t
    4. 重新启动nginx:

      sudo systemctl restart nginx

访问Magento2

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

    image

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

    image

常见问题

Q1:下载Magento2软件包失败

当您遇到如下情况,需要更新镜像源。

image

  1. 查看自带镜像源。

    composer config -l -g

    image

  2. 修改全局镜像源。

    sudo composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

Q2:域名相关操作指引

如果您有建站需求,但还没有属于自己的域名,可以先购买域名。购买域名后,如果您的网站部署在中国内地节点服务器上,则必须先完成域名备案,再把域名解析至部署网站的ECS实例上。相关操作指引如下:

  • 购买域名

    您可以给自己的网站设定一个单独的域名。您的网站来访用户可以使用易记的域名访问您的网站,而不需要使用复杂的IP地址。

    建议登录阿里云购买域名。更多信息,请参见通用域名注册基本流程如何注册阿里云域名

  • 域名备案

    对于域名指向中国内地节点服务器上的网站,必须进行网站备案。在域名获得备案号之前,网站无法开通使用。具体操作,请参见ICP备案流程ICP备案流程

  • 域名解析

    您需要在阿里云的云解析DNS中进行域名解析之后,网站的来访用户才能通过域名访问您的网站。具体操作,请参见新手引导

相关文档