iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0
Software Development

《電商修仙術:AI × Magento 開發心法》系列 第 13

[Day 13] Magento 常見指令大全:update 怎麼 update?

  • 分享至 

  • xImage
  •  

前言

昨天我們一起練習了模組開發,體驗了 Magento 的擴充方式。
不過在開發的過程中,有一件事情常常會遇到:我改了程式,卻發現前台/後台沒變!
這時候,十之八九就是忘了下 Magento 的指令 了。

今天我們就來完整整理:

  1. Docker 環境下怎麼進容器跑指令
  2. Magento CLI 常見指令
  3. 我實際在專案裡更新時的完整順序

🐳 前置提醒:Docker Compose 環境怎麼下指令?

因為我們的環境是用 Docker Compose 建立的,所以 Magento 的 CLI 不是直接在主機執行,而是要先「進到容器裡」。

假設你的服務名稱是 php(通常在 docker-compose.yml 裡會有寫),那你可以這樣下:

docker-compose exec php bash

進去後就能使用:

bin/magento ...

或者偷懶一點,直接在主機上:

docker-compose exec php bin/magento ...

👉 記住:之後提到的所有 bin/magento 指令,都是要在容器裡跑的。


Magento CLI 是什麼?

Magento 自帶一個命令工具,路徑在:

bin/magento

它能做很多事:清快取、升級、部署、重新索引、啟停模組… 幾乎所有日常維護都靠它。


常見指令整理

1. 檢查安裝環境

bin/magento setup:check

👉 檢查 PHP、DB、目錄權限是否正確。


2. 模組狀態

bin/magento module:status

👉 看目前有哪些模組啟用、停用。

啟用模組:

bin/magento module:enable Vendor_Module

停用模組:

bin/magento module:disable Vendor_Module

3. 升級 & Update

這是最常見的:

bin/magento setup:upgrade

👉 用來更新系統設定、執行資料庫 migration(db_schema.xml / InstallSchema / UpgradeSchema 等)。
當你新增/修改模組、或是調整設定檔案時,都要跑這個。

小提醒:
如果你只改了 PHP 邏輯(例如 Plugin 攔截 function),通常不需要跑 upgrade;
但如果有動到 etc/db_schema.xmletc/config.xml 預設值,那就一定要跑。


4. 快取管理

查看快取狀態:

bin/magento cache:status

清快取:

bin/magento cache:clean

刪快取:

bin/magento cache:flush

⚠️ cleanflush 差別:

  • clean:只清 Magento 知道的 cache。
  • flush:直接砍整個快取系統(包含其他應用程式的 cache)。

5. 重新索引

Magento 用 indexer 加速查詢,如果你改了商品 / 分類,偶爾需要手動重建:

bin/magento indexer:reindex

查看索引狀態:

bin/magento indexer:status

6. 靜態資源部署

開發或上線時常用:

bin/magento setup:static-content:deploy -f

👉 會把翻譯、CSS、JS、圖片資源部署到 pub/static
如果你切換 mode(developer / production)後,前端 CSS/JS 出不來,多半要跑這個。


7. 編譯 DI 與生成代理

bin/magento setup:di:compile

👉 在 production mode 下必跑,會重新生成 generated 裡的 class。


⚡ 我的 Magento 更新流程(實戰版)

在專案中,如果我要更新 Magento(例如:改了程式、調整設定、改 phtml、di.xml…),我通常會照這個順序來打指令:

# 1) 更新系統、執行資料庫 schema/config
sudo bin/magento setup:upgrade

# 2) 重新編譯依賴注入(改了 di.xml 要跑這個)
sudo bin/magento setup:di:compile

# 3) 部署靜態資源(改了 phtml / JS / CSS 要跑,加 -f 強制覆蓋)
sudo bin/magento setup:static-content:deploy -f

# 4) 重新索引(確保商品、分類、價格等資料更新)
sudo bin/magento indexer:reindex

# 5) 清掉整個快取(避免殘留舊的 config、layout)
sudo bin/magento cache:flush

# 6) 生成 Magepack 資源(最佳化 JS bundle,加速前端)
sudo magepack generate \
  --cms-url="http://your-magento-site.local/" \
  --category-url="http://your-magento-site.local/category.html" \
  --product-url="http://your-magento-site.local/sample-product.html"

# 7) 打包 Magepack bundle
sudo magepack bundle

# 8) 再清快取一次(確保 Magepack 資源生效)
sudo bin/magento cache:clean

# 9) 修正檔案權限(避免部署後檔案/資料夾權限錯誤)
sudo chown -R hamilton:www-data .

為什麼要照這個順序?

  1. setup:upgrade → 核心步驟,更新 DB schema 與模組狀態。
  2. di:compile → 改了 di.xml 或新增 class,需要重新生成。
  3. static-content:deploy -f → 改前端資源必跑,不然畫面會舊。
  4. indexer:reindex → 確保資料同步(商品、分類、價格)。
  5. cache:flush → 清空所有快取,避免殘留錯誤。
  6. magepack generate → 抓取 CMS、分類、產品頁,分析需要打包的 JS。
  7. magepack bundle → 真正打包出優化後的 bundle。
  8. cache:clean → 再清一次快取,讓新 bundle 上線。
  9. chown → 調整檔案權限,避免權限錯誤導致前端/後端存取失敗。

結尾

今天我們完整看了 Magento 常見指令,還加上了 專案實戰更新流程
不管是日常開發還是正式上線,照著這個順序跑,基本上就能避免大部分「改了程式卻沒生效」的問題。


上一篇
[Day 12] Magento開發練習:後台設定 + Plugin
系列文
《電商修仙術:AI × Magento 開發心法》13
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言