Bài số 7: Thiết lập dịch vụ Web

Bài này yêu cầu cài đặt một máy chủ web và khai thác các tính năng của Web để phục vụ các công việc nội bộ của một tổ chức nào đó. Các bước thực hiện như sau:

Bước 1: Cài đặt và khởi động máy chủ web apache

Cài apache http server với lệnh yum. Máy chủ sau khi cài đặt đã được tự động cấu hình với file cấu hình /etc/httpd/conf/httpd.conf. Nếu không có lỗi gì xảy ra, có thể khởi động máy chủ với file cấu hình mặc định này bằng lệnh apachectl.

[root@R1 ~]# yum install httpd
. . .
[root@R1 ~]# apachectl -k start
httpd: apr_sockaddr_info_get() failed for R1
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

Tạm thời chưa quan tâm đến thông báo lỗi về tên miền khi khởi động web server. Sử dụng Firefox web browser truy nhập vào địa chỉ http://127.0.0.1 để kiểm tra kết nối, hoặc đứng trên một máy trạm khác và kiểm tra truy nhập đến server web này bằng địa chỉ IP: http://192.168.2.1. Nếu hệ thống chạy tốt, web browser sẽ hiển thị nội dung như bên dưới.

Bước 2: Chuẩn bị dữ liệu Web trong DocumentRoot

Dữ liệu web là nơi chứa các file HTML để máy chủ web truy nhập và tải nội dung về web browser trên máy client. Có hai cách là sử dụng DocumentRoot hoặc URL mapping. DocumentRoot là tham số trong file cấu hình apache cho phép xác định các file dữ liệu của máy chủ được đặt ở đâu. Các file này sẽ được truy nhập với địa chỉ URL mà không có thành phần thư mục (http://127.0.0.1). Có thể tìm tham số này trong file cấu hình /etc/httpd/conf/httpd.conf rồi tạo các thư mục con nằm bên trong thư mục DocumentRoot (ví dụ myweb) và tạo một file HTML đơn giản.

[root@R1 ~]# cat /etc/httpd/conf/httpd.conf | grep DocumentRoot
# DocumentRoot: The directory out of which you will serve your
DocumentRoot "/var/www/html"
# This should be changed to whatever you set DocumentRoot to.
#    DocumentRoot /www/docs/dummy-host.example.com

[root@R1 ~]# cd /var/www/html/
[root@R1 html]# mkdir myweb
[root@R1 html]# cat ./myweb/index.html
<html>
<head>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
[root@R1 html]#

Dùng browser truy nhập theo địa chỉ có tên thư mục (http://127.0.0.1/myweb):

Bước 3: Sử dụng phương pháp URL mapping

Phương pháp URL mapping cho phép thiết lập ánh xạ giữa các địa chỉ URL với các thư mục ở bất cứ đâu trên máy chủ, không nhất thiết phải nằm trong DocumentRoot. Khi thực hiện phương pháp này, một số vấn đề về quyền truy nhập thư mục cần được lưu ý. Đầu tiên cần xác định apache sử dụng user nào để đọc các thư mục. Nguyên lý hoạt động của apache là khi một browser truy nhập đến một thư mục web thông qua địa chỉ URL nào đó, máy chủ web apache thay mặt người sử dụng đọc các file trong thư mục tương ứng với quyền của user đang chạy tiến trình apache (thông thường user này là apache). Có thể sử dụng lênh ps aux để biết người sử dụng này là ai:

[root@R1 ~]# ps aux | grep http
root     18431  0.0  0.0 100952   656 pts/0    S+   21:24   0:00 tail -f /var/log/httpd/error_log
root     18552  0.0  0.1 198528  5304 ?        Ss   21:47   0:00 /usr/sbin/httpd -k start
apache   18553  0.0  0.0 198528  3064 ?        S    21:47   0:00 /usr/sbin/httpd -k start
apache   18554  0.0  0.0 198528  3608 ?        S    21:47   0:00 /usr/sbin/httpd -k start
apache   18555  0.0  0.0 198528  3068 ?        S    21:47   0:00 /usr/sbin/httpd -k start
apache   18556  0.0  0.0 198528  3064 ?        S    21:47   0:00 /usr/sbin/httpd -k start
apache   18557  0.0  0.0 198528  3064 ?        S    21:47   0:00 /usr/sbin/httpd -k start
apache   18558  0.0  0.0 198528  3064 ?        S    21:47   0:00 /usr/sbin/httpd -k start
apache   18559  0.0  0.0 198528  3064 ?        S    21:47   0:00 /usr/sbin/httpd -k start
apache   18560  0.0  0.0 198528  3064 ?        S    21:47   0:00 /usr/sbin/httpd -k start
root     18572  0.0  0.0 103312   880 pts/9    S+   21:54   0:00 grep http

Nếu một thư mục web không được cấu hình quyền truy nhập để user apache có thể đọc được, lỗi sẽ xảy ra khi browser muốn truy nhập đến thư mục web này. Để đảm bảo quyền truy nhập thư mục, phương pháp đơn giản nhất là để thư mục web nằm trong thư mục home của user apache (thông thường là /var/www). Có thể đọc file /etc/passwd để xác định thư mục home của user apache:

[root@R1 ~]# cat /etc/passwd | grep apache
apache:x:48:48:Apache:/var/www:/sbin/nologin

Tiếp theo, tạo thư mục web và các file dữ liệu cần thiết trong thư mục home của user apache (giả sử là /var/www/mynewweb). Cuối cùng, thiếp lập URL mapping trong file cấu hình /etc/httpd/conf/httpd.conf để trỏ tới thư mục này.

alias /mynewweb/ "/var/www/mynewweb/"
<Directory "/var/www/newmyweb/">
Order allow,deny
Allow from all
</Directory>

Khởi động lại apache với lệnh apachectl -k, dùng web browser truy nhập đến địa chỉ http://127.0.0.1/mynewweb sẽ đọc được nội dung thư mục web đã chuẩn bị trên máy chủ.

Bước 4: Thiết lập vùng Intranet trên Web site

Vùng Intranet trên web site là nơi chỉ cho phép các user nội bộ của tổ chức được phép truy nhập. Các user nằm ngoài khu vực này (ví dụ truy nhập từ một máy nào đó trên Internet) không được quyền truy nhập vào khu vực Intranet. Phương pháp đơn giản nhất để xác định user nằm trong vùng mạng nội bộ của tổ chức hay nằm ngoài mạng Internet là dựa trên địa chỉ IP của web browser. Khi khai báo một thư mục tương ứng với vùng Intranet, có thể bổ sung thêm quyền truy nhập theo địa chỉ IP của web browser:

[root@R1 html]# cat /etc/httpd/conf/httpd.conf
...
alias /intranet/ "/var/www/intranet/"
<Directory "/var/www/intranet/">
Order deny,allow
Deny from all
Allow from 192.168.2
</Directory>

Khi đó, chỉ có các web browser có địa chỉ IP mà phần địa chỉ mạng là 192.168.2 mới truy nhập được vào vùng Intranet này. Các web browser nằm ngoài vùng địa chỉ này sẽ bị chặn khi truy nhập vào vùng Intranet: