Joomla Bài học 2: Thiết lập môi trường phát triển chuẩn (Docker, Nginx/Apache, PHP 8.2+, MySQL 8) và cài đặt Joomla
Để vận hành mượt mà Joomla 5, hệ thống của chúng ta cần tối thiểu PHP 8.1.0+ (khuyên dùng PHP 8.2+ hoặc PHP 8.3 để tận dụng tối đa hiệu năng và các tính năng hiện đại như typed properties, readonly classes) cùng với MySQL 8.0+ hoặc MariaDB 10.4+.
Trong bài học này, chúng ta sẽ xây dựng một cấu hình Docker Compose gọn gàng, tối ưu cho việc viết code và debug Joomla.
1. Chuẩn bị cấu trúc thư mục dự án
Tạo một thư mục gốc cho dự án của bạn (ví dụ: joomla-learning), bên trong tạo cấu trúc thư mục như sau:
Plaintext
joomla-learning/
├── docker/
│ ├── nginx/
│ │ └── default.conf
│ └── php/
│ └── Dockerfile
├── src/ <-- Mã nguồn Joomla sẽ nằm ở đây
├── docker-compose.yml
└── .env
2. Xây dựng cấu hình Docker Compose (docker-compose.yml)
Tạo file docker-compose.yml ở thư mục gốc với nội dung chuẩn cho môi trường dev PHP/Nginx/MySQL:
YAML
version: '3.8'
services:
nginx:
image: nginx:alpine
container_name: joomla_nginx
restart: unless-stopped
ports:
- "8080:80"
volumes:
- ./src:/var/www/html:delegated
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
networks:
- joomla-net
php:
build:
context: ./docker/php
dockerfile: Dockerfile
container_name: joomla_php
restart: unless-stopped
working_dir: /var/www/html
volumes:
- ./src:/var/www/html:delegated
environment:
- PHP_IDE_CONFIG=serverName=localhost
networks:
- joomla-net
db:
image: mysql:8.0
container_name: joomla_mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: joomla_db
MYSQL_USER: joomla_user
MYSQL_PASSWORD: joomla_password
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
networks:
- joomla-net
volumes:
db_data:
networks:
joomla-net:
driver: bridge
3. Cấu hình PHP Custom (docker/php/Dockerfile)
Joomla 5 yêu cầu một số PHP Extensions quan trọng như curl, gd, intl, mbstring, mysqli, pdo_mysql, xml, zip. Hãy tạo file docker/php/Dockerfile để cài đặt đầy đủ:
Dockerfile
FROM php:8.2-fpm
# Cài đặt các extension hệ thống và PHP extensions bắt buộc cho Joomla
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
libicu-dev \
libzip-dev \
libxml2-dev \
git \
unzip \
curl \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) \
gd \
intl \
pdo_mysql \
mysqli \
zip \
opcache \
exif
# Cài đặt Composer mới nhất
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html
4. Cấu hình Nginx (docker/nginx/default.conf)
Joomla yêu cầu cấu hình rewrite URL để hỗ trợ SEF URL. Tạo file docker/nginx/default.conf:
Nginx
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html index.htm;
client_max_body_size 64M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 300;
}
# Chặn truy cập vào các file nhạy cảm
location ~* /\.(?!well-known).* {
deny all;
}
}
5. Khởi chạy Docker và Cài đặt Joomla
-
Mở terminal tại thư mục dự án và chạy lệnh khởi chạy container:
Bash
docker-compose up -d --build -
Tải mã nguồn Joomla 5 phiên bản mới nhất từ trang chủ chính thức (
joomla.org) và giải nén toàn bộ mã nguồn vào thư mụcsrc/của dự án. -
Mở trình duyệt và truy cập:
http://localhost:8080 -
Trình cài đặt giao diện (Web Installer) của Joomla sẽ xuất hiện:
-
Ngôn ngữ: Chọn Tiếng Việt hoặc Tiếng Anh.
-
Tên trang web: Đặt tên cho dự án (ví dụ: Joomla Series Lab).
-
-
Cấu hình Cơ sở dữ liệu (Database Configuration):
-
Loại cơ sở dữ liệu:
MySQLi -
Tên máy chủ (Host):
db(tên service trong docker-compose) -
Tên tài khoản:
joomla_user -
Mật khẩu:
joomla_password -
Tên cơ sở dữ liệu:
joomla_db -
Tiền tố bảng (Table Prefix): Giữ nguyên hoặc tùy chỉnh ngẫu nhiên (ví dụ:
j5_).
-
-
Hoàn tất các bước, tiến hành xóa thư mục
installation/theo khuyến cáo bảo mật của Joomla.
6. Tổng kết bài học
-
Bạn đã thiết lập thành công môi trường Docker chuẩn chỉnh chạy PHP 8.2, Nginx và MySQL 8.
-
Cấu hình tường minh các PHP extensions cốt lõi mà Joomla 5 yêu cầu để tránh lỗi trong quá trình sử dụng.
-
Hoàn tất cài đặt mã nguồn Joomla sẵn sàng bước vào không gian quản trị.
Trong Bài học 3, chúng ta sẽ khám phá sâu vào giao diện Administrator Dashboard và cấu hình toàn cục (Global Configuration) để tối ưu hóa hệ thống từ bên trong.
All rights reserved