Apache HTTP Server là máy chủ web hàng đầu thế giới, được ưa chuộng nhờ khả năng ổn định và tính linh hoạt vượt trội. Nó hỗ trợ tải động các module mở rộng, cho phép tích hợp các tính năng mới một cách dễ dàng, đồng thời xử lý đa dạng định dạng media và tương tác mượt mà với nhiều phần mềm, công nghệ phổ biến trong ngành IT. Sự kết hợp của những tính năng này giúp Apache trở thành nền tảng lý tưởng cho cả các trang web cá nhân lẫn các ứng dụng doanh nghiệp quy mô lớn, đáp ứng được nhu cầu vận hành và mở rộng linh hoạt trong môi trường mạng hiện đại.
Sau đây, DataOnline sẽ hướng dẫn chi tiết cách cài đặt Apache HTTP Server trên máy chủ Ubuntu 18.04. Hướng dẫn không chỉ bao gồm các bước cài đặt cơ bản mà còn cung cấp thông tin toàn diện về cấu trúc file và thư mục quan trọng của Apache. Điều này sẽ giúp bạn hiểu rõ hơn về cách thức hoạt động của máy chủ web, từ đó tối ưu hóa quá trình quản trị, bảo trì và nâng cao hiệu suất hệ thống. Nhờ vào các kiến thức và kinh nghiệm được chia sẻ trong bài viết, bạn có thể tự tin triển khai và vận hành Apache một cách an toàn, hiệu quả, đáp ứng mọi yêu cầu khắt khe trong môi trường doanh nghiệp hiện nay.
Yêu cầu
Trước khi bắt đầu bài hướng dẫn, bạn cần đảm bảo rằng, bạn đã có một tài khoản người dùng thường (không phải root) với quyền sudo được cấu hình trên máy chủ. Ngoài ra, bạn cần kích hoạt một firewall cơ bản để chặn các cổng không cần thiết. Bạn có thể tham khảo bài hướng dẫn “Thiết Lập Máy Chủ Ban Đầu với Ubuntu 18.04” của DataOnline để biết cách cấu hình tài khoản người dùng và thiết lập firewall.
Khi đã tạo xong tài khoản, hãy đăng nhập bằng tài khoản không phải root để bắt đầu.
Bước 1 – Cài đặt Apache
Apache có sẵn trong kho phần mềm mặc định của Ubuntu, do đó bạn có thể cài đặt nó bằng các công cụ quản lý gói thông thường.
Bắt đầu bằng cách cập nhật chỉ mục gói cục bộ để phản ánh những thay đổi mới nhất:
sudo apt update
Sau đó, cài đặt gói apache2
:
sudo apt install apache2
Sau khi xác nhận quá trình cài đặt, apt sẽ cài đặt Apache cùng với tất cả các phụ thuộc cần thiết.
Bước 2 – Điều chỉnh Firewall
Trước khi kiểm tra Apache, cần phải điều chỉnh cài đặt firewall để cho phép truy cập từ bên ngoài đến các cổng web mặc định. Nếu bạn đã làm theo hướng dẫn trong phần yêu cầu, bạn sẽ có một firewall UFW được cấu hình để hạn chế truy cập vào máy chủ.
Trong quá trình cài đặt, Apache tự động đăng ký với UFW để cung cấp một số hồ sơ ứng dụng có thể được sử dụng để bật hoặc tắt quyền truy cập đến Apache qua firewall.
Liệt kê các hồ sơ ứng dụng của UFW bằng cách chạy lệnh sau:
sudo ufw app list
Lệnh này sẽ trả về danh sách các hồ sơ ứng dụng:
output
Available applications: Apache Apache Full Apache Secure OpenSSH
Danh sách này cho thấy có ba hồ sơ dành cho Apache:
Apache: Hồ sơ này mở chỉ cổng 80 (lưu lượng web thông thường, không mã hoá).
Apache Full: Hồ sơ này mở cả cổng 80 (lưu lượng web thông thường) và cổng 443 (lưu lượng mã hoá TLS/SSL).
Apache Secure: Hồ sơ này mở chỉ cổng 443 (lưu lượng mã hoá TLS/SSL).
Vì bạn chưa cấu hình SSL cho máy chủ trong bài hướng dẫn này, bạn chỉ cần cho phép lưu lượng trên cổng 80:
sudo ufw allow 'Apache'
Xác minh thay đổi bằng cách kiểm tra trạng thái:
sudo ufw status
Kết quả đầu ra sẽ hiển thị lưu lượng HTTP được cho phép, ví dụ:
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)
Hồ sơ Apache đã được kích hoạt cho phép truy cập đến máy chủ web.
Bước 3 – Kiểm tra máy chủ Web
Khi quá trình cài đặt kết thúc, Ubuntu 18.04 tự động khởi động Apache. Máy chủ web nên đang hoạt động.
Kiểm tra trạng thái dịch vụ Apache với systemd:
sudo systemctl status apache2
Ví dụ đầu ra:
output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Tue 2021-09-28 16:52:56 UTC; 1min 14s ago Main PID: 9409 (apache2) Tasks: 55 (limit: 4915) CGroup: /system.slice/apache2.service ├─9409 /usr/sbin/apache2 -k start ├─9410 /usr/sbin/apache2 -k start └─9411 /usr/sbin/apache2 -k start
Thông báo trên chứng tỏ rằng dịch vụ đã khởi động thành công. Tuy nhiên, cách tốt nhất để xác nhận là yêu cầu một trang từ Apache.
Bạn có thể truy cập trang landing mặc định của Apache để xác nhận rằng phần mềm đang chạy chính xác thông qua địa chỉ IP của máy chủ. Nếu bạn không biết địa chỉ IP của máy chủ, có thể lấy thông qua một vài cách từ dòng lệnh:
Chạy lệnh sau để lấy địa chỉ IP:
hostname -I
Lệnh này sẽ trả về một vài địa chỉ được phân tách bởi khoảng trắng. Bạn có thể thử từng địa chỉ trong trình duyệt.
Hoặc sử dụng lệnh sau để lấy địa chỉ IP công cộng:
curl -4 icanhazip.com
Khi đã có địa chỉ IP của máy chủ, hãy nhập nó vào thanh địa chỉ của trình duyệt:
http://your_server_ip
Bạn sẽ nhận được trang web mặc định của Apache trên Ubuntu 18.04, chứng tỏ rằng Apache đang hoạt động đúng cách. Trang web này cũng cung cấp thông tin cơ bản về các file và vị trí thư mục quan trọng của Apache.
Bước 4 – Quản lý quy trình Apache
Khi máy chủ web của bạn đã hoạt động, hãy cùng xem qua một số lệnh quản lý cơ bản.
Để dừng máy chủ web:
sudo systemctl stop apache2
Để khởi động máy chủ khi nó đang dừng:
sudo systemctl start apache2
Để dừng và sau đó khởi động lại dịch vụ:
sudo systemctl restart apache2
Nếu bạn chỉ cần thay đổi cấu hình, Apache có thể tải lại mà không mất kết nối. Thực hiện:
sudo systemctl reload apache2
Theo mặc định, Apache được cấu hình tự động khởi động khi máy chủ bật. Nếu bạn không muốn điều này, có thể vô hiệu hoá:
sudo systemctl disable apache2
Ngược lại, để kích hoạt hoặc kích hoạt lại dịch vụ khi khởi động:
sudo systemctl enable apache2
Apache bây giờ sẽ tự động khởi động mỗi khi máy chủ bật.
Bước 5 – Thiết lập Virtual Hosts (Khuyến nghị)
Khi sử dụng máy chủ web Apache, bạn có thể sử dụng virtual hosts (tương tự như server blocks trong Nginx) để đóng gói chi tiết cấu hình và host nhiều tên miền trên một máy chủ duy nhất. Trong ví dụ này, chúng ta sẽ thiết lập một tên miền có tên your_domain, nhưng bạn nên thay thế nó bằng tên miền của riêng bạn. Để tìm hiểu thêm về cách thiết lập tên miền với DataOnline, hãy đọc bài giới thiệu về DataOnline DNS.
Apache trên Ubuntu 18.04 được kích hoạt sẵn một server block mặc định, được cấu hình để phục vụ các tài liệu từ thư mục /var/www/html
. Mặc dù điều này hoạt động tốt đối với một trang web đơn lẻ, nhưng nếu bạn host nhiều trang, cách cấu hình này có thể trở nên khó quản lý. Thay vì sửa đổi /var/www/html
, hãy tạo một cấu trúc thư mục mới trong /var/www
cho trang your_domain, trong khi giữ /var/www/html
làm thư mục mặc định để phục vụ nếu yêu cầu của khách hàng không khớp với bất kỳ trang nào khác.
Ví dụ, chúng ta sẽ thiết lập một tên miền có tên your_domain (bạn cần thay thế bằng tên miền của riêng bạn).
1. Tạo cấu trúc thư mục cho trang web
Mặc định, Apache trên Ubuntu 18.04 có một server block được kích hoạt phục vụ tài liệu từ thư mục /var/www/html
. Mặc dù điều này hoạt động tốt cho một trang web đơn lẻ, nhưng sẽ trở nên bất tiện nếu bạn host nhiều trang. Thay vì sửa đổi /var/www/html
, hãy tạo một cấu trúc thư mục mới trong /var/www
cho trang your_domain, giữ /var/www/html
làm thư mục mặc định nếu không có yêu cầu khớp với các trang khác.
Tạo thư mục cho your_domain:
sudo mkdir /var/www/your_domain
Sau đó, chuyển quyền sở hữu của thư mục về cho người dùng hiện tại sử dụng biến môi trường $USER
:
sudo chown -R $USER:$USER /var/www/your_domain
Đảm bảo quyền truy cập cho thư mục gốc web (nếu chưa thay đổi giá trị unmask):
sudo chmod -R 755 /var/www/your_domain
Tiếp theo, tạo một trang index.html mẫu bằng nano hoặc trình soạn thảo yêu thích:
nano /var/www/your_domain/index.html
Và thêm nội dung HTML mẫu sau vào file:
<html> <head> <title>Welcome to Your_domain!</title> </head> <body> <h1>Success! The your_domain virtual host is working!</h1> </body> </html>
Sau khi hoàn thành, lưu và đóng file (với nano: nhấn CTRL + X, sau đó nhấn Y và ENTER).
2. Tạo file Virtual Host
Để Apache có thể phục vụ nội dung vừa tạo, bạn cần tạo file Virtual Host chứa các chỉ thị cấu hình đúng. Thay vì sửa file cấu hình mặc định nằm tại /etc/apache2/sites-available/000-default.conf
, hãy tạo một file mới tại /etc/apache2/sites-available/your_domain.conf
Mở file bằng nano:
sudo nano /etc/apache2/sites-available/your_domain.conf
Thêm khối cấu hình sau vào file (khối này tương tự cấu hình mặc định nhưng được cập nhật cho thư mục và tên miền mới):
/etc/apache2/sites-available/your_domain.conf
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName your_domain ServerAlias www.your_domain DocumentRoot /var/www/your_domain ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Lưu ý: Chúng ta đã cập nhật DocumentRoot
về thư mục mới và ServerAdmin
thành một email mà quản trị viên của trang your_domain có thể truy cập.
Hai chỉ thị ServerName và ServerAlias được sử dụng để xác định tên miền chính và các tên khác cần khớp.
Lưu và đóng file sau khi hoàn thành.
3. Kích Hoạt Virtual Host
Kích hoạt file Virtual Host mới tạo với công cụ a2ensite
:
sudo a2ensite your_domain.conf
Vô hiệu hoá trang mặc định được định nghĩa trong 000-default.conf
:
sudo a2dissite 000-default.conf
Kiểm tra lỗi cấu hình:
sudo apache2ctl configtest
Bạn sẽ nhận được đầu ra:
output
Syntax OK
Cuối cùng, khởi động lại Apache để áp dụng thay đổi:
sudo systemctl restart apache2
Apache bây giờ sẽ phục vụ tên miền của bạn. Bạn có thể kiểm tra bằng cách truy cập vào http://your_domain
trên trình duyệt.
Bước 6 – Làm quen với các File và thư mục quan trọng của Apache
Bây giờ, khi bạn đã biết cách quản lý dịch vụ Apache, hãy dành vài phút làm quen với một số thư mục và file quan trọng.
Nội dung Web
/var/www/html
: Nơi lưu trữ nội dung web thực tế, theo mặc định chỉ chứa trang Apache mặc định mà bạn đã thấy. Bạn có thể thay đổi điều này bằng cách chỉnh sửa các file cấu hình của Apache.
Cấu hình máy chủ
/etc/apache2
: Thư mục cấu hình của Apache. Tất cả các file cấu hình của Apache đều nằm ở đây./etc/apache2/apache2.conf
: File cấu hình chính của Apache. Bạn có thể chỉnh sửa file này để thay đổi cấu hình toàn cục của Apache. File này chịu trách nhiệm tải nhiều file khác trong thư mục cấu hình./etc/apache2/ports.conf
: File này chỉ định các cổng mà Apache sẽ lắng nghe. Theo mặc định, Apache lắng nghe trên cổng 80 và thêm lắng nghe trên cổng 443 khi module hỗ trợ SSL được kích hoạt./etc/apache2/sites-available/
: Thư mục nơi lưu trữ các file Virtual Host cho từng trang. Apache sẽ không sử dụng các file trong thư mục này trừ khi chúng được liên kết (symlink) vào thư mụcsites-enabled
./etc/apache2/sites-enabled/
: Thư mục lưu trữ các file Virtual Host đã được kích hoạt. Thông thường, các file này được tạo ra bằng cách liên kết đến các file cấu hình trong thư mụcsites-available
bằng lệnha2ensite
. Apache đọc các file trong thư mục này khi khởi động hoặc reload để biên dịch cấu hình hoàn chỉnh./etc/apache2/conf-available/ và /etc/apache2/conf-enabled/
: Các thư mục này có mối quan hệ tương tự nhưsites-available
vàsites-enabled
, nhưng dùng để lưu trữ các mảnh cấu hình không thuộc về Virtual Host. Các file trong thư mụcconf-available
có thể được kích hoạt bằng lệnha2enconf
và vô hiệu hoá bằng lệnha2disconf
./etc/apache2/mods-available/ và /etc/apache2/mods-enabled/
: Các thư mục chứa các module có sẵn và các module đã được kích hoạt, tương ứng. Các file có đuôi.load
chứa các đoạn mã tải module cụ thể, trong khi các file có đuôi.conf
chứa cấu hình cho các module đó. Các module có thể được kích hoạt và vô hiệu hoá bằng lệnha2enmod
vàa2dismod
.
Log máy chủ
/var/log/apache2/access.log
: Theo mặc định, mỗi yêu cầu đến máy chủ web của bạn được ghi lại trong file log này, trừ khi Apache được cấu hình khác./var/log/apache2/error.log
: Mọi lỗi xảy ra đều được ghi lại ở file này. Chỉ thịLogLevel
trong cấu hình Apache chỉ định mức độ chi tiết của log lỗi.
Kết luận
Bây giờ, khi bạn đã triển khai thành công máy chủ web Apache trên Ubuntu 18.04, bạn mở ra vô vàn cơ hội để phục vụ các loại nội dung đa dạng. Bạn có thể tích hợp các công nghệ tiên tiến để tạo nên trải nghiệm web phong phú và tối ưu, từ các trang tĩnh đơn giản đến các ứng dụng web động phức tạp. Sự linh hoạt này cho phép bạn khám phá thêm các giải pháp phát triển mới, cải thiện hiệu năng và đáp ứng tốt hơn nhu cầu của người dùng.
Nếu bạn muốn xây dựng một bộ ứng dụng hoàn chỉnh hơn, bạn có thể tham khảo bài viết của DataOnline về cách cấu hình một LAMP stack trên Ubuntu 18.04. Bạn cũng có thể tìm hiểu cách lấy và cài đặt chứng chỉ TLS/SSL miễn phí với bài hướng dẫn “Cách Bảo Mật Apache với Let’s Encrypt trên Ubuntu 18.04.”