使用Docker在1Panel中部署WordPress+MySQL+Redis全攻略

73次閱讀
尚無留言

在現代網站建設中,WordPress依然是最受歡迎的內容管理系統之一。透過Docker容器技術,我們可以快速、穩定地部署WordPress環境,同時整合MySQL資料庫和Redis快取以提升效能。本文將詳細介紹如何在1Panel面板中使用Docker Compose部署這套完整的網站解決方案。

為什麼選擇Docker部署WordPress?

Docker容器化技術提供了許多優勢:

  • 環境隔離:各組件運行在獨立容器中,互不干擾
  • 簡化部署:一次性配置,隨處可用
  • 易於維護:單獨更新各組件,不影響整體系統
  • 資源優化:按需分配資源,最大化利用伺服器效能

前置準備

在開始部署前,您需要:

  1. 已安裝好1Panel面板的伺服器
  2. 基本的Linux和Docker知識
  3. 伺服器具備至少1GB記憶體和10GB儲存空間

部署步驟

步驟一:建立Docker網路

首先建立一個專用網路,讓各個容器能夠互相通信:

  1. 在1Panel中選擇「應用商店」→「Docker管理」→「網路」
  2. 點擊「建立網路」按鈕
  3. 填寫以下資訊:
  • 網路名稱:wordpress_network
  • 模式:選擇「bridge」
  • IPv4:勾選並使用預設設定
  1. 點擊「確定」完成建立

步驟二:建立Docker Compose配置檔案

我們將使用Docker Compose來統一管理多個容器,這種方式比單獨創建容器更加便捷:

  1. 在1Panel中選擇「應用商店」→「Docker管理」→「編排」
  2. 點擊「建立編排」,填寫:
  • 名稱:Wordpress全站
  • 選擇文件夾或自動創建
  1. 在編輯區域中,貼上以下內容:
services:
  # MySQL資料庫服務
  db:
    image: mysql:8.0
    container_name: wordpress_mysql
    volumes:
      - mysql_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: StrongRootPass456!
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: WordPressPass789!
      MYSQL_CHARACTER_SET_SERVER: utf8mb4
      MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
    networks:
      - wordpress_network

  # Redis快取服務
  redis:
    image: redis:latest
    container_name: wordpress_redis
    command: redis-server --requirepass RedisPass123! --appendonly yes
    volumes:
      - redis_data:/data
    restart: always
    networks:
      - wordpress_network

  # WordPress服務
  wordpress:
    image: wordpress:latest
    container_name: wordpress_app
    depends_on:
      - db
      - redis
    volumes:
      - wordpress_data:/var/www/html
    restart: always
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: WordPressPass789!
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_TABLE_PREFIX: wp_
      WORDPRESS_DEBUG: 1
      WORDPRESS_CONFIG_EXTRA: define('WP_MEMORY_LIMIT', '256M'); define('WP_MAX_MEMORY_LIMIT', '512M'); define('WP_CACHE', true);
    ports:
      - "8787:80"
    networks:
      - wordpress_network

networks:
  wordpress_network:
    driver: bridge

volumes:
  mysql_data:
  redis_data:
  wordpress_data:

注意: 請確保修改上述配置中的各種密碼,以增強安全性。

  1. 點擊「儲存」按鈕保存配置文件

步驟三:啟動服務

  1. 在編排列表中找到剛剛創建的「Wordpress全站」
  2. 點擊「啟動」按鈕
  3. 等待服務啟動過程完成,這可能需要1-2分鐘時間

啟動成功後,您可以在容器列表中看到三個運行中的容器:

  • wordpress_mysql:MySQL資料庫
  • wordpress_redis:Redis快取
  • wordpress_app:WordPress應用程式

步驟四:訪問WordPress並完成初始設定

  1. 在瀏覽器中訪問:http://您的伺服器IP:8787
  2. 跟隨WordPress設定精靈:
  • 選擇語言(繁體中文)
  • 設定網站標題
  • 創建管理員帳號和密碼
  • 輸入您的電子郵件地址
  1. 點擊「安裝WordPress」按鈕
  2. 完成後使用您設定的帳號密碼登入後台

步驟五:安裝並設定Redis快取插件

為了讓WordPress能夠使用Redis作為快取系統,需要安裝專用插件:

  1. 在WordPress後台中選擇「插件」→「安裝插件」
  2. 搜索「Redis Object Cache」
  3. 安裝並啟用由Till Krüss開發的Redis Object Cache插件
  4. 在「設定」→「Redis」中配置:
  • 伺服器:redis(或wordpress_redis)
  • 端口:6379
  • 密碼:RedisPass123!(使用您在Docker Compose中設定的密碼)
  1. 點擊「儲存設定」後,再點擊「啟用對象快取」按鈕

性能優化建議

安裝其他必要插件

以下插件可以進一步提升您的WordPress網站性能:

  1. WP Super CacheW3 Total Cache:提供頁面快取功能
  2. SmushShortPixel:自動優化圖片
  3. WP Rocket:付費插件,提供全面的快取和優化方案

安全設定

為確保您的WordPress網站安全:

  1. 使用WordfenceSucuri等安全插件
  2. 定期更新WordPress核心、主題和插件
  3. 採用強密碼並啟用兩因素認證

資料備份策略

