萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 電腦入門

DedeCMS (織夢) 打包專屬安裝包教學:整合資料庫與程式碼一鍵部署

為什麼要製作專屬安裝包?

  • 避免客戶手動匯入 SQL、修改配置檔、設定權限等易出錯步驟。
  • 交付「上傳 → 執行安裝精靈 → 完成」的標準化體驗,提升專業度。
  • 封裝特定版本、插件、模板、預設資料,確保環境一致性。

核心原理

DedeCMS 安裝程式位於 install/ 目錄。安裝過程實為:
1. 檢查環境 → 2. 讀取 install/module-install.php 執行 SQL 建表 (sql-dftables.txt) 與寫入資料 (sql-dfdata.txt) → 3. 寫入 data/common.inc.php 資料庫連線設定 → 4. 產生 install_lock.txt 防止重裝。

我們要做的就是:**預先備妥目標資料庫的 SQL**,替換安裝目錄預設 SQL 檔案,並確保安裝入口開放。

步驟一:準備乾淨的 install 目錄

  1. 刪除 install/index.html (靜態首頁,會阻擋安裝精靈)。
  2. 將 install/index.php.bak 重命名為 index.php (安裝精靈入口)。
  3. 刪除 install/install_lock.txt (若存在,安裝程式會拒絕執行)。
  4. 將 install/module-install.php.bak 重命名為 module-install.php (核心安裝邏輯)。

步驟二:匯出目標資料庫 SQL (關鍵步驟)

使用 phpMyAdmin (或 mysqldump) 匯出**完整資料庫結構與資料**。

方法 A:phpMyAdmin 圖形介面 (分兩步匯出,對應兩個檔案)

  1. 匯出結構 (對應 sql-dftables.txt):
    選擇資料庫 → 匯出 → 自訂 → 輸出 區塊勾選 「結構」** (Structure) → **取消勾選「資料」** → 格式 SQL → 執行 → 複製結果 → 覆蓋 install/sql-dftables.txt。
  2. 匯出資料 (對應 sql-dfdata.txt):
    同樣進入匯出 → 自訂 → 輸出 勾選 「資料」** (Data) → **取消勾選「結構」** → 格式 SQL → 選項:
    ✅ 「完整的 INSERT 語句」
    ✅ 「使用 INSERT IGNORE」 (避免主鍵衝突)
    ✅ 「十六進制顯示二進位欄位」
    → 執行 → 複製結果 → 覆蓋 install/sql-dfdata.txt。

方法 B:mysqldump 命令列 (自動化/大型資料庫首選)

# 僅結構
mysqldump -u root -p --no-data --routines --triggers --events --databases dede_db > sql-dftables.txt

# 僅資料 (完整 INSERT, 十六進制二進位)
mysqldump -u root -p --no-create-info --complete-insert --hex-blob --databases dede_db > sql-dfdata.txt

將產生的兩個檔案分別覆蓋 install/ 目錄下同名檔案。

步驟三:處理配置檔模板 (選做,進階)

安裝精靈最後會寫入 data/common.inc.php。若要預設資料庫前綴、cookie 加密鑰等,可修改 install/module-install.php 中寫入配置的邏輯,或準備一份預設 common.inc.php.bak 由安裝腳本複製。

步驟四:打包交付

  1. 整理網站根目錄:刪除 data/common.inc.php (若存在)、data/cache/ 快取、uploads/ 測試上傳檔、a 目錄 (舊版後台) 等敏感/臨時內容。
  2. 壓縮整個網站根目錄為 dede_custom_package.zip。
  3. 交付客戶:上傳至空間解壓 → 瀏覽 https://domain/install/ → 填寫資料庫資訊 (主機、使用者、密碼、資料庫名) → 下一步 → 完成。

進階:自動化建立安裝包腳本 (Bash/PowerShell)

#!/bin/bash
# build_dede_package.sh
WEB_ROOT="/var/www/dede_source"
PKG_DIR="/tmp/dede_package_$(date +%Y%m%d_%H%M%S)"
DB_NAME="dede_db"
DB_USER="root"
DB_PASS="your_password"

# 1. 複製原始碼
cp -r "$WEB_ROOT" "$PKG_DIR"

# 2. 處理 install 目錄
cd "$PKG_DIR/install"
rm -f index.html install_lock.txt
mv index.php.bak index.php
mv module-install.php.bak module-install.php

# 3. 匯出 SQL
mysqldump -u"$DB_USER" -p"$DB_PASS" --no-data --routines --triggers --events --databases "$DB_NAME" > sql-dftables.txt
mysqldump -u"$DB_USER" -p"$DB_PASS" --no-create-info --complete-insert --hex-blob --databases "$DB_NAME" > sql-dfdata.txt

# 4. 清理敏感/暫存檔
cd "$PKG_DIR"
rm -f data/common.inc.php
rm -rf data/cache/* uploads/* a/ 2>/dev/null

# 5. 打包
cd /tmp
zip -r "dede_custom_$(date +%Y%m%d).zip" "$(basename "$PKG_DIR")"
echo "Package created: dede_custom_$(date +%Y%m%d).zip"

注意事項與避坑

  • 資料庫前綴:匯出的 SQL 含 dede_ 前綴。安裝時若客戶指定不同前綴,**安裝程式不會自動替換 SQL 內前綴**。解決:安裝前手動修改 SQL 檔案前綴,或修改安裝程式支援前綴替換 (需二開)。
  • 管理員帳號密碼:SQL 中含雜湊後的管理員密碼。交付前請在 sql-dfdata.txt 中將 dede_admin 表密碼欄位替換為已知雜湊值 (如 admin 對應 e10adc3949ba59abbe56e057f20f883e MD5),或要求客戶安裝後立即修改。
  • 版本匹配:安裝包程式碼版本**必須與 SQL 來源版本完全一致**,否則缺欄位/多欄位會導致安裝報錯或運行異常。
  • PHP 版本相容:DedeCMS 5.7/5.8 建議 PHP 5.6/7.0/7.1,PHP 8.x 需修正相容性問題 (如 each() 棄用、create_function 移除)。
  • 安全性:安裝完成後**務必刪除 install 目錄**,或由安裝程式自動建立 install_lock.txt 防止重裝。

掌握「乾淨 install 目錄 + 精準 SQL 分離匯出 + 敏感檔清理」三步驟,即可輕鬆打造專屬 DedeCMS 一鍵安裝包,大幅降低交付風險與客戶上手門檻。

copyright © 萬盛學電腦網 all rights reserved