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服務。
準備工作
擷取AdobeCommerce的個人密鑰,密鑰如下所示。如何擷取,請參見Adobe Commerce。

執行個體已指派固定公網IP地址或綁定Elastic IP Address(EIP)。如您不清楚如何開通公網,請參見開通公網。
執行個體安全性群組的入方向規則已允許存取22。具體操作,請參見添加安全性群組規則。
執行個體已經安裝Docker,如您未安裝,請參見安裝並使用Docker和Docker Compose。
部署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.confserver { 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.pharPATH的目錄中,您可以從任何目錄調用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***進行登入。

