Hiện tại, KazeWP – công cụ triển khai, quản lý WordPress với Docker, Caddy và bash script của mình chưa có tích hợp phpMyAdmin. Lý do vì mình chưa bao giờ cần phải dùng đến phpMyAdmin khi quản lý WordPress. Chủ yếu mình quản lý WordPress qua WP-CLI hoặc khi cần đụng tới mysql thì sẽ gõ lệnh luôn trong command line.

Dạo gần đây có vẻ KazeWP bắt đầu được chia sẻ nhiều hơn và khá nhiều bạn đã thắc mắc làm sao để cài đặt phpMyAdmin. Dưới đây là hướng dẫn cách tích hợp phpMyAdmin khi sử dụng KazeWP

1. Cài đặt thủ công

Truy cập vào thư mục của website bạn cần cài đặt phpMyAdmin để truy xuất vào mysql. Chỉnh sửa file compose.yml vào thêm vào đoạn này ngay trước phần khai báo networks:

  phpmyadmin:
    container_name: phpmyadmin_kazewp.com
    depends_on:
      - db_kazewp.com
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_HOST=db_kazewp.com
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
    restart: always
    ports:
      - "8080:80"
    networks:
      - kazewp.com_netCode language: YAML (yaml)

Lưu ý: cần thay thế kazewp.com thành tên miền tương ứng của bạn.

Sau đó kích hoạt lại bằng lệnh

docker compose up -dCode language: Nginx (nginx)

Truy cập vào phpMyAdmin theo địa chỉ http://<IP>:8080, đăng nhập bằng tài thông tin tài khoản MYSQL_USER & MYSQL_PASSWORD được lưu trong file .env. Gõ lệnh cat .env để xem nội dung file.

Để bảo đảm bảo mật, sau khi sử dụng, các bạn nên tạm ngưng phpMyAdmin

docker compose stop phpmyadminCode language: Nginx (nginx)

2. Cập nhật KazeWP lên phiên bản mới

Mình vừa mới cập nhật nhanh để KazeWP để hỗ trợ thêm phpMyAdmin. Hiện tại phiên bản này đang được lưu bên nhánh development, chưa đẩy lên nhánh chính. Đợi kiểm tra thử nghiệm ổn định và tối ưu hơn, mình sẽ đẩy qua nhánh chính sau.

Mình đã cập nhật KazeWP, bổ sung thêm một số tính năng:

  • Hỗ trợ cài đặt phpMyAdmin
  • Bổ sung thêm tùy chọn restart caddy vào menu
  • Bổ sung thêm lệnh ./kazewp.sh restart caddy để khởi động lại Caddy
  • Sắp xếp lại cấu trúc thư mục gọn gàng hơn

Các bạn có thể cập nhật KazeWP bằng lệnh

git pullCode language: Nginx (nginx)

Hoặc có thể xóa, clone lại từ đầu

git clone https://github.com/10h30/kazewpCode language: PHP (php)

Khi khởi tạo website mới, giờ sẽ có thêm dòng Do you want to include phpMyAdmin? (y/n) , chỗ này nhớ chọn y để file compose.yml được bổ sung thêm phần khai báo dịch vụ cho phpMyAdmin.

File compose.yaml hoàn chỉnh sẽ tương tự như sau

services:
  db_thuanbui.com:
    container_name: db_thuanbui.com
    image: mariadb:11.2-jammy
    volumes:
      - ./db_data:/var/lib/mysql
    restart: always
    env_file:
      - .env
    healthcheck:
      test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "--silent"]
      interval: 10s
      timeout: 5s
      retries: 3
    networks:
      - thuanbui.com_net

  wordpress_thuanbui.com:
    container_name: wordpress_thuanbui.com
    depends_on:
      - db_thuanbui.com
    image: wordpress:fpm-alpine
    volumes:
      - ./html/:/var/www/html
    env_file:
      - .env
    restart: always
    networks:
      - thuanbui.com_net
      - caddy_net

  wpcli:
    depends_on:
      - db_thuanbui.com
      - wordpress_thuanbui.com
    env_file:
      - .env
    image: wordpress:cli
    entrypoint: wp
    command: "--info"
    volumes_from:
      - wordpress_thuanbui.com
    networks:
      - thuanbui.com_net
      - caddy_net

  phpmyadmin:
    container_name: phpmyadmin_thuanbui.com
    depends_on:
      - db_thuanbui.com
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_HOST=db_thuanbui.com
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
    restart: always
    networks:
      - thuanbui.com_net
      - caddy_net

  