定期備份是防止數據丟失的關鍵:

  1. 在1Panel中設定定期備份任務
  2. 使用UpdraftPlus等WordPress備份插件
  3. 將備份存儲在多個位置,包括異地備份

監控與維護

定期檢查系統狀態,確保一切正常運行:

  1. 在1Panel中監控容器的資源使用情況
  2. 檢查WordPress錯誤日誌
  3. 定期優化MySQL資料庫
  4. 清理Redis快取

常見問題排解

資料庫連接錯誤

  • 檢查MySQL容器是否正常運行
  • 確認環境變數中的資料庫用戶名和密碼是否正確
  • 嘗試使用MySQL容器的IP地址替代容器名稱

Redis連接問題

  • 確保Redis容器運行正常
  • 檢查Redis密碼是否設定正確
  • 檢查網路連接是否正常

網站載入緩慢

  • 檢查伺服器資源使用情況
  • 優化WordPress圖片和資料庫
  • 調整PHP和MySQL配置參數

參考資源

結論

透過Docker Compose在1Panel中部署WordPress+MySQL+Redis組合,您可以輕鬆建立一個高性能、易於維護的網站環境。這種方式不僅簡化了部署過程,還為後續的擴展和維護奠定了良好基礎。

希望本文能幫助您順利完成WordPress環境的部署。如有任何問題,歡迎在評論區留言交流!


注意事項: 本文中的密碼僅作示範用途,實際部署時請使用強密碼並妥善保管。在生產環境中,建議進一步加強安全設定,如使用HTTPS、設定防火牆等。

附件 不懂每一行在幹嘛的看這裡

services:  # 定義所有服務(容器)
  # MySQL數據庫服務
  db:  # 服務名稱,在其他服務內可用此名稱連接
    image: mysql:8.0  # 使用MySQL 8.0版本的官方映像
    container_name: wordpress_mysql2  # 容器實際名稱
    volumes:  # 設定持久化儲存
      - mysql_data:/var/lib/mysql  # 將mysql_data卷掛載到容器內的/var/lib/mysql路徑
    restart: always  # 設定容器自動重啟政策為總是重啟
    environment:  # 環境變數設定
      MYSQL_ROOT_PASSWORD: StrongRootPass456!  # MySQL root用戶密碼
      MYSQL_DATABASE: wordpress  # 自動創建的資料庫名稱
      MYSQL_USER: wordpress  # 創建的普通用戶名
      MYSQL_PASSWORD: WordPressPass789!  # 普通用戶密碼
      MYSQL_CHARACTER_SET_SERVER: utf8mb4  # 數據庫字符集,支援完整的Unicode字符
      MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci  # 設定排序規則,適合多語言支援
    networks:  # 網路設定
      - wordpress_network  # 加入wordpress_network網路

  # Redis快取服務
  redis:  # 服務名稱
    image: redis:latest  # 使用最新版Redis官方映像
    container_name: wordpress_redis2  # 容器實際名稱
    command: redis-server --requirepass RedisPass123! --appendonly yes  # 容器啟動命令,設定Redis密碼和啟用AOF持久化
    volumes:  # 設定持久化儲存
      - redis_data:/data  # 將redis_data卷掛載到容器內的/data路徑
    restart: always  # 總是自動重啟
    networks:  # 網路設定
      - wordpress_network  # 加入wordpress_network網路

  # WordPress服務
  wordpress:  # 服務名稱
    image: wordpress:latest  # 使用最新版WordPress官方映像
    container_name: wordpress_app2  # 容器實際名稱
    depends_on:  # 依賴關係設定,確保這些服務先啟動
      - db  # 依賴資料庫服務
      - redis  # 依賴Redis服務
    volumes:  # 設定持久化儲存
      - wordpress_data:/var/www/html  # 將wordpress_data卷掛載到容器內的/var/www/html路徑
    restart: always  # 總是自動重啟
    environment:  # 環境變數設定
      WORDPRESS_DB_HOST: db  # 數據庫主機名(使用服務名稱)
      WORDPRESS_DB_USER: wordpress  # 連接數據庫的用戶名
      WORDPRESS_DB_PASSWORD: WordPressPass789!  # 連接數據庫的密碼
      WORDPRESS_DB_NAME: wordpress  # 數據庫名稱
      WORDPRESS_TABLE_PREFIX: wp_  # 資料表前綴
      WORDPRESS_DEBUG: 1  # 啟用偵錯模式,便於排查問題
      WORDPRESS_CONFIG_EXTRA: define('WP_MEMORY_LIMIT', '256M'); define('WP_MAX_MEMORY_LIMIT', '512M'); define('WP_CACHE', true);  # 額外的WordPress配置,設定內存限制和啟用快取
    ports:  # 端口映射設定
      - "8787:80"  # 將主機的8787端口映射到容器的80端口
    networks:  # 網路設定
      - wordpress_network  # 加入wordpress_network網路

networks:  # 定義網路
  wordpress_network:  # 網路名稱
    driver: bridge  # 網路驅動類型為橋接模式,適合同一主機上的容器通信

volumes:  # 定義持久化存儲卷
  mysql_data:  # MySQL數據卷,自動創建
  redis_data:  # Redis數據卷,自動創建
  wordpress_data:  # WordPress數據卷,自動創建
正文完
 0
評論(尚無留言)