Magento是一款開源電商網站架構,其豐富的模組化架構體系及拓展功能可為大中型網站提供解決方案。Magento使用PHP開發,支援版本範圍從PHP 5.6到PHP 7.1,並使用MySQL儲存資料。本教程主要介紹如何在CentOS 7作業系統的ECS執行個體上搭建Magento電子商務網站。
前提條件
登入阿里雲帳號。如還未註冊,請先完成帳號註冊。
- 已在ECS執行個體安全性群組的入方向已添加規則並允許存取連接埠80和3306。具體操作,請參見添加安全性群組規則。 說明 大多數用戶端位於區域網路中,IP地址是經過轉換的,因此ipconfig或ifconfig命令返回的IP不一定是用戶端的真實公網IP地址。若後續用戶端無法訪問Magento網站,請重新確認其公網IP地址。
規則方向 授權策略 協議類型 連接埠範圍 授與類型 授權對象 入方向 允許 HTTP(80) 80/80 IPv4位址區段訪問 所有要訪問Magento網站的用戶端公網IP地址,多個地址之間用逗號隔開。 允許所有用戶端訪問時,授權對象為0.0.0.0/0。
入方向 允許 MySQL(3306) 3306/3306 IPv4位址區段訪問 所有要訪問MySQL資料庫服務的用戶端公網IP地址,多個地址之間用逗號隔開。 允許所有用戶端訪問時,授權對象為0.0.0.0/0。
背景資訊
本教程使用的ECS執行個體硬體設定如下:
- 執行個體規格:ecs.c6.large
- 作業系統:公用鏡像CentOS 7.2 64位
- CPU:2 vCPU
- 記憶體:4 GiB 說明 搭建Magento伺服器,所選執行個體規格記憶體不能小於2GiB。
- 網路類型:VPC
- IP地址:公網IP
樣本步驟使用以下軟體版本:
- Apache:2.4.6
- MySQL:5.7
- PHP:7.0
- Composer:1.8.5
- Magento:2.1
當您使用不同軟體版本時,可能需要根據實際情況調整命令和參數配置。
操作流程
在阿里雲ECS執行個體上搭建Magento電子商務網站的操作流程如下:
步驟一:安裝並配置Apache
- 安裝Apache。
- 運行以下命令安裝Apache。
yum install httpd -y
- 運行以下命令查看Apache是否安裝成功。
httpd -v
返回結果如下圖所示,表示安裝成功。
- 運行以下命令安裝Apache。
- 配置Apache。
- 運行以下命令開啟Apache設定檔。
vim /etc/httpd/conf/httpd.conf
- 在
Include conf.modules.d/*.conf
的下一行,添加LoadModule rewrite_module modules/mod_rewrite.so
。具體步驟如下:- 移動游標到
Include conf.modules.d/*.conf
下一行的行首。 - 按下i鍵進入編輯模式。
- 輸入
LoadModule rewrite_module modules/mod_rewrite.so
。
添加後的內容,如下圖所示。 - 移動游標到
- 將下列內容中的
AllowOverride None
更改為AllowOverride All
。# AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # #在行首添加#注釋掉本行內容 #AllowOverride None #添加下列內容 AllowOverride All
修改後的內容,如下圖所示。 - 按下Esc鍵後,輸入:wq並斷行符號以儲存並關閉設定檔。
- 運行以下命令開啟Apache設定檔。
- 運行以下命令啟動Apache服務。
systemctl start httpd
- 運行以下命令添加Apache服務開機自啟動。
systemctl enable httpd
步驟二:安裝並配置MySQL
- 安裝MySQL。
- 運行以下命令添加MySQL YUM源。
rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
- 運行以下命令安裝MySQL。
yum -y install mysql-community-server --nogpgcheck
- 運行以下命令添加MySQL YUM源。
- 運行以下命令啟動MySQL服務。
systemctl start mysqld
- 運行以下命令設定MySQL服務開機自啟動。
systemctl enable mysqld
- 配置MySQL。
- 運行以下命令查看/var/log/mysqld.log檔案,擷取並記錄root使用者的初始密碼。
grep 'temporary password' /var/log/mysqld.log
命令的返回結果如下:
2016-12-13T14:57:47.535748Z 1 [Note] A temporary password is generated for root@localhost: p0/G28g>lsHD
說明 下一步重設root使用者密碼時,會使用該初始密碼。 - 運行下列命令配置MySQL的安全性。
mysql_secure_installation
安全性的配置包含以下五個方面:- 設定root帳號密碼。
Enter password for user root: #輸入上一步中擷取的root使用者密碼 The 'validate_password' plugin is installed on the server. The subsequent steps will run with the existing configuration of the plugin. Using existing password for root. Estimated strength of the password: 100 Change the password for root ? ((Press y|Y for Yes, any other key for No) : Y #是否更改root使用者密碼,輸入Y New password: #輸入密碼,長度為8至30個字元,必須同時包含大小寫英文字母、數字和特殊符號。特殊符號可以是()` ~!@#$%^&*-+=|{}[]:;‘<>,.?/ Re-enter new password: #再次輸入密碼 Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
- 輸入
Y
刪除匿名使用者帳號。By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y #是否刪除匿名使用者,輸入Y Success.
- 輸入
Y
禁止root帳號遠程登入。Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y #禁止root遠程登入,輸入Y Success.
- 輸入
Y
刪除test庫以及對test庫的存取權限。Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y #是否刪除test庫和對它的存取權限,輸入Y - Dropping test database... Success.
- 輸入
Y
重新載入授權表。Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y #是否重新載入授權表,輸入Y Success. All done!
更多詳情,請參見MySQL文檔。
- 設定root帳號密碼。
- 運行以下命令查看/var/log/mysqld.log檔案,擷取並記錄root使用者的初始密碼。
步驟三:安裝並配置PHP
- 安裝PHP。
- 運行以下命令添加ius源。
yum install \ https://repo.ius.io/ius-release-el7.rpm \ https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
- 運行以下命令添加Webtatic源。
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
- 運行以下命令安裝PHP7及所需擴充。
yum -y install php70w php70w-pdo php70w-mysqlnd php70w-opcache php70w-xml php70w-gd php70w-mcrypt php70w-devel php70w-intl php70w-mbstring php70w-bcmath php70w-json php70w-iconv
- 運行以下命令查看PHP版本。
php -v
返回結果如下所示,說明PHP安裝成功。PHP 7.0.33 (cli) (built: Dec 6 2018 22:30:44) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.0.33, Copyright (c) 1999-2017, by Zend Technologies
- 運行以下命令添加ius源。
- 配置PHP。
- 運行以下命令開啟PHP設定檔。
vim /etc/php.ini
- 移動游標至最後一行的行尾。具體操作步驟如下:
- 輸入:$並斷行符號,游標將移動至檔案最後一行。
- 按下$移動游標至行尾。
- 按下i鍵進入編輯模式。
- 在檔案最後添加關於記憶體限制和時區的配置。
; 允許為PHP指令碼分配的最大記憶體值。您可根據實際情況增加或減少記憶體限制 memory_limit = 1024M ; 設定時區為上海 date.timezone = Asia/Shanghai
添加後如下圖所示。 - 按下Esc鍵後,輸入:wq並斷行符號以儲存並關閉檔案。
- 重啟Apache服務。
systemctl restart httpd
- 運行以下命令開啟PHP設定檔。
步驟四:建立Magento資料庫
- 運行以下命令使用root使用者和密碼登入MySQL。
mysql -u root -p
- 運行以下命令建立
magento
資料庫。mysql> CREATE DATABASE magento; #根據實際情況將magento替換為您需要建立的資料庫名稱
- 依次運行以下命令為
magento
資料庫建立使用者。mysql> GRANT ALL ON magento.* TO <YourUser>@localhost IDENTIFIED BY '<YourPass>'; #替換<YourUser>和<YourPass>為您需要建立的帳號和密碼 mysql> FLUSH PRIVILEGES;
例如,建立帳號為magentoUser
、密碼為magentoUser1@3
的使用者,啟動並執行命令為:mysql> GRANT ALL ON magento.* TO magentoUser@localhost IDENTIFIED BY 'magentoUser1@3'; mysql> FLUSH PRIVILEGES;
- 輸入exit並斷行符號以退出MySQL。
- 可選:驗證建立的Magento資料庫和使用者是否可用。具體步驟如下:
- 運行以下命令使用建立帳號和密碼登入MySQL。
mysql -u <YourUser> -p #替換<YourUser>為您建立的帳號
- 運行以下命令查看建立的
magento
資料庫。mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | magento | +--------------------+ 2 rows in set (0.00 sec)
- 運行以下命令並斷行符號以退出MySQL。
mysql> exit
- 運行以下命令使用建立帳號和密碼登入MySQL。
步驟五:安裝並配置Composer
Composer是PHP的一個依賴管理工具。Composer允許您申明專案所依賴的程式碼程式庫,並幫您在專案中安裝依賴的程式碼程式庫。
- 運行以下命令安裝Composer。
curl -sS https://getcomposer.org/installer | php
- 運行以下命令配置Composer全域使用。
mv /root/composer.phar /usr/bin/composer
- 運行命令composer -v查看Composer版本。返回結果如下,表示Composer安裝成功。
/ ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 1.8.5 2019-04-09 17:46:47
說明 因最新版Composer與Magento暫不相容,所以您需要安裝與Magento相容的Composer版本。你可以使用以下命令來讓最新版Composer轉換至相容版本。如Composer 1.8.5版本。composer self-update 1.8.5
步驟六:安裝配置Magento
您可以使用不同的方法安裝Magento,可以選擇是否安裝樣本資料。
- 如果安裝Magento僅用於測試,您可以選擇安裝樣本資料。
- 如果安裝Magento用於生產環境,建議您安裝全新的Magento,從頭開始配置。
本教程介紹使用Git下載Magento,並使用Composer安裝Magento的操作步驟。
- 下載Magento。
- 運行以下命令安裝Git。
yum -y install git
- 進入Web伺服器的預設根目錄。
cd /var/www/html/
- 下載Magento。
git clone https://github.com/magento/magento2.git
- 運行以下命令安裝Git。
- 可選:運行以下命令將Magento切換到穩定版本。
cd magento2 && git checkout tags/2.1.0 -b 2.1.0
命令執行後的結果如下:
Switched to a new branch '2.1.0'
說明 預設情況下,Git下載安裝的Magento是最新的開發版本。如果您在生產環境中使用,建議切換到穩定版本,否則未來將無法升級安裝。 - 運行以下命令將安裝檔案移到Web伺服器根目錄下。
shopt -s dotglob nullglob && mv /var/www/html/magento2/* /var/www/html/ && cd ..
說明 運行此命令後,您可以通過https://<ECS執行個體公網IP地址>
訪問您的Magento網站。否則,您只能通過https://<ECS執行個體公網IP地址>/magento2
訪問。 - 依次運行下列命令為Magento檔案設定適當的許可權。
chown -R :apache /var/www/html
find /var/www/html -type f -print0 | xargs -r0 chmod 640
find /var/www/html -type d -print0 | xargs -r0 chmod 750
chmod -R g+w /var/www/html/{pub,var}
chmod -R g+w /var/www/html/{app/etc,vendor}
chmod 750 /var/www/html/bin/magento
- 運行命令composer install安裝Magento。
步驟七:配置Magento用戶端
- 開啟瀏覽器。
- 在瀏覽器地址欄中,輸入
http://<ECS執行個體公網IP地址>
。出現如下圖所示頁面,表示Magento安裝成功。 - 單擊Agree and Setup Magento開始配置Magento。具體步驟如下:
- 準備性檢查。
- 單擊Start Readiness Check。
- 檢查完成後,單擊Next。
- 添加資料庫。
- 輸入之前建立的資料庫使用者的帳號和密碼。本教程中建立的樣本使用者帳號為
magentoUser
、密碼為magentoUser1@3
。 - 輸入之前建立的資料庫的名字。本教程中建立的樣本資料庫名字為
magento
。 - 單擊Next。
- 輸入之前建立的資料庫使用者的帳號和密碼。本教程中建立的樣本使用者帳號為
- 填寫Web訪問設定,並單擊Next。
- 填寫定製商店,並單擊Next。
- 填寫管理員帳號資訊,並單擊Next。
- 單擊Install Now進行安裝。
- 準備性檢查。
出現如下圖所示介面,表示Magento配置完成。
步驟八:添加cron作業
完成以下操作,添加cron作業:
- 運行crontab -u apache -e設定cron運行調度工作。
- 按下i鍵進入編輯模式。
- 輸入下列配置資訊。
*/10 * * * * php -c /etc /var/www/html/bin/magento cron:run */10 * * * * php -c /etc /var/www/html/update/cron.php */10 * * * * php -c /etc /var/www/html/bin/magento setup:cron:run
- 按下Esc鍵後,輸入:wq並斷行符號以儲存並退出。
Magento上使用cron作業的更多詳情,請參見Magento官方文檔。
常見問題
輸入
http://<ECS執行個體公網IP地址>/admin
登入Magento後台,如果介面提示“One or more indexers are invalid. Make sure your Magento cron job is running.”的錯誤資訊,請參考以下步驟解決問題。- 遠端連線Magento伺服器。具體操作,請參見串連方式概述。
- 運行以下命令,將PHP的安裝路徑建立軟串連至/usr/sbin/php目錄下。
ln -s /usr/local/php/bin/php /usr/sbin/php
- 運行以下命令,重新整理索引。
回顯資訊類似如下所示,表示索引已重新整理成功。cd /var/www/html php bin/magento indexer:reindex
[root@iZbp1h2mquu8nb0jz99**** wwwroot]# php bin/magento indexer:reindex Design Config Grid index has been rebuilt successfully in 00:00:00 Customer Grid index has been rebuilt successfully in 00:00:00 Category Products index has been rebuilt successfully in 00:00:00 Product Categories index has been rebuilt successfully in 00:00:00 Product Price index has been rebuilt successfully in 00:00:00 Product EAV index has been rebuilt successfully in 00:00:00 Stock index has been rebuilt successfully in 00:00:00 Catalog Rule Product index has been rebuilt successfully in 00:00:00 Catalog Product Rule index has been rebuilt successfully in 00:00:00 Catalog Search index has been rebuilt successfully in 00:00:00
- 重新整理頁面後,單擊Cache Management。
- 選中狀態為INVALIDATED的Cache Types,並單擊Submit。當出現類似如下返回資訊時,表示問題已經解決。
後續步驟
- 訪問
http://<ECS執行個體公網IP地址>
可以看到如下圖所示的預設首頁。 - 訪問
http://<ECS執行個體公網IP地址>/admin
,輸入您在安裝過程中設定的使用者名稱和密碼,成功登入管理面板後可看到如下介面。