Hướng dẫn cài đặt LAMP Stack, PhpMyAdmin và cấu hình Debug PHP với Visual Studio Code trên Ubuntu

Việc thiết lập một môi trường lập trình web cục bộ (localhost) trên Ubuntu Linux đôi khi khiến nhiều bạn mới bắt đầu cảm thấy bối rối vì cơ chế phân quyền chặt chẽ của Linux cũng như các bước cấu hình Virtual Host hay công cụ debug.

Bài viết này sẽ hướng dẫn bạn từng bước cài đặt trọn bộ LAMP Stack (Apache, MySQL, PHP), tích hợp PhpMyAdmin và thiết lập môi trường gỡ lỗi (Debug) PHP bằng Visual Studio Code thông qua Xdebug.

Bạn cũng có thể xem clip hướng dẫn trong bài viết:

Lưu ý: Hướng dẫn này tối ưu cho máy phát triển cá nhân chạy nội bộ (localhost), không phù hợp dùng trực tiếp để triển khai server thực tế (production).

1. Chuẩn bị thư mục Web gốc (Web Root)

Linux phân quyền thư mục rất nghiêm ngặt. Để thuận tiện cho việc lập trình, giúp bạn có thể tạo, sửa, xóa file mà không phải liên tục dùng quyền sudo hay gõ lệnh, chúng ta nên đưa thư mục web root dự án về bên dưới thư mục Home.

Giả sử đường dẫn thư mục web root của bạn là:

~/Projects/www   (cụ thể: /home/<username>/Projects/www)

Bạn có thể tạo trước 2 file mẫu trong thư mục này để kiểm tra:

  • test.html
  • test.php (chứa đoạn mã đơn giản: <?php echo "My first PHP script!"; ?>)

2. Cài đặt và cấu hình Apache Web Server

Bước 2.1: Cài đặt Apache

Mở Terminal và chạy các lệnh:

# Cập nhật danh sách gói
sudo apt update

# Cài đặt Apache2
sudo apt install apache2

Kích hoạt để Apache tự động khởi động cùng hệ điều hành:

sudo systemctl enable --now apache2

Kiểm tra trạng thái hoạt động:

sudo systemctl status apache2

(Bấm phím q để thoát màn hình xem trạng thái).

Truy cập http://localhost trên trình duyệt, nếu xuất hiện trang Apache2 Default Page là bạn đã cài đặt thành công.

Bước 2.2: Phân quyền truy cập thư mục

Apache mặc định chạy dưới quyền của user www-data. Để Apache có thể đọc và chạy file trong thư mục cá nhân của bạn mà không bị dính lỗi 403 Forbidden:

  • Các thư mục cha dẫn đến thư mục web cần quyền thực thi (711) để Apache duyệt qua.
  • Thư mục web (www) cần quyền đọc và thực thi (755).
# Thay thế <username> bằng tên user của bạn
chmod 711 /home/<username>
chmod 711 /home/<username>/Projects
chmod 755 /home/<username>/Projects/www

Bước 2.3: Tạo cấu hình Virtual Host mới

Tắt Virtual Host mặc định và trỏ Apache về thư mục web cá nhân:

sudo nano /etc/apache2/sites-available/www.conf

Dán nội dung cấu hình sau vào file:

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /home/<username>/Projects/www

    <Directory /home/<username>/Projects/www>
        Options FollowSymLinks Indexes
        AllowOverride All
        Require ip 127.0.0.1 ::1
        DirectoryIndex index.php index.html test.php test.html
    </Directory>
</VirtualHost>

Giải thích nhanh:

  • Options FollowSymLinks Indexes: Hỗ trợ liên kết mềm (symlink) và cho phép hiển thị danh sách thư mục khi chưa có file chỉ mục.
  • AllowOverride All: Cho phép đọc file cấu hình .htaccess (phục vụ rewrite URL sau này).
  • Require ip 127.0.0.1 ::1: Chỉ cho phép máy nội bộ truy cập.
  • DirectoryIndex: Thứ tự các file ưu tiên tải trước khi truy cập thư mục.

