Apache HTTP Server là một trong những máy chủ web phổ biến nhất trên toàn cầu. Với tính năng module có thể tải động, hỗ trợ đa phương tiện ổn định, và khả năng tích hợp mở rộng với các phần mềm phổ biến, Apache trở thành một lựa chọn hàng đầu cho các nhà phát triển web.
Trong bài hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt Apache trên máy chủ Ubuntu của mình, giúp bạn xây dựng và triển khai các ứng dụng web hiệu quả.
Bên cạnh đó, bạn có thể triển khai ứng dụng từ GitHub dễ dàng bằng DataOnline VPS, nơi chúng tôi sẽ hỗ trợ bạn quản lý và mở rộng ứng dụng một cách tự động và nhanh chóng.
Yêu cầu
Trước khi bắt đầu hướng dẫn này, bạn cần có một server Ubuntu được thiết lập với một tài khoản người dùng non-root có quyền sudo
. Firewall đã được bật để chặn các cổng không cần thiết. Bạn có thể tham khảo hướng dẫn Thiết lập máy chủ ban đầu với Ubuntu để biết cách thực hiện.
Khi đã hoàn tất thiết lập, hãy đăng nhập bằng tài khoản non-root và tiến hành bước đầu tiên.
Bước 1 – Cài đặt Apache
Apache có sẵn trong các kho phần mềm mặc định của Ubuntu, cho phép cài đặt bằng các công cụ quản lý gói truyền thống. Cập nhật danh sách gói cục bộ
Đầu tiên, cập nhật chỉ mục gói để phản ánh các thay đổi mới nhất từ nguồn:
sudo apt update
Cài đặt gói apache2
Tiếp theo, chạy lệnh sau để cài đặt Apache:
sudo apt install apache2
Sau khi xác nhận cài đặt, apt
sẽ cài đặt Apache và tất cả các phụ thuộc cần thiết.
Bước 2 – Điều chỉnh cài đặt tường lửa
Trước khi kiểm tra Apache, cần chỉnh sửa cài đặt tường lửa để cho phép truy cập từ bên ngoài tới 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 server.
Trong quá trình cài đặt, Apache sẽ tự động đăng ký với UFW để cung cấp một số cấu hình ứng dụng (application profiles) có thể được sử dụng để bật hoặc tắt quyền truy cập đến Apache qua tường lửa.
Liệt kê các profile ứng dụng của UFW
Chạy lệnh sau:
sudo ufw app list
Output sẽ hiển thị danh sách các profile:
Output Available applications: Apache Apache Full Apache Secure OpenSSH
Có ba profile dành cho Apache:
Apache
: Mở cổng80
(lưu lượng web thông thường, không mã hóa).Apache Full
: Mở cả cổng80
(HTTP) và cổng443
(lưu lượng TLS/SSL mã hóa).Apache Secure
: Chỉ mở cổng443
(TLS/SSL mã hóa).
Bật profile phù hợp
Vì hướng dẫn này chưa cấu hình SSL cho server, bạn chỉ cần cho phép lưu lượng HTTP thông thường trên cổng 80
. Do đó, chạy:
sudo ufw allow 'Apache'
Xác minh thay đổi Kiểm tra trạng thái của UFW:
sudo ufw status
Output sẽ hiển thị danh sách lưu lượng HTTP được cho phép:
Output Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)
Như vậy, profile đã được kích hoạt để cho phép truy cập tới máy chủ Apache.
Bước 3 – Kiểm tra máy chủ Web
Sau khi cài đặt xong, Ubuntu sẽ tự động khởi động Apache. Máy chủ web sẽ ngay lập tức chạy.
Để đảm bảo dịch vụ đang hoạt động, chạy lệnh sau (với hệ thống khởi động systemd
):
sudo systemctl status apache2
Output ● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese> Active: active (running) since Tue 2022-04-26 15:33:21 UTC; 43s ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 5089 (apache2) Tasks: 55 (limit: 1119) Memory: 4.8M CPU: 33ms CGroup: /system.slice/apache2.service ├─5089 /usr/sbin/apache2 -k start ├─5091 /usr/sbin/apache2 -k start └─5092 /usr/sbin/apache2 -k start
Như output xác nhận, dịch vụ đã khởi động thành công. Tuy nhiên, cách tốt nhất để kiểm tra là gửi yêu cầu truy cập một trang từ Apache.
Để kiểm tra, bạn có thể truy cập trang landing mặc định của Apache qua địa chỉ IP công cộng của server. Nếu bạn không biết địa chỉ IP, hãy thử một số lệnh sau từ dòng lệnh của server:
hostname -I
Lệnh trên sẽ in ra các địa chỉ IP cách nhau bằng dấu cách. Bạn có thể thử truy cập từng địa chỉ một trong trình duyệt.
Ngoài ra, bạn có thể dùng công cụ icanhazip.com
:
curl -4 icanhazip.com
Sau khi lấy được địa chỉ IP, nhập vào trình duyệt:
http://your_server_ip
Bạn sẽ thấy trang web Apache mặc định trên Ubuntu như hình dưới đây:
Trang này cho thấy Apache đang hoạt động đúng cách. Nó cũng bao gồm một số thông tin cơ bản về các tập tin và vị trí thư mục quan trọng của Apache.
Bước 4 – Quản lý tiến trình Apache
Bây giờ, 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 sử dụng systemctl.
Dừng Apache:
sudo systemctl stop apache2
Khởi động Apache:
sudo systemctl start apache2
Khởi động lại Apache:
sudo systemctl restart apache2
Tải lại cấu hình Apache (không ngắt kết nối):
sudo systemctl reload apache2
Theo mặc định, Apache được cấu hình để khởi động tự động khi server khởi động. Nếu bạn không muốn điều này, có thể tắt tự động khởi động bằng lệnh:
sudo systemctl disable apache2
Để bật lại tự động khởi động khi server khởi động, chạy:
sudo systemctl enable apache2
Sau khi thiết lập, Apache sẽ tự động khởi động mỗi khi server khởi động.
Bước 5 – Thiết lập Virtual Hosts
Khi sử dụng máy chủ web Apache, bạn có thể tạo các Virtual Hosts (tương tự như server blocks trong Nginx) để bao gói chi tiết cấu hình và phục vụ nhiều tên miền từ một server duy nhất. Trong hướng dẫn này, chúng ta sẽ thiết lập một tên miền là your_domain (hãy thay thế bằng tên miền của riêng bạn).
Lưu ý: Nếu bạn đang thiết lập tên miền với DataOnline, hãy tham khảo Tài liệu Mạng của DataOnline.
Apache trên Ubuntu mặc định có một server block phục vụ các tài liệu từ thư mục /var/www/html
. Mặc dù cấu hình này hoạt động tốt với một trang web đơn, nó có thể trở nên khó quản lý nếu bạn host nhiều trang web. Thay vì sửa đổi thư mục /var/www/html, bạn hãy tạo cấu trúc thư mục trong /var/www
cho trang web your_domain
, giữ /var/www/html
làm thư mục mặc định được phục vụ nếu yêu cầu không khớp với trang nào khác.
Tạo thư mục cho your_domain:
sudo mkdir /var/www/your_domain
Gán quyền sở hữu cho thư mục cho người dùng hiện tại:
sudo chown -R $USER:$USER /var/www/your_domain
Đặt quyền truy cập cho thư mục: Nếu bạn chưa thay đổi giá trị umask (thiết lập quyền mặc định), chạy:
sudo chmod -R 755 /var/www/your_domain
Tạo file index.html mẫu: Mở file bằng nano:
sudo nano /var/www/your_domain/index.html
Thêm nội dung sau:
<html> <head> <title>Welcome to Your_domain!</title> </head> <body> <h1>Success! The your_domain virtual host is working!</h1> </body> </html>
Chú ý rằng chúng tôi đã cập nhật DocumentRoot
thành thư mục mới của bạn và ServerAdmin
thành một địa chỉ email mà quản trị viên của your_domain có thể truy cập. Chúng tôi cũng đã thêm hai chỉ thị: ServerName
, xác định tên miền cơ sở sẽ khớp với định nghĩa virtual host này, và ServerAlias
, định nghĩa thêm các tên khác sẽ khớp như thể chúng là tên cơ sở.
Lưu và đóng file khi đã hoàn tất.
Bây giờ, kích hoạt file cấu hình bằng công cụ a2ensite
:
sudo a2ensite your_domain.conf
Vô hiệu hóa site mặc định được định nghĩa trong 000-default.conf
:
sudo a2dissite 000-default.conf
Tiếp theo, kiểm tra lỗi cấu hình:
sudo apache2ctl configtest
Bạn sẽ nhận được output như sau:
Output . . . Syntax OK
Khởi động lại Apache để áp dụng các 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 http://your_domain, nơi bạn sẽ thấy giao diện tương tự như ví dụ Virtual Host Apache.
Bước 6 – Làm quen với các file và thư mục quan trọng của Apache
Bây giờ 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
/var/www/html
: Nội dung web thực tế, mặc định chỉ bao gồm trang Apache mặc định mà bạn đã thấy; được phục vụ từ thư mục /var/www/html. Có thể thay đổi bằng cách chỉnh sửa các file cấu hình của Apache.
Cấu hình Server
/etc/apache2
: Thư mục chứa toàn bộ các file cấu hình của Apache./etc/apache2/apache2.conf
: File cấu hình chính của Apache, chịu trách nhiệm tải các file cấu hình khác./etc/apache2/ports.conf
: File xác định các cổng mà Apache lắng nghe (mặc định là cổng 80 và cổng 443 khi module SSL được kích hoạt)./etc/apache2/sites-available
/: Thư mục chứa các Virtual Hosts theo từng site. Các file ở đây không được Apache sử dụng trừ khi được liên kết tới thư mụcsites-enabled
thông qua lệnha2ensite
./etc/apache2/sites-enabled
/: Thư mục chứa các Virtual Hosts đã được kích hoạt./etc/apache2/conf-available/ và /etc/apache2/conf-enabled/
: Tương tự nhưsites-available
vàsites-enabled
nhưng dùng để chứa các đoạn cấu hình không thuộc Virtual Host. Các file ởconf-available
có thể được kích hoạt bằng lệnha2enconf
và vô hiệu hóa bằng lệnha2disconf
./etc/apache2/mods-available/ và /etc/apache2/mods-enabled/
: Thư mục chứa các module có sẵn và đã được kích hoạt. Các file kết thúc bằng.load
dùng để tải module, các file kết thúc bằng.conf
dùng để cấu hình module. Có thể kích hoạt hoặc vô hiệu hóa module bằng lệnha2enmod
vàa2dismod
.
Nhật ký Server
/var/log/apache2/access.log
: Mặc định, mọi yêu cầu đến server được ghi lại trong file này./var/log/apache2/error.log
: Mặc định, tất cả các lỗi được ghi lại trong file này. Chỉ thịLogLevel
trong cấu hình Apache xác định mức độ chi tiết của log lỗi.
Kết luận
Bây giờ, khi bạn đã hoàn tất việc cài đặt máy chủ web Apache, bạn đã mở ra rất nhiều cơ hội để phục vụ các loại nội dung đa dạng và sử dụng các công nghệ khác nhau để tạo ra một trải nghiệm web phong phú và hấp dẫn cho người dùng. Apache không chỉ đơn giản là một máy chủ web, mà còn là nền tảng vững chắc cho việc triển khai các ứng dụng web phức tạp, hỗ trợ nhiều loại ngôn ngữ lập trình và cơ sở dữ liệu, giúp bạn mở rộng và tùy chỉnh theo nhu cầu.
Nếu bạn đang có kế hoạch xây dựng một stack ứng dụng hoàn chỉnh, một trong những lựa chọn phổ biến là LAMP stack (Linux, Apache, MySQL, PHP). LAMP cung cấp một bộ công cụ mạnh mẽ và dễ sử dụng để phát triển và triển khai ứng dụng web. Để tìm hiểu cách cấu hình LAMP stack trên Ubuntu, bạn có thể tham khảo bài viết chi tiết của chúng tôi về cách cài đặt và cấu hình LAMP stack, giúp bạn tối ưu hóa máy chủ của mình và tận dụng tối đa các công nghệ web hiện đại.