全部產品
Search
文件中心

Elastic Compute Service:手動搭建Magento2電子商務網站

更新時間:Dec 23, 2025

Magento2是一款功能強大的開源電子商務平台,提供靈活的架構與豐富的特性,支援構建複雜的線上商店。它最佳化了效能、提升了使用者體驗,並簡化了管理操作,適合中小企業及大型企業使用。本教程介紹如何在Ubuntu作業系統的ECS執行個體上部署Magento2。

說明

關於Magento2的更多資訊,請參見Adobe Commerce官方網站。

背景資訊

本教程使用的ECS執行個體硬體設定如下:

  • 執行個體規格:ecs.c7.large

  • 作業系統:公用鏡像Ubuntu 22.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:是位於最前端的伺服器,負責處理靜態檔案請求,並作為反向 Proxy將動態內容請求轉寄給後端PHP服務。

準備工作

  1. 擷取AdobeCommerce的個人密鑰,密鑰如下所示。如何擷取,請參見Adobe Commerce

    image

  2. 執行個體已指派固定公網IP地址或綁定Elastic IP Address(EIP)。如您不清楚如何開通公網,請參見開通公網

  3. 執行個體安全性群組的入方向規則已允許存取22。具體操作,請參見添加安全性群組規則

  4. 執行個體已經安裝Docker,如您未安裝,請參見安裝並使用Docker和Docker Compose

  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以禁用HTTP和Transport層的 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地址。

    建議登入阿里雲購買網域名稱。更多資訊,請參見網域名稱註冊

  • 網域名稱備案

    對於網域名稱指向中國內地節點伺服器上的網站,必須進行網站備案。在網域名稱獲得備案號之前,網站無法開通使用。

  • 網域名稱解析

    您需要在阿里雲的Alibaba Cloud DNS中進行網域名稱解析之後,網站的來訪使用者才能通過網域名稱訪問您的網站。具體操作,請參見新手引導

相關文檔