0

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

  1. 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
    
    
  2. 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ục src/ của dự án.

  3. Mở trình duyệt và truy cập: http://localhost:8080

  4. 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).

  5. 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_).

  6. 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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí