Giới thiệu
Trong thế giới phát triển web, việc triển khai nhiều trang tĩnh trên một máy chủ Apache có thể là một kỹ năng thiết yếu. Đặc biệt, với những trang web đơn giản, bạn không cần phải sử dụng các công cụ phức tạp như Kubernetes hay các dịch vụ serverless. Trong bài viết này, chúng ta sẽ tìm hiểu cách thiết lập hai trang web tĩnh chỉ bằng dòng lệnh.
Mục tiêu
Chúng ta sẽ thiết lập môi trường với:
- Máy chủ nhảy (Jump Host): Nơi lưu trữ các tệp trang web.
- Máy chủ ứng dụng (App Server): Một máy CentOS sạch sẽ để lưu trữ các trang.
- Nội dung: Hai thư mục trang web,
/mediavà/games, đang ở trên máy chủ nhảy. - Mục tiêu: Phục vụ trang
mediatạihttp://appserver:6300/media/và tranggamestạihttp://appserver:6300/games/. Chúng ta sẽ sử dụng cổng tùy chỉnh6300thay vì cổng mặc định80.
Hãy bắt đầu nhé!
Bước 1: Di chuyển tệp (SCP)
Đầu tiên, chúng ta cần chuyển tệp từ máy chủ nhảy tới máy chủ ứng dụng. Công cụ tốt nhất cho nhiệm vụ này là scp (secure copy), hoạt động qua SSH.
Chạy lệnh sau từ máy chủ nhảy:
bash
scp -r /home/thor/media /home/thor/games tony@stapp02:/tmp
Giải thích:
scplà lệnh tương đương với kéo và thả an toàn.- Cờ
-rnghĩa là "đệ quy," cần thiết để sao chép toàn bộ thư mục. - Chúng ta đang sao chép cả hai thư mục
mediavàgamesvào thư mục/tmptrên máy chủ ứng dụng.
Bước 2: Cài đặt Apache
Bây giờ, hãy SSH vào máy chủ ứng dụng (stapp02). Đầu tiên, chúng ta cần cài đặt một máy chủ web. Trên CentOS/RHEL, gói cho Apache là httpd.
bash
sudo yum install -y httpd
Giải thích:
sudo: Cần quyền root để cài đặt phần mềm.yum install: Lệnh để cài đặt gói trên hệ thống CentOS/RHEL.-y: Tự động trả lời "có" cho bất kỳ thông báo xác nhận nào.
Bước 3: Thay đổi cổng Apache
Chúng ta cần phục vụ nội dung trên cổng 6300, không phải cổng HTTP mặc định 80. Hãy chỉnh sửa file cấu hình chính của Apache, /etc/httpd/conf/httpd.conf, bằng lệnh sed (stream editor).
bash
sudo sed -i 's/Listen 80/Listen 6300/g' /etc/httpd/conf/httpd.conf
Giải thích:
sed: Tiện ích chỉnh sửa dòng.-i: Chỉnh sửa tại chỗ.'s/Listen 80/Listen 6300/g': Lệnh thay thế. Tất cả các trường hợp sẽ được thay thế.
Bước 4: Di chuyển nội dung vào thư mục chính
Các tệp trang web vẫn nằm trong /tmp. Chúng ta cần di chuyển chúng vào thư mục gốc tài liệu của Apache, /var/www/html.
bash
sudo mv /tmp/media /var/www/html/
sudo mv /tmp/games /var/www/html/
Giải thích:
- Lệnh
mvsẽ di chuyển các thư mục vào/var/www/html, cho phép Apache tự động phục vụ chúng như là các thư mục con.
Bước 5: Khởi động Apache
Chúng ta đã cài đặt, cấu hình và di chuyển các tệp. Bước cuối cùng là thực sự khởi động máy chủ web bằng systemctl.
bash
sudo systemctl start httpd
sudo systemctl enable httpd
Giải thích:
start: Khởi động ngay lập tức.enable: Đảm bảo máy chủ khởi động lại sau khi reboot.
Bước 6: Kiểm tra hoạt động
Làm thế nào để biết mọi thứ hoạt động? Cách nhanh nhất là sử dụng curl để kiểm tra:
bash
curl http://localhost:6300/media/
curl http://localhost:6300/games/
Nếu mọi thứ hoạt động tốt, curl sẽ in nội dung HTML của file index.html từ mỗi thư mục ngay trong terminal của bạn.
Thực hành tốt nhất
- Sao lưu dữ liệu: Luôn sao lưu dữ liệu trước khi thực hiện các thay đổi lớn trên máy chủ.
- Bảo mật: Hãy đảm bảo rằng máy chủ SSH được cấu hình an toàn để ngăn chặn các truy cập trái phép.
Những cạm bẫy thường gặp
- Cổng không chính xác: Đảm bảo rằng bạn đã thay đổi đúng cổng trong file cấu hình.
- Quyền truy cập: Đảm bảo rằng Apache có quyền truy cập vào thư mục chứa các tệp cần phục vụ.
Mẹo hiệu suất
- Tối ưu hóa hình ảnh: Nén các hình ảnh để giảm thời gian tải trang.
- Sử dụng caching: Cấu hình bộ nhớ cache để tăng tốc độ tải trang cho người dùng.
Kết luận
Chúng ta đã thiết lập thành công hai trang tĩnh trên một máy chủ Apache bằng một số lệnh đơn giản. Việc làm này không chỉ giúp bạn nắm vững kỹ năng quản lý máy chủ mà còn là nền tảng quan trọng cho việc phát triển web. Hãy thử nghiệm với các cài đặt khác nhau và mở rộng khả năng của bạn trong lĩnh vực này. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại ý kiến bên dưới nhé!
Câu hỏi thường gặp (FAQ)
1. Tôi có thể sử dụng cổng nào khác không?
Có, bạn có thể sử dụng bất kỳ cổng nào miễn là nó không bị chiếm dụng.
2. Làm thế nào để bảo mật máy chủ Apache của tôi?
Hãy đảm bảo cài đặt chứng chỉ SSL và sử dụng tường lửa để bảo vệ máy chủ của bạn.
3. Có cách nào để tự động hóa quy trình này không?
Có, bạn có thể viết một script shell để tự động hóa toàn bộ quy trình này.