networks:
  thuanbui.com_net:
    driver: bridge
  caddy_net:
    external: true
Code language: YAML (yaml)

Tuy nhiên, khi bạn kích hoạt WordPress bằng lệnh docker compose up -d, phpMyAdmin sẽ không tự động chạy (do cấu hình bởi 2 dòng 60-61). Mình cố ý thiết lập như thế để tránh nguy cơ bảo mật, và cũng để tránh xung đột khi có nhiều site hoạt động, các dịch vụ phpmyadmin sẽ bị đụng nhau vì cùng sử dụng port 8080.

Truy cập vào phpMyAdmin theo địa chỉ http://<IP>:8080, đăng nhập bằng tài thông tin tài khoản MYSQL_USER & MYSQL_PASSWORD được lưu trong file .env. Gõ lệnh cat .env để xem nội dung file.

phpMyAdmin sẽ tự động được kích hoạt cùng với WordPress. Truy cập vào phpMyAdmin bằng địa chỉ https://<domain>/pma/

Sau khi sử dụng xong, bạn nên tắt phpMyAdmin để bảo đảm an toàn, bảo mật. Truy cập vào thư mục của website và gõ lệnh.

docker compose stop phpmyadminCode language: Nginx (nginx)

3. Chú ý

Để bảo đảm hoạt động ổn định, mình khuyến khích dùng cách 1, tự cập nhật compose.yml để bổ sung dịch vụ khi cần.

Còn cách 2 hiện tại chưa bảo đảm sự ổn định, có thể gặp lỗi ngoài ý muốn. Ngoài ra, mình dự tính sẽ cập nhật thêm tính năng truy cập phpMyAdmin thông qua tên miền, ví dụ https://thuanbui.me/phpmyadmin , kết hợp thêm yêu cầu đăng nhập username / password để tăng bảo mật. Sẽ không cần phải truy cập thông qua IP và port nữa.

KazeWP đã được cập nhật hỗ trợ phpMyAdmin, truy cập theo địa chỉ https://<domain>/pma/

Bạn nào quan tâm có thể bấm Star và Watch repo Kazewp để được cập nhật thông tin mới.

Star Watch

Nếu bạn cần hỗ trợ kỹ thuật miễn phí, vui lòng gửi câu hỏi trực tiếp ở phần Thảo luận bên dưới, mình sẽ trả lời trong thời gian sớm nhất.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *


4 Comments

    1. Nếu cài đặt ở nhà thì em chỉnh Port Forwarding port 80,443 trên router về địa chỉ IP của máy ảo cài LXC. Sau đó cài thêm cái này để tự dộng cập nhật IP cho tên miền: https://thuanbui.me/cau-hinh-dynamic-dns-qua-cloudflare-su-dung-docker-compose/
      Hoặc có thể cấu hình trực tiếp lại Caddy theo hướng dẫn này để nó tự động cập nhật DNS: https://thuanbui.me/cau-hinh-dynamic-dns-va-wildcard-ssl-cho-caddy-server/

  1. Mong anh hướng dẫn cài n8n trên proxmox. Hoặc n8n trên DSM cài trên proxmox. Chúc anh sức khoẻ và luôn mang đến kiến thức hữu ích cho mọi người

Bạn cần hỗ trợ kỹ thuật chuyên sâu?

Khám phá các gói dịch vụ giúp bạn tối ưu công việc và vận hành hệ thống hiệu quả hơn. Từ chăm sóc website đến hỗ trợ kỹ thuật, mọi thứ đều linh hoạt và phù hợp với nhu cầu của bạn.