Lưu file bằng tổ hợp phím Ctrl + O > Enter, sau đó bấm Ctrl + X để thoát.

Bước 2.4: Bật cấu hình và nạp lại Apache

# Tắt site mặc định
sudo a2dissite 000-default.conf

# Bật site mới
sudo a2ensite www.conf

# Bật module Rewrite và Directory Index (nếu cần)
sudo a2enmod dir rewrite

# Kiểm tra cú pháp cấu hình
sudo apache2ctl configtest

# Nạp lại cấu hình Apache
sudo systemctl reload apache2

Bây giờ khi truy cập lại http://localhost, bạn sẽ thấy danh sách thư mục hoặc file test.html đã được mở thành công.

File log mặc định nằm sâu trong /var/log/apache2. Bạn có thể tạo đường dẫn mềm (Symlink) vào ngay thư mục làm việc để tiện theo dõi lỗi:

ln -s /var/log/apache2 ~/Projects/www-logs

Nếu muốn tài khoản cá nhân có toàn quyền mở trực tiếp các file log mà không cần quyền root:

sudo usermod -aG adm "$USER"

(Sau lệnh này, bạn cần đăng xuất và đăng nhập lại hệ thống để cập nhật nhóm quyền).

4. Cài đặt PHP và các Extension phổ biến

Bước 4.1: Cài đặt PHP cơ bản

sudo apt install php libapache2-mod-php

Kiểm tra bằng cách mở http://localhost/test.php trên trình duyệt.

Bước 4.2: Cài đặt các thư viện (Extension) mở rộng

Để phục vụ tốt cho các CMS như WordPress hoặc làm việc với CSDL và API, bạn nên cài thêm các extension sau:

sudo apt install php-mysql php-mbstring php-cli php-curl \
php-gd php-xml php-zip php-intl
  • php-mysql: Kết nối hệ cơ sở dữ liệu MySQL / MariaDB.
  • php-mbstring: Xử lý chuỗi UTF-8, tiếng Việt có dấu.
  • php-cli: Chạy script PHP từ dòng lệnh và Composer.
  • php-curl: Gửi/nhận request HTTP/HTTPS qua API.
  • php-gd: Xử lý đồ họa, tạo ảnh thu nhỏ (thumbnail).
  • php-xml: Đọc và xử lý tài liệu cấu trúc XML/RSS.
  • php-zip: Giải nén file .zip (cần khi cài plugin/theme).
  • php-intl: Xử lý bản địa hóa thời gian, tiền tệ.

5. Cài đặt và cấu hình CSDL MySQL

Bước 5.1: Cài đặt MySQL Server

sudo apt install mysql-server

# Kích hoạt chạy cùng hệ thống
sudo systemctl enable --now mysql

# Kiểm tra trạng thái
sudo systemctl status mysql

Khởi động lại Apache để nhận đầy đủ module:

sudo systemctl restart apache2

Bước 5.2: Tạo User quản trị riêng cho MySQL

Không nên dùng trực tiếp tài khoản root cho các ứng dụng web. Hãy tạo một user riêng (ví dụ: admin):

sudo mysql

Trong giao diện mysql>, thực thi lần lượt:

CREATE USER 'admin'@'localhost' IDENTIFIED BY '12345';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

6. Cài đặt PhpMyAdmin

Cài đặt công cụ quản trị CSDL trực quan trên nền web:

sudo apt install phpmyadmin

Trong quá trình cài đặt, hệ thống sẽ hiện hộp thoại cấu hình:

  1. Web server: Dùng phím Space (khoảng trắng) để đánh dấu chọn [*] apache2, sau đó bấm Tab chuyển sang Ok và nhấn Enter.
  2. Cấu hình CSDL (dbconfig-common): Chọn Yes, nhập mật khẩu nội bộ hoặc để trống nhấn Enter để hệ thống tự tạo.

