Cách tạo máy chủ web Ubuntu an toàn và hiệu suất cao với Apache (Hướng dẫn toàn diện)

目次

1. Giới thiệu

Ubuntu Web Server Là Gì?

Máy chủ web là một hệ thống cung cấp các trang web qua internet. Các phần mềm máy chủ web phổ biến bao gồm Apache, Nginx, và LiteSpeed, nhưng lựa chọn được sử dụng rộng rãi nhất trên Ubuntu là Apache.
Ubuntu là nhẹ, ổn định và mã nguồn mở, làm cho nó phổ biến trong cá nhân và công ty. Nó đặc biệt phù hợp để vận hành môi trường LAMP (Linux, Apache, MySQL/MariaDB, PHP), cung cấp năng lượng cho nhiều trang web và ứng dụng.

Bài Viết Này Dành Cho Ai

Hướng dẫn này được thiết kế dành cho người mới bắt đầu xây dựng máy chủ web lần đầu tiên. Nó giải thích cách khởi chạy máy chủ web trên Ubuntu, cài đặt Apache, cấu hình máy chủ ảo và chứng chỉ SSL, cũng như thực hiện tối ưu hóa và tăng cường bảo mật.

Những Gì Bạn Sẽ Học

  • Cách xây dựng máy chủ web trên Ubuntu (cài đặt và cấu hình Apache)
  • Cách thiết lập máy chủ ảo và quản lý nhiều trang web
  • Cách cài đặt SSL miễn phí với Let’s Encrypt
  • Cách áp dụng tăng cường bảo mật và tối ưu hóa hiệu suất
  • Các bước khắc phục sự cố phổ biến và giải pháp

2. Cài Đặt Ubuntu Và Thực Hiện Thiết Lập Ban Đầu

Thông Số Hệ Thống Yêu Cầu

Để chạy Ubuntu như một máy chủ web, các thông số tối thiểu sau được khuyến nghị:

ItemMinimum RequirementsRecommended Requirements
OSUbuntu 22.04 LTSUbuntu 22.04 LTS
CPU1GHz or higher2GHz or higher
Memory512MB2GB or higher
Storage10GB or more20GB or more
NetworkInternet connectionHigh-speed connection recommended

Tải Xuống Và Cài Đặt Ubuntu

