- 1 1. Giới thiệu
- 2 2. Cài Đặt Ubuntu Và Thực Hiện Thiết Lập Ban Đầu
- 3 3. Cài Đặt Và Cấu Hình Apache
- 4 4. Cấu hình Virtual Hosts (Quản lý nhiều trang web)
- 5 5. Giới thiệu SSL/TLS (Kích hoạt HTTPS)
- 6 6. Nâng cao bảo mật máy chủ web
- 7 7. Tối ưu hóa hiệu suất
- 8 8. Khắc phục Sự cố
- 9 9. Tóm Tắt
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ị:
| Item | Minimum Requirements | Recommended Requirements |
|---|---|---|
| OS | Ubuntu 22.04 LTS | Ubuntu 22.04 LTS |
| CPU | 1GHz or higher | 2GHz or higher |
| Memory | 512MB | 2GB or higher |
| Storage | 10GB or more | 20GB or more |
| Network | Internet connection | High-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:
- 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
- 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)
- Khởi Động Lại Sau Khi Hoàn Thành Cài Đặt
- Đă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.
- 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.
- Đặ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).
- 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.
- 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.com và test.com.
Có hai loại virtual hosts:
- 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
- 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:
- Xác thực miền (thử thách HTTP-01)
- Cấp phát chứng chỉ SSL
- Cấu hình SSL tự động cho Apache
- 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 80 và 443 đượ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.