Sau khi cài xong, truy cập: http://localhost/phpmyadmin và đăng nhập bằng tài khoản admin / mật khẩu 12345 đã tạo ở bước trước.

(Nếu gặp lỗi không mở được trang phpmyadmin do lúc cài quên chọn Apache, bạn có thể liên kết cấu hình thủ công bằng lệnh: sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf && sudo a2enconf phpmyadmin && sudo systemctl restart apache2).

7. Cấu hình Debug PHP trên Visual Studio Code (Xdebug)

Bước 7.1: Cài đặt Extension PHP Debug

  1. Mở Visual Studio Code.
  2. Vào mục Extensions (Ctrl + Shift + X), tìm kiếm và cài đặt plugin PHP Debug (của tác giả xdebug).

Bước 7.2: Biên dịch và cài đặt Xdebug

  1. Trong file test.php, thêm lệnh phpinfo(); rồi chạy trên trình duyệt:<?php phpinfo(); ?>
  2. Nhấn Ctrl + A rồi Ctrl + C để copy toàn bộ nội dung hiển thị của trang phpinfo().
  3. Mở trang Xdebug Installation Wizard, dán toàn bộ nội dung vừa copy vào ô text và chọn Analyse my phpinfo() output.
  4. Trang web sẽ phân tích chính xác phiên bản PHP của bạn và đưa ra hướng dẫn biên dịch cụ thể:
  • Cài gói phụ trợ biên dịch:sudo apt-get install php-dev autoconf automake
  • Tải tệp mã nguồn Xdebug theo link hướng dẫn, giải nén và di chuyển vào thư mục:tar -xvzf xdebug-x.x.x.tgz cd xdebug-x.x.x
  • Tiến hành biên dịch:phpize ./configure make
  • Copy module .so vào thư mục extension của PHP (theo đúng đường dẫn trang wizard hướng dẫn, có kèm sudo):sudo cp modules/xdebug.so /usr/lib/php/<API-NO>/

Bước 7.3: Kích hoạt Xdebug trong cấu hình PHP

Tạo file cấu hình Xdebug cho Apache và CLI:

# Đối với Apache
sudo nano /etc/php/<version>/apache2/conf.d/99-xdebug.ini

# Đối với CLI
sudo nano /etc/php/<version>/cli/conf.d/99-xdebug.ini

Thêm nội dung cấu hình sau vào cả hai file:

zend_extension = xdebug
xdebug.mode = debug,develop
xdebug.start_with_request = yes
xdebug.client_port = 9003
xdebug.client_host = 127.0.0.1

Khởi động lại Apache để áp dụng thay đổi:

sudo systemctl restart apache2

Bước 7.4: Thực hiện Gỡ lỗi (Debug) trong VS Code

  1. Trên VS Code, mở thư mục dự án ~/Projects/www.
  2. Mở tab Run and Debug (Ctrl + Shift + D) > Nhấp vào create a launch.json file > Chọn môi trường PHP. File cấu hình tự sinh mặc định đã lắng nghe cổng 9003.
  3. Mở file test.php, đặt một vài điểm dừng (Breakpoint) tại các dòng mã bằng cách click chuột vào lề trái cạnh số dòng.
  4. Bấm nút Play (Listen for Xdebug) trên thanh công cụ gỡ lỗi.
  5. Quay lại trình duyệt và tải lại trang http://localhost/test.php. Trình duyệt sẽ dừng lại và VS Code sẽ bắt đúng dòng breakpoint, cho phép bạn duyệt từng dòng lệnh (Step Over, Step Into) cũng như theo dõi giá trị biến trong bảng Variables.

Chúc bạn có một môi trường lập trình PHP mượt mà và năng suất trên Ubuntu Linux!

Bình luận