Ubuntu có thể được tải xuống từ trang web chính thức (https://ubuntu.com/download/server). Tải xuống tệp ISO và cài đặt nó trong một máy ảo như VirtualBox hoặc VMware, hoặc trên một máy chủ chuyên dụng hoặc VPS.

Các Bước Cài Đặt:

  1. Tạo phương tiện cài đặt
  • Ổ USB (sử dụng các công cụ như Rufus)
  • Gắn tệp ISO trong máy ảo
  1. Tuân Theo Trình Phù Thủy Cài Đặt
  • Chọn ngôn ngữ ưa thích của bạn
  • Xác minh kết nối mạng
  • Đặt tên người dùng và mật khẩu
  • Cài đặt máy chủ SSH (tùy chọn—bạn có thể cài đặt sau)
  1. Khởi Động Lại Sau Khi Hoàn Thành Cài Đặt
  2. Đăng Nhập Và Bắt Đầu Cấu Hình Ban Đầu

Thiết Lập Ban Đầu Cơ Bản

Sau khi cài đặt, thực hiện các bước thiết lập ban đầu sau.

  1. Cập Nhật Tất Cả Các Gói
    sudo apt update && sudo apt upgrade -y
    

→ Áp dụng các bản vá bảo mật và cập nhật các gói phần mềm.

  1. Đặt Múi Giờ
    sudo timedatectl set-timezone Asia/Tokyo
    

→ Đặt thời gian hệ thống thành Giờ Tiêu Chuẩn Nhật Bản (JST).

  1. Kích Hoạt Tường Lửa
    sudo ufw enable
    

→ Kích hoạt tường lửa để bảo vệ hệ thống khỏi truy cập trái phép.

  1. Cấu Hình SSH (cho quản lý từ xa)
  • Kiểm tra xem SSH có được kích hoạt không sudo systemctl status ssh
  • Nếu bị tắt, kích hoạt nó sudo systemctl enable --now ssh

Sau khi hoàn thành các bước này, máy chủ Ubuntu của bạn đã sẵn sàng để được thiết lập như một máy chủ web đầy đủ chức năng.

3. Cài Đặt Và Cấu Hình Apache

Apache Là Gì?

Apache (Apache HTTP Server) là một máy chủ web mã nguồn mở nổi tiếng với sự ổn định, khả năng mở rộng và các tính năng bảo mật mạnh mẽ. Khoảng 30% máy chủ trên toàn thế giới sử dụng Apache.

Các Tính Năng Chính:

  • Miễn phí và mã nguồn mở
  • Kiến trúc mô-đun để dễ dàng mở rộng
  • Hỗ trợ SSL/TLS cho cấu hình HTTPS
  • Máy chủ ảo để lưu trữ nhiều trang web

Cài Đặt Apache

Trên Ubuntu, Apache có thể được cài đặt dễ dàng bằng trình quản lý gói apt.

Cài Đặt Apache

Chạy các lệnh sau để cài đặt Apache:

sudo apt update
sudo apt install apache2 -y

Xác Minh Việc Cài Đặt

Sau khi cài đặt, kiểm tra phiên bản Apache:

apache2 -v

Ví dụ đầu ra:

Server version: Apache/2.4.52 (Ubuntu)
Server built:   2023-07-01T12:34:56

Nếu thông tin phiên bản xuất hiện, Apache đã được cài đặt đúng cách.

Khởi Động, Dừng Và Khởi Động Lại Apache

Apache được quản lý bằng lệnh systemctl.

Khởi Động Apache

sudo systemctl start apache2

Apache giờ đây sẽ bắt đầu chấp nhận các yêu cầu web.

Kích Hoạt Khởi Động Tự Động

sudo systemctl enable apache2

Kiểm tra trạng thái Apache

Sử dụng lệnh này để xác minh Apache có đang chạy hay không:

sudo systemctl status apache2

Ví dụ đầu ra:

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since ...

Khởi động lại hoặc Dừng Apache

Khởi động lại Apache sau khi thay đổi các cài đặt cấu hình:

sudo systemctl restart apache2

Để tạm thời dừng Apache:

sudo systemctl stop apache2

Xác minh hoạt động của Apache

Để xác nhận Apache đang chạy đúng cách, truy cập địa chỉ IP của máy chủ.

1. Kiểm tra địa chỉ IP của máy chủ của bạn

hostname -I

Hoặc kiểm tra IP bên ngoài:

curl ifconfig.me

2. Xác minh trong trình duyệt web

Nhập các dòng sau vào trình duyệt của bạn:

http://<your-server-ip>/

Đối với cấu hình cục bộ:

http://localhost/

Bạn sẽ thấy trang mặc định của Apache (/var/www/html/index.html).

Ví dụ trang mặc định:

Apache2 Ubuntu Default Page
It works!

Nếu thông báo này xuất hiện, Apache đang hoạt động đúng cách.

Cấu hình tường lửa

Ubuntu sử dụng UFW (Uncomplicated Firewall) để quản lý các quy tắc tường lửa. Sau khi cài đặt Apache, việc truy cập bên ngoài tới HTTP (cổng 80) và HTTPS (cổng 443) có thể vẫn bị chặn.

Cho phép Apache qua tường lửa

sudo ufw allow 'Apache'

Để cho phép HTTPS nữa:

sudo ufw allow 'Apache Full'

Kiểm tra trạng thái tường lửa

sudo ufw status

Ví dụ đầu ra:

Status: active

To                         Action      From
--                         ------      ----
Apache                     ALLOW       Anywhere
Apache (v6)                ALLOW       Anywhere (v6)

Nếu xuất hiện như vậy, lưu lượng Apache đã được cho phép qua tường lửa.

Tóm tắt

Cho đến nay, bạn đã cài đặt Apache trên Ubuntu và hoàn thành các bước thiết lập cần thiết. Các điểm chính đã được đề cập:

  • Cách cài đặt Apache
  • Cách khởi động và bật Apache
  • Cách xác minh hoạt động của Apache trong trình duyệt
  • Cách cấu hình các quy tắc tường lửa UFW
  • Tổng quan về các tệp cấu hình cơ bản của Apache

4. Cấu hình Virtual Hosts (Quản lý nhiều trang web)

Virtual Hosts là gì?

Virtual hosts cho phép bạn lưu trữ nhiều miền (hoặc miền phụ) trên một máy chủ Apache duy nhất. Ví dụ, một máy chủ có thể lưu trữ cả example.comtest.com.

Có hai loại virtual hosts:

  1. Virtual Hosts dựa trên tên
  • Nhiều trang web chia sẻ cùng một địa chỉ IP
  • Phương pháp phổ biến nhất
  1. Virtual Hosts dựa trên IP
  • Mỗi trang web sử dụng địa chỉ IP khác nhau
  • Yêu cầu nhiều giao diện mạng trên một máy chủ

Trong hầu hết các trường hợp, virtual hosts dựa trên tên được sử dụng.

Các bước cấu hình Virtual Hosts

1. Tạo các thư mục cần thiết

Tạo một thư mục riêng biệt cho mỗi trang web:

sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html

2. Thay đổi quyền sở hữu thư mục

Đảm bảo Apache có thể đọc các tệp bằng cách đặt chủ sở hữu là www-data:

sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chown -R www-data:www-data /var/www/test.com/public_html

3. Tạo các tệp HTML mẫu

Tạo một tệp index.html cơ bản để thử nghiệm:

echo "<h1>Welcome to example.com</h1>" | sudo tee /var/www/example.com/public_html/index.html
echo "<h1>Welcome to test.com</h1>" | sudo tee /var/www/test.com/public_html/index.html

4. Tạo các tệp cấu hình Virtual Host

Các tệp cấu hình virtual host được lưu trong thư mục /etc/apache2/sites-available/.

Cấu hình virtual host cho example.com

Tạo và chỉnh sửa tệp cấu hình bằng lệnh sau:

sudo nano /etc/apache2/sites-available/example.com.conf

Nội dung tệp cấu hình:

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html

    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>

Cấu hình máy chủ ảo cho test.com

sudo nano /etc/apache2/sites-available/test.com.conf

Thêm nội dung sau:

<VirtualHost *:80>
    ServerAdmin admin@test.com
    ServerName test.com
    ServerAlias www.test.com
    DocumentRoot /var/www/test.com/public_html

    <Directory /var/www/test.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/test.com_error.log
    CustomLog ${APACHE_LOG_DIR}/test.com_access.log combined
</VirtualHost>

5. Kích hoạt Máy chủ Ảo

Sau khi tạo các tệp cấu hình, kích hoạt máy chủ ảo bằng a2ensite:

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf

Kiểm tra cấu hình Apache

Kiểm tra lỗi cú pháp:

sudo apachectl configtest

Ví dụ đầu ra:

Syntax OK

Nếu không có lỗi, khởi động lại Apache:

sudo systemctl restart apache2

6. Xác minh Cục bộ (Chỉnh sửa Tệp hosts)

Để kiểm tra máy chủ ảo cục bộ, chỉnh sửa tệp hosts của PC.

sudo nano /etc/hosts

Thêm các dòng sau:

127.0.0.1 example.com
127.0.0.1 test.com

Lưu tệp, sau đó mở trình duyệt và truy cập:

http://example.com/

Bạn sẽ thấy “Welcome to example.com”.

Tương tự, truy cập:

http://test.com/

sẽ hiển thị “Welcome to test.com”.

7. Khắc phục Sự cố Máy chủ Ảo

Nếu máy chủ ảo không hoạt động đúng, kiểm tra những điều sau:

1. Kiểm tra nhật ký lỗi Apache

sudo tail -f /var/log/apache2/error.log

2. Xác nhận các tệp cấu hình đã được kích hoạt

ls /etc/apache2/sites-enabled/

Nếu các tệp .conf đúng được liệt kê, máy chủ ảo đang hoạt động.

3. Kiểm tra cài đặt cổng Apache

Xác minh rằng cổng 80 (HTTP) được cấu hình:

sudo nano /etc/apache2/ports.conf

Đảm bảo dòng sau tồn tại:

Listen 80

Tóm tắt

Phần này giải thích cách cấu hình máy chủ ảo trong Apache trên Ubuntu.
Những điểm chính:

  • Khái niệm và mục đích của máy chủ ảo
  • Tạo thư mục cho từng trang web
  • Tạo và kích hoạt tệp cấu hình máy chủ ảo
  • Phương pháp kiểm tra cục bộ sử dụng tệp hosts
  • Khắc phục các vấn đề phổ biến

5. Giới thiệu SSL/TLS (Kích hoạt HTTPS)

SSL/TLS là gì?

SSL (Secure Sockets Layer) và TLS (Transport Layer Security) là các công nghệ mã hóa được sử dụng để đảm bảo giao tiếp an toàn qua internet.

Lợi ích của việc Kích hoạt SSL/TLS

Mã hóa giao tiếp (giảm rủi ro dữ liệu bị chặn hoặc thay đổi)
Cải thiện thứ hạng SEO Google (các trang HTTPS được ưu tiên)
Ngăn chặn cảnh báo bảo mật trình duyệt (các trang HTTP hiển thị “Not Secure”)
Bảo vệ thông tin đăng nhập và giao dịch trực tuyến

Ngày nay, TLS (TLS 1.2 / 1.3) được khuyến nghị, và các phiên bản SSL cũ hơn (SSL 3.0 và trước đó) đã bị loại bỏ.

Lấy Chứng chỉ SSL Miễn phí với Let’s Encrypt

Let’s Encrypt là một Cơ quan Chứng nhận (CA) cung cấp chứng chỉ SSL miễn phí.
Sử dụng certbot, bạn có thể dễ dàng cấp chứng chỉ và cấu hình nó với Apache.

Cài đặt Client Let’s Encrypt (Certbot)

Cài đặt certbot, client chính thức của Let’s Encrypt:

sudo apt update
sudo apt install certbot python3-certbot-apache -y

Tự động hóa Cấu hình SSL Apache

Bạn có thể tự động cấu hình Apache bằng lệnh sau:

.

sudo certbot --apache -d example.com -d www.example.com

Lệnh này thực hiện:

  1. Xác thực miền (thử thách HTTP-01)
  2. Cấp phát chứng chỉ SSL
  3. Cấu hình SSL tự động cho Apache
  4. Chuyển hướng tùy chọn từ HTTP sang HTTPS

Xác minh hoạt động SSL

Truy cập URL sau để xác nhận HTTPS đã được bật:

https://example.com/

Nếu trình duyệt của bạn hiển thị biểu tượng ổ khóa, SSL đã được áp dụng thành công.

Cấu hình SSL thủ công cho Apache

Nếu bạn không muốn sử dụng certbot --apache, bạn có thể cấu hình SSL thủ công.

1. Bật mô-đun SSL của Apache

sudo a2enmod ssl
sudo systemctl restart apache2

2. Cấu hình Virtual Host SSL

Chỉnh sửa tệp cấu hình SSL /etc/apache2/sites-available/example.com-le-ssl.conf:

sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf

Ví dụ cấu hình:

<VirtualHost *:443>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>

3. Bật cấu hình SSL và khởi động lại Apache

sudo a2ensite example.com-le-ssl.conf
sudo systemctl restart apache2

Tự động gia hạn chứng chỉ SSL

Chứng chỉ Let’s Encrypt có hiệu lực trong 90 ngày. Để tránh việc gia hạn thủ công, hãy cấu hình cập nhật tự động.

1. Kiểm tra tự động gia hạn Certbot

sudo certbot renew --dry-run

2. Kiểm tra lịch gia hạn

Lịch tự động gia hạn của Certbot được lưu trong /etc/cron.d/certbot.

sudo systemctl list-timers | grep certbot

Khắc phục sự cố SSL

1. Chứng chỉ SSL không được áp dụng

Giải pháp: Khởi động lại Apache và kiểm tra cấu hình

sudo systemctl restart apache2
sudo apachectl configtest

2. Chứng chỉ đã hết hạn

sudo certbot renew --force-renewal

3. Lỗi xác thực Let’s Encrypt

Giải pháp: Kiểm tra quy tắc tường lửa

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

Tóm tắt

Phần này giải thích cách cài đặt và cấu hình SSL miễn phí bằng Let’s Encrypt.
Những điểm chính:

  • Cơ bản về SSL/TLS
  • Cấu hình Apache với Let’s Encrypt
  • Cấu hình SSL thủ công
  • Tự động gia hạn chứng chỉ
  • Khắc phục các vấn đề SSL

6. Nâng cao bảo mật máy chủ web

Cấu hình tường lửa (UFW)

Ubuntu sử dụng UFW (Uncomplicated Firewall) để chặn lưu lượng không cần thiết và bảo vệ máy chủ.

Kiểm tra cài đặt tường lửa hiện tại

sudo ufw status

Chỉ cho phép các cổng cần thiết

Mặc định, chặn tất cả lưu lượng vào và chỉ cho phép các cổng cần thiết:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Mở các cổng cần thiết:

  • SSH (Cổng 22)
    sudo ufw allow 22/tcp
    
  • HTTP (Cổng 80)
    sudo ufw allow 80/tcp
    
  • HTTPS (Cổng 443)
    sudo ufw allow 443/tcp
    

Bật tường lửa

sudo ufw enable

Tăng cường bảo mật SSH

SSH là mục tiêu phổ biến của các cuộc tấn công brute-force nếu để mặc định. Tăng cường bảo mật bằng cách áp dụng các cấu hình phù hợp.

Thay đổi cổng SSH

sudo nano /etc/ssh/sshd_config

Sửa các dòng này:

Port 2222  # Change from 22 to any unused port
PermitRootLogin no  # Disable root login
PasswordAuthentication no  # Disable password login (use SSH keys only)

Khởi động lại SSH:

sudo systemctl restart ssh

Cài đặt Fail2Ban

Fail2Ban bảo vệ máy chủ của bạn bằng cách tạm thời cấm các địa chỉ IP cố gắng đăng nhập SSH lặp lại thất bại.

sudo apt install fail2ban -y

Chỉnh sửa cấu hình:

sudo nano /etc/fail2ban/jail.local

Thêm những nội dung sau:

[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 600

Kích hoạt Fail2Ban:

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

Củng cố bảo mật Apache

Ẩn thông tin phiên bản Apache

sudo nano /etc/apache2/conf-available/security.conf

Thay đổi các thiết lập sau:

ServerTokens Prod
ServerSignature Off

Áp dụng các thay đổi:

sudo systemctl restart apache2

Vô hiệu hóa liệt kê thư mục

sudo nano /etc/apache2/apache2.conf

Xác định khối thư mục và cập nhật:

<Directory /var/www/>
    Options -Indexes +FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Khởi động lại Apache:

sudo systemctl restart apache2

Vô hiệu hóa các mô-đun Apache không cần thiết

sudo a2dismod autoindex
sudo a2dismod status
sudo systemctl restart apache2

Thêm tiêu đề bảo mật

Tiêu đề bảo mật bảo vệ trang web của bạn khỏi các cuộc tấn công như tấn công chéo trang web và clickjacking.

Kích hoạt mod_headers

sudo a2enmod headers
sudo systemctl restart apache2

Thêm tiêu đề bảo mật

sudo nano /etc/apache2/sites-available/example.com.conf

Thêm những nội dung sau bên trong khối <VirtualHost>:

<IfModule mod_headers.c>
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-XSS-Protection "1; mode=block"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>

Khởi động lại Apache:

sudo systemctl restart apache2

Khắc phục sự cố

Kiểm tra thiết lập tường lửa

sudo ufw status

Kiểm tra cấu hình Apache để tìm lỗi

sudo apachectl configtest

Ví dụ đầu ra:

Syntax OK

Không thể kết nối qua SSH sau khi thay đổi cổng

Nếu SSH không kết nối sau khi thay đổi cổng, hãy chỉ định cổng mới khi kết nối:

ssh -p 2222 user@server-ip

Tóm tắt

Phần này giải thích cách tăng cường bảo mật cho máy chủ web của bạn.
Các điểm chính:

  • Cấu hình quy tắc tường lửa UFW
  • Bảo mật SSH (thay đổi cổng, Fail2Ban)
  • Củng cố bảo mật Apache (ẩn thông tin phiên bản, vô hiệu hóa liệt kê)
  • Thêm tiêu đề bảo mật

7. Tối ưu hóa hiệu suất

Điều chỉnh Apache

Cấu hình Apache mặc định có thể không mang lại hiệu suất tối ưu. Bằng cách áp dụng các điều chỉnh sau, bạn có thể đạt được hiệu suất cao hơn đáng kể.

Tối ưu hóa MPM (Multi-Processing Module)

MPM (Multi-Processing Module) quyết định cách Apache xử lý các yêu cầu.

Kiểm tra MPM hiện tại:

apachectl -M | grep mpm

Ví dụ đầu ra:

mpm_prefork_module (shared)

Nếu mpm_prefork_module được kích hoạt, việc chuyển sang mpm_event có thể cải thiện hiệu suất.

Thay đổi MPM:

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2

Kích hoạt KeepAlive

KeepAlive (kết nối liên tục) cho phép các client tái sử dụng các kết nối hiện có, giảm chi phí yêu cầu.

Chỉnh sửa tệp cấu hình:

sudo nano /etc/apache2/apache2.conf

Xác nhận các thiết lập sau:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

Khởi động lại Apache:

sudo systemctl restart apache2

Sử dụng bộ đệm

Bằng cách sử dụng bộ đệm trình duyệt và bộ đệm phía máy chủ, bạn có thể giảm các yêu cầu không cần thiết và cải thiện đáng kể tốc độ phản hồi.

Kích hoạt mod_expires (Bộ đệm trình duyệt)

sudo a2enmod expires
sudo systemctl restart apache2

Thêm những nội dung sau vào /etc/apache2/sites-available/example.com.conf:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 month"
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
</IfModule>

Khởi động lại Apache:

sudo systemctl restart apache2

Bật mod_cache (Bộ nhớ đệm Máy chủ)

sudo a2enmod cache cache_disk
sudo systemctl restart apache2

Thêm nội dung sau vào /etc/apache2/sites-available/example.com.conf:

<IfModule mod_cache.c>
    CacheEnable disk /
    CacheRoot /var/cache/apache2/mod_cache_disk
    CacheDefaultExpire 86400
</IfModule>

Khởi động lại Apache:

sudo systemctl restart apache2

Bật Nén

Sử dụng mod_deflate để nén dữ liệu trang web và giảm kích thước truyền.

Bật mod_deflate

sudo a2enmod deflate
sudo systemctl restart apache2

Thêm nội dung sau vào /etc/apache2/sites-available/example.com.conf:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

Khởi động lại Apache:

sudo systemctl restart apache2

Giới hạn Tài nguyên

Để chuẩn bị cho lưu lượng truy cập lớn hoặc truy cập độc hại tiềm năng, đặt giới hạn tài nguyên sử dụng các mô-đun Apache.

Bật mod_ratelimit

sudo a2enmod ratelimit
sudo systemctl restart apache2

Thêm nội dung sau vào /etc/apache2/sites-available/example.com.conf:

<Location />
    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 200
</Location>

Khởi động lại Apache:

sudo systemctl restart apache2

Khắc phục Sự cố Hiệu suất

Kiểm tra Nhật ký Lỗi Apache

sudo tail -f /var/log/apache2/error.log

Kiểm tra Trạng thái Tải Apache

sudo apachectl status

Kiểm tra Sử dụng CPU và Bộ nhớ

top

hoặc

htop

Nếu htop chưa được cài đặt:

sudo apt install htop

Tóm tắt

Phần này giải thích cách tối ưu hóa hiệu suất máy chủ web.
Những điểm chính:

  • Tối ưu hóa Apache (tối ưu hóa MPM và cài đặt KeepAlive)
  • Sử dụng bộ đệm (bộ đệm trình duyệt và bộ đệm máy chủ)
  • Nén dữ liệu với mod_deflate
  • Kiểm soát tài nguyên sử dụng mod_ratelimit

8. Khắc phục Sự cố

Apache Không Khởi động

Nếu Apache không khởi động, lỗi cấu hình là nguyên nhân phổ biến nhất.

1. Kiểm tra Thông báo Lỗi

sudo systemctl status apache2

2. Kiểm tra Cấu hình

sudo apachectl configtest

Nếu đầu ra bao gồm “Syntax error”, xác minh đường dẫn hoặc cài đặt được liệt kê trong thông báo lỗi.

3. Khởi động lại Apache

sudo systemctl restart apache2

Không Thể Truy cập Máy chủ

Nếu không thể truy cập máy chủ trong trình duyệt, xác minh các mục sau.

1. Kiểm tra Cài đặt Tường lửa

sudo ufw status

Đảm bảo rằng cổng 80443 được phép.

2. Kiểm tra Trạng thái Apache

sudo systemctl status apache2

3. Kiểm tra Địa chỉ IP Máy chủ

hostname -I

Máy chủ Ảo Không Hoạt động

Nếu máy chủ ảo không hoạt động như mong đợi, kiểm tra lại cấu hình.

1. Xác nhận Các Tệp Máy chủ Ảo Đã Được Bật

ls /etc/apache2/sites-enabled/

Nếu tệp .conf của bạn không được liệt kê, bật nó:

sudo a2ensite example.com.conf
sudo systemctl restart apache2

2. Kiểm tra Giải quyết Tên Máy chủ

Nếu kiểm tra cục bộ, đảm bảo tệp /etc/hosts chứa:

127.0.0.1 example.com

3. Kiểm tra Đường dẫn DocumentRoot

Đường dẫn không đúng thường gây ra vấn đề máy chủ ảo.

DocumentRoot /var/www/example.com/public_html

Vấn đề Chứng chỉ SSL

1. HTTPS Không Hoạt động

Xác nhận SSL đã được bật:

sudo apachectl -M | grep ssl

Bật nếu cần thiết:

sudo a2enmod ssl
sudo systemctl restart apache2

2. Chứng chỉ Đã Hết Hạn

sudo certbot renew

3. Xác Thực Let’s Encrypt Thất Bại

Xác thực HTTP yêu cầu cổng 80 phải mở.

sudo ufw allow 80/tcp
sudo systemctl restart apache2

Hiệu Suất Trang Web Chậm

1. Kiểm Tra Tải Server

top

2. Xem Xét Nhật Ký Apache

sudo tail -f /var/log/apache2/access.log

3. Xác Nhận Cài Đặt Bộ Đệm

Đảm bảo mod_expires, mod_cache, và mod_deflate được bật.

Lỗi Quyền Truy Cập (403 Forbidden)

Lỗi này thường chỉ ra quyền file hoặc thư mục không đúng.

1. Kiểm Tra Quyền Sở Hữu Thư Mục

sudo chown -R www-data:www-data /var/www/example.com

2. Kiểm Tra Quyền Thư Mục

sudo chmod -R 755 /var/www/example.com

Giám Sát Nhật Ký Lỗi

Luôn giám sát nhật ký lỗi trong quá trình khắc phục sự cố:

sudo tail -f /var/log/apache2/error.log

Tóm Tắt

Phần này cung cấp các phương pháp khắc phục sự cố phổ biến với máy chủ web Ubuntu của bạn.
Các điểm chính:

  • Lỗi khởi động Apache và kiểm tra cấu hình
  • Vấn đề liên quan đến tường lửa và mạng
  • Vấn đề cấu hình máy chủ ảo
  • Lỗi chứng chỉ SSL và gia hạn
  • Khắc phục sự cố hiệu suất và quyền truy cập

9. Tóm Tắt

Trong bài viết này, chúng tôi đã giải thích cách xây dựng môi trường máy chủ web hoàn chỉnh trên Ubuntu sử dụng Apache, cùng với các cải tiến bảo mật, tối ưu hóa hiệu suất và kỹ thuật khắc phục sự cố.

Bằng cách làm theo hướng dẫn này, bạn có thể vận hành một máy chủ web ổn định, an toàn và hiệu suất cao phù hợp cho cả dự án cá nhân và ứng dụng cấp doanh nghiệp.

✔ Các Điểm Chính Được Đề Cập Trong Hướng Dẫn Này

  • Cài đặt Ubuntu và thực hiện cấu hình hệ thống ban đầu
  • Cài đặt và cấu hình Apache
  • Thiết lập máy chủ ảo để quản lý nhiều trang web
  • Bật HTTPS sử dụng chứng chỉ SSL miễn phí từ Let’s Encrypt
  • Tăng cường bảo mật server (UFW, củng cố SSH, cài đặt Apache)
  • Cải thiện hiệu suất (bộ đệm, nén, điều chỉnh MPM)
  • Khắc phục sự cố phổ biến trong quá trình vận hành server

✔ Những Gì Bạn Có Thể Đạt Được Sau Khi Hoàn Thành Hướng Dẫn Này

  • Lưu trữ nhiều trang web trên một máy chủ Ubuntu duy nhất
  • Đảm bảo giao tiếp an toàn sử dụng SSL/TLS hiện đại
  • Cải thiện tốc độ và độ tin cậy của trang web sử dụng bộ đệm và nén
  • Chẩn đoán và giải quyết vấn đề nhanh chóng sử dụng nhật ký Apache và công cụ hệ thống

✔ Các Bước Tiếp Theo Được Khuyến Nghị

  • Cài đặt PHP và MySQL/MariaDB để xây dựng môi trường LAMP đầy đủ
  • Triển khai WordPress hoặc một CMS khác
  • Thực hiện giải pháp sao lưu tự động
  • Xem xét sử dụng dịch vụ đám mây (AWS, GCP, Azure, v.v.)

Với cấu hình và bảo trì đúng cách, máy chủ web Ubuntu có thể mang lại sự ổn định lâu dài và hiệu suất vượt trội.
Chúng tôi hy vọng hướng dẫn này giúp bạn xây dựng môi trường server đáng tin cậy và an toàn.