Giới thiệu
Trong loạt bài viết này, chúng ta sẽ cùng khám phá cách triển khai các dự án WordPress trên máy tính cục bộ và sau đó chuyển giao dự án lên máy chủ. Chúng ta sẽ đề cập đến nhiều khía cạnh liên quan đến việc triển khai các dự án mới và hiện có, sao lưu, chuyển giao dự án hiện có, truy cập cơ sở dữ liệu, và nhiều hơn nữa.
PHẦN 1: Tạo dự án mới
WordPress đã xuất hiện từ lâu và mới đây đã kỷ niệm 20 năm thành lập. Dự án này đã thành công rực rỡ, khi mà ngày nay có rất nhiều trang web được xây dựng trên nền tảng này. Có lẽ có những lập trình viên đã làm việc với WordPress trong suốt hai mươi năm qua. Trong những trải nghiệm của tôi, WordPress không chỉ là một CMS sẵn có để triển khai mà còn là nền tảng cho việc tạo ra những dự án không tầm thường, như một thị trường cung cấp sản phẩm nông nghiệp.
Trước đây, tôi đã sử dụng LAMP để triển khai và phát triển các dự án WordPress. Sau đó, tôi đã đơn giản hóa quy trình phát triển bằng cách sử dụng các máy chủ cục bộ sẵn có như OpenServer. Tuy nhiên, sự phát triển của công nghệ đã mang đến những công cụ mới cho phép chúng ta nhanh chóng triển khai các dự án và cài đặt chúng trên máy chủ mà không tốn quá nhiều thời gian. Hiện tại, tôi đã chuyển sang sử dụng Docker cho việc phát triển, và tôi muốn giới thiệu đến các bạn về cách làm việc với Docker.
Trong phần đầu tiên này, chúng ta sẽ làm quen với quy trình tạo một dự án WordPress từ đầu.
Tôi hy vọng rằng các bạn đã biết Docker là gì. Nếu bạn chưa cài đặt phiên bản cục bộ, bạn có thể tải xuống từ trang web chính thức Docker.com.
Cấu trúc dự án
Bắt đầu thôi nào. Bây giờ bạn có thể tạo một thư mục cho dự án của mình. Mở thư mục và tạo cấu trúc dưới đây bên trong.
Chúng ta có 2 thư mục trống và 2 tệp tin.
Thư mục mysql sẽ chứa cơ sở dữ liệu của bạn. Thư mục wordpress sẽ chứa các tệp WordPress mà bạn sẽ chỉnh sửa sau. Hiện tại, bạn không cần phải sao chép gì vào các thư mục này.
Vì vậy, hãy tập trung vào các tệp tin.
Các tệp tin
Tệp tin .env chứa các thông tin cấu hình mặc định cho dự án của bạn. Thông thường, chúng ta không sao chép tệp này vào các kho lưu trữ hoặc chia sẻ. Tệp này chỉ dành cho hệ thống cục bộ của bạn. Tuy nhiên, việc tạo tệp ở bất kỳ đâu bạn cài đặt dự án là rất quan trọng. Hãy thay đổi tên cơ sở dữ liệu, người dùng và mật khẩu bằng thông tin của bạn.
.env
# MySQL
MYSQL_ROOT_PASSWORD=mật_khẩu_rất_bảo_mật
MYSQL_DATABASE=wordpress_db
MYSQL_USER=wordpress_user
MYSQL_PASSWORD=mật_khẩu_rất_bảo_mật
# Cấu hình WordPress
WORDPRESS_DEBUG=0
Tệp tin docker-compose.yml là tệp chính của chúng ta. Nó chứa các hướng dẫn chi tiết để tạo dự án, các thành phần và mối quan hệ giữa chúng.
docker-compose.yml
version: '3.8'
services:
# MySQL
mysql:
image: mysql:8.0
container_name: wordpress_mysql
restart: unless-stopped
env_file: .env
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql
networks:
- wordpress_network
command: --default-authentication-plugin=mysql_native_password
# WordPress
wordpress:
image: wordpress:latest
container_name: wordpress_app
restart: unless-stopped
env_file: .env
environment:
WORDPRESS_DB_HOST: mysql:3306
WORDPRESS_DB_USER: ${MYSQL_USER}
WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
volumes:
- ./wordpress/wp-content:/var/www/html/wp-content
ports:
- "8000:80"
depends_on:
- mysql
networks:
- wordpress_network
# phpMyAdmin
phpmyadmin:
image: phpmyadmin:latest
container_name: wordpress_phpmyadmin
restart: unless-stopped
environment:
PMA_HOST: mysql
PMA_PORT: 3306
PMA_ARBITRARY: 0
ports:
- "8080:80"
depends_on:
- mysql
networks:
- wordpress_network
networks:
wordpress_network:
driver: bridge
Hãy chú ý đến một số phần trong tệp.
Như bạn thấy, tệp có 3 khối lớn (Dịch vụ):
- MySQL
- WordPress
- phpMyAdmin
Trong phần đầu tiên, Docker sẽ tạo một cơ sở dữ liệu cho dự án của chúng ta. Nó lấy các thiết lập từ tệp .env và đặt chúng làm cấu hình mặc định. Sau khi xây dựng dự án, bạn sẽ tìm thấy các tệp cơ sở dữ liệu của mình trong thư mục mysql.
Phần tiếp theo là dự án WordPress của chúng ta. Docker không cần có các tệp WordPress sẵn có. Nó sẽ tải các tệp từ thư viện Docker trong quá trình xây dựng dự án. Tất cả các tệp này sẽ được đặt trong thư mục wordpress. Các tệp này sẽ được chỉnh sửa, và Docker chỉ đặt các tệp trong thư mục wp-content. Do đó, các lập trình viên có thể yên tâm rằng mã nguồn chính của WordPress không thể bị thay đổi và họ không thể làm hỏng điều gì.
Phần cuối cùng phpMyAdmin là không bắt buộc. Tôi đã thêm nó để dễ dàng truy cập cơ sở dữ liệu hơn. Bạn có thể xóa nó và sử dụng bất kỳ công cụ nào khác để chỉnh sửa MySQL.
Hãy chú ý đến phần cuối - networks. Phần này dùng để kết nối tất cả các thành phần lại với nhau.
Chạy các Container
Bây giờ dự án của chúng ta đã sẵn sàng để chạy. Trước khi xây dựng dự án, hãy kiểm tra xem Docker đã được khởi động trên máy tính của bạn chưa.
Bây giờ hãy mở thư mục chứa docker-compose.yml trong terminal (cmd, bash) và chạy lệnh dưới đây:
docker-compose up -d
Sau vài phút, Docker sẽ xây dựng dự án và bạn có thể truy cập nó qua trình duyệt bằng các URL sau:
- Dự án WordPress
http://localhost:8000/
- PhpMyAdmin
http://localhost:8080/
Mở thư mục wordpress trong trình soạn thảo mã của bạn. Bây giờ bạn có thể tiếp tục phát triển trang web của mình một cách thú vị.
Thực hành tốt nhất
- Sử dụng phiên bản Docker mới nhất: Đảm bảo bạn luôn cập nhật phiên bản Docker để tận dụng các tính năng mới và bảo mật.
- Tách biệt môi trường phát triển và sản xuất: Đừng sử dụng cùng một cấu hình cho cả môi trường phát triển và sản xuất để tránh rủi ro.
Những cạm bẫy phổ biến
- Quên không cấu hình tệp .env: Điều này có thể dẫn đến lỗi kết nối cơ sở dữ liệu.
- Không kiểm tra trạng thái container: Hãy chắc chắn rằng tất cả các container đều đang chạy trước khi truy cập ứng dụng.
Mẹo hiệu suất
- Sử dụng cache: Cài đặt các plugin cache cho WordPress để tăng tốc độ tải trang.
- Tối ưu hóa hình ảnh: Sử dụng các công cụ nén hình ảnh để giảm dung lượng tệp.
Khắc phục sự cố
- Lỗi kết nối cơ sở dữ liệu: Kiểm tra lại tệp .env và đảm bảo rằng các thông tin đăng nhập là chính xác.
- Container không chạy: Kiểm tra xem Docker đã khởi động và chạy trên máy tính của bạn chưa.
Kết luận
Trong phần đầu tiên này, chúng ta đã cùng nhau tìm hiểu cách tạo một dự án WordPress đơn giản bằng Docker. Việc triển khai nhanh chóng và dễ dàng giúp bạn tập trung vào việc phát triển nội dung hơn là lo lắng về cấu hình. Hãy theo dõi phần tiếp theo để khám phá thêm nhiều tính năng thú vị khác mà Docker có thể mang lại cho bạn trong việc phát triển dự án WordPress.
Câu hỏi thường gặp
1. Docker là gì?
Docker là một nền tảng cho phép bạn tạo, triển khai và quản lý các container ứng dụng.
2. Tôi có thể chạy nhiều dự án WordPress trên cùng một máy không?
Có, bạn có thể tạo nhiều thư mục và tệp docker-compose.yml khác nhau cho từng dự án.
3. Tôi có cần cài đặt MySQL riêng không?
Không, Docker sẽ tự động quản lý MySQL cho bạn thông qua container.
Hy vọng bài viết này hữu ích cho bạn trong việc phát triển dự án WordPress với Docker!