Chuyển tới nội dung chính

Cài Đặt Apache Web Server trên Linux

Giới Thiệu

Apache HTTP Server, thường được gọi đơn giản là Apache, là một trong những web server mã nguồn mở phổ biến nhất thế giới. Nó đóng vai trò quan trọng trong việc phân phối nội dung web, từ các trang HTML tĩnh đến các ứng dụng web động phức tạp. Apache nổi tiếng với độ tin cậy, tính linh hoạt và khả năng cấu hình mạnh mẽ, giúp nó trả thành lựa chọn hàng đầu cho nhiều quản trị viên hệ thống và nhà phát triển. Hướng dẫn này sẽ giúp bạn cài đặt và thiết lập Apache Web Server một cách nhanh chóng trên hệ điều hành Linux.

📋 Thời gian: 15 phút | Độ khó: Cơ bản

Yêu Cầu

Trước khi bắt đầu, hãy đảm bảo bạn có đủ các điều kiện tiên quyết sau:

  • Một máy chủ chạy hệ điều hành Linux (Ubuntu 20.04+, Debian 10+, hoặc CentOS 7+/RHEL 8+).
  • Quyền truy cập sudo trên máy chủ của bạn để thực hiện các lệnh quản trị.
  • Kết nối internet ổn định để tải xuống các gói phần mềm.
  • Một địa chỉ IP công cộng (hoặc truy cập cục bộ) để kiểm tra cài đặt.

Các Bước Thực Hiện

Bước 1: Cập nhật hệ thống

Luôn là một thực hành tốt để cập nhật danh sách gói và nâng cấp các gói hiện có lên phiên bản mới nhất trước khi cài đặt phần mềm mới. Điều này giúp đảm bảo bạn có các bản vá bảo mật mới nhất và tránh các xung đột phụ thuộc.

# Đối với hệ thống dựa trên Debian/Ubuntu:
sudo apt update # Cập nhật danh sách gói
sudo apt upgrade -y # Nâng cấp các gói đã cài đặt

# Đối với hệ thống dựa trên CentOS/RHEL:
sudo yum update -y # Cập nhật tất cả các gói đã cài đặt

✅ Hệ thống của bạn đã được cập nhật, sẵn sàng cho việc cài đặt Apache.

Bước 2: Cài đặt Apache Web Server

Sau khi hệ thống được cập nhật, bạn có thể tiến hành cài đặt Apache. Tên gói Apache khác nhau tùy thuộc vào hệ điều hành của bạn.

# Đối với hệ thống dựa trên Debian/Ubuntu (Apache được gọi là apache2):
sudo apt install apache2 -y

# Đối với hệ thống dựa trên CentOS/RHEL (Apache được gọi là httpd):
sudo yum install httpd -y

Sau khi cài đặt, Apache (hoặc httpd) sẽ tự động khởi động và được kích hoạt để khởi chạy cùng hệ thống.

Bước 3: Điều chỉnh tường lửa

Nếu bạn có tường lửa đang chạy (như ufw trên Ubuntu hoặc firewalld trên CentOS), bạn cần cho phép lưu lượng truy cập HTTP (cổng 80) và HTTPS (cổng 443) để web server có thể truy cập được từ bên ngoài.

Đối với hệ thống Debian/Ubuntu (sử dụng UFW):

Trước tiên, kiểm tra các cấu hình ứng dụng UFW có sẵn:

sudo ufw app list

Bạn sẽ thấy các cầu hình có sẵn cho Apache: Apache, Apache Full, Apache Secure.

  • Apache: Chỉ mở cổng 80 (HTTP).
  • Apache Full: Mở cả cổng 80 (HTTP) và 443 (HTTPS).
  • Apache Secure: Chỉ mở cổng 443 (HTTPS).

Chúng ta sẽ cho phép cả HTTP và HTTPS:

sudo ufw allow 'Apache Full'
sudo ufw enable # Nếu ufw chưa được bật
sudo ufw status

✅ Tường lửa đã được cấu hình để cho phép Apache hoạt động.

Đối với hệ thống CentOS/RHEL (sử dụng Firewalld):

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload # Tải lại cấu hình tường lửa để áp dụng thay đổi
sudo firewall-cmd --list-all # Kiểm tra các dịch vụ đã cho phép

✅ Firewalld đã được cấu hình.

Bước 4: Kiểm tra trạng thái Apache

Để xác minh rằng Apache đã được cài đặt đúng cách và đang chạy, bạn có thể kiểm tra trạng thái dịch vụ và truy cập web server từ trình duyệt.

# Đối với hệ thống Debian/Ubuntu:
sudo systemctl status apache2

# Đối với hệ thống CentOS/RHEL:
sudo systemctl status httpd

Bạn sẽ thấy một đầu ra cho biết dịch vụ đang active (running).

Để kiểm tra truy cập từ trình duyệt, mở trình duyệt web của bạn và nhập địa chỉ IP công cộng của máy chủ (hoặc localhost nếu bạn đang cài đặt trên máy cục bộ). Ví dụ: http://your_server_ip hoặc http://localhost

Bạn sẽ thấy trang "Apache2 Ubuntu Default Page" (trên Ubuntu) hoặc "Testing 123..." (trên CentOS). Điều này xác nhận rằng Apache đã được cài đặt và hoạt động thành công.

💡 Mẹo: Để tìm địa chỉ IP công cộng của máy chủ, bạn có thể sử dụng lệnh sau:

ip a
# hoặc
curl -4 icanhazip.com

Bước 5: Cấu hình cơ bản (Tùy chọn)

Các file cấu hình chính của Apache thường nằm ở các vị trí sau:

  • Debian/Ubuntu:
    • Thư mục gốc của web server: /var/www/html
    • File cấu hình chính: /etc/apache2/apache2.conf
    • Cấu hình Virtual Host: /etc/apache2/sites-available//etc/apache2/sites-enabled/
  • CentOS/RHEL:
    • Thư mục gốc của web server: /var/www/html
    • File cấu hình chính: /etc/httpd/conf/httpd.conf
    • Cấu hình Virtual Host: /etc/httpd/conf.d/

Bạn có thể chỉnh sửa file index.html mặc định trong thư mục gốc của web server để thay đổi nội dung trang web.

# Ví dụ trên Ubuntu:
sudo nano /var/www/html/index.html

Thay thế nội dung hiện có bằng một đoạn HTML đơn giản:

<!DOCTYPE html>
<html>
<head>
<title>Chào mừng đến với Apache!</title>
</head>
<body>
`<h1>`Xin chào từ Web Server Apache của tôi!</h1>
<p>Cài đặt thành công trên Linux!</p>
</body>
</html>

Lưu file và làm mới trình duyệt để xem thay đổi.

Troubleshooting

⚠️ Dưới đây là một số lỗi thường gặp và cách khắc phục:

  1. Apache không khởi động hoặc không chạy:

    • Nguyên nhân: Lỗi cấu hình, cổng đã được sử dụng, hoặc thiếu tài nguyên.
    • Cách xử lý: Kiểm tra log lỗi của Apache.
      # Đối với Debian/Ubuntu
      sudo journalctl -xeu apache2

      # Đối với CentOS/RHEL
      sudo journalctl -xeu httpd
      Log sẽ cung cấp thông tin chi tiết về nguyên nhân gây lỗi. Đảm bảo không có dịch vụ nào khác đang lắng nghe trên cổng 80 hoặc 443.
  2. Không thể truy cập trang web từ trình duyệt:

    • Nguyên nhần: Tường lửa chặn truy cập, địa chỉ IP sai, hoặc Apache chưa chạy.
    • Cách xử lý:
      • Kiểm tra lại trạng thái Apache (sudo systemctl status apache2/httpd).
      • Kiểm tra cấu hình tường lửa (Bước 3). Đảm bảo cổng 80 và 443 được mở.
      • Đảm bảo bạn đang sử dụng đúng địa chỉ IP công cộng của máy chủ.
  3. Lỗi "Forbidden" (403):

    • Nguyên nhân: Apache không có quyền đọc file hoặc thư mục, hoặc cấu hình quyền truy cập không đúng.
    • Cách xử lý:
      • Kiểm tra quyền của thư mục gốc web server (/var/www/html). Đảm bảo Apache (thường chạy dưới người dùng www-data trên Debian/Ubuntu hoặc apache trên CentOS) có quyền đọc và thực thi.
      sudo chown -R www-data:www-data /var/www/html # Ubuntu
      sudo chmod -R 755 /var/www/html
      • Kiểm tra cấu hình thư mục trong file apache2.conf hoặc httpd.conf để đảm bảo có lệnh AllowOverride All hoặc Require all granted.

Kết Luận

Bạn đã hoàn tất việc cài đặt Apache Web Server trên hệ thống Linux của mình. Giờ đây, bạn đã có một nền tảng vững chắc để triển khai các trang web và ứng dụng web.

💡 Best Practices:

  • Bảo mật: Luôn cập nhật Apache và hệ điều hành của bạn. Cấu hình SSL/TLS để mã hóa giao tiếp (HTTPS).
  • Virtual Hosts: Để chạy nhiều trang web trên cùng một máy chủ, hãy tìm hiểu về cấu hình Virtual Hosts của Apache.
  • Giám sát: Thường xuyên kiểm tra log của Apache (/var/log/apache2/ trên Ubuntu hoặc /var/log/httpd/ trên CentOS) để phát hiện sớm các vấn đề.
  • Tối ưu hiệu suất: Cân nhắc tinh chỉnh các module và cấu hình Apache để phù hợp với tải lượng truy cập của bạn.

Chúc mừng bạn đã thành công! Giờ đây bạn có thể bắt đầu xây dựng và triển khai các dự án web của mình.