-= Cài đặt và cấu hình Web Server =-
1. Cài đặt Web ServerVới Linux (sử dụng phiên bản CentOS), chúng ta có thể chọn gói mã nguồn như httpd-2.2.3.tar.gz. Đây là gói miễn phí, chúng ta hoàn toàn có thể download được trên mạng:
• Nếu sử dụng gói .gz thì dùng lệnh: tar xvzf httpd-***.tar.gz
• Vào thư mục vừa giải mã, sau đó sử dụng các lệnh ./configure | make | make install để cài đặt.
• Còn nếu cài đặt từ những gói rpm thì gõ lệnh: rpm -ivh httpd-***.rpm
• Bây giờ, chúng ta có thể chạy Web Server nếu chúng ta muốn. Tuy nhiên, vẫn có khi gặp trường hợp không thể khởi động được như: lỗi vì đã có phần mềm nào đó chạy trên port mà Web Server ta sẽ chạy (80). Điều này có thể khắc phục được một cách dễ dàng, bằng cách tắt chương trình chạy trên port đó đi. Và bây iờ khởi động lại là có thể chạy được.
• Để start – stop – restart webserver: /etc/init.d/httpd start|stop|restart hoặc dùng lệnh:
#chkconfig httpd on
#service httpd start|stop|restart
• Tuy nhiên, để có thể hiểu cũng như vận hành theo đúng ý muốn của chúng ta thì cần phải hiểu và cũng như phải tận tay cấu hình nó.
2. Cấu hình Web Server:
Các tập tin và thư mục cấu của Apache:
• /etc/httpd/conf: thư mục lưu giữ các tập tin cấu hình như httpd.conf.
• /etc/httpd/modules: lưu giữ các module của Web Server.
• /etc/httpd/logs: lưu các tập tin log của Apache.
• /var/www/html: lưu các trang web.
• /var/www/cgi-bin: lưu các script sử dụng cho các trang web
Tập tin cấu hình Apache được tạo thành từ nhiều chỉ dẫn (directive) khác nhau.Mỗi dòng hoặc mỗi một directive và phục vụ cho một cấu hình riêng biệt. Có những directive có ảnh hưởng với nhau. Những dòng bắt đầu bằng dấu # là những dòng chú thích. Sau đây là những directive quan trọng khi cấu hình Web Server.
ServerName:
Cú pháp: ServerName
Trong đó, hostname là tên máy tính của Server. Nó được dùng trong việc tạo ra những URL chuyển tiếp (direction URL). Nếu không chỉ ra, server sẽ cố gắng suyluận từ địa chỉ IP của nó. Tuy nhiên, điều này có thể không tin cậy hoặc không trả ra tên máy tính đúng.
Ví dụ: ServerName www.linuxcentos.org
ServerAdmin: địa chỉ email của người quản trị hệ thống
Cú pháp: ServerAdmin <địa chỉ email>
Ví dụ: ServerAdmin webadmin@linuxcentos.org
ServerType: quy định cách nạp chương trình. Có 2 cách:
• inetd: chạy từ các init level.
• standalone: chạy từ hệ thống.
Cú pháp: ServerType
Ví dụ: ServerType standalone
DocumentRoot: cấu hình thư mục góc, lưu trữ nội dung của Website. Web Server sẽ lấy những tập tin trong thư mục này phục vụ cho yêu cầu của client.
Cú pháp: DocumentRoot <đường dẫn thư mục>
Ví dụ: DocumentRoot /usr/web
ServerRoot: Vị trí cài đặt chương trình Apache.
Cú pháp: ServerRoot
Ví dụ: ServerRoot /user/local/apache
ErrorLog: chỉ ra tập tin để server ghi vào bất kỳ những lỗi nào mà nó gặp phải.
Cú pháp: ErrorLog
Ví dụ: ErrorLog logs/error_log
DirectoryIndex: các tập tin mặc định được truy vấn khi truy cập trang Web.
Cú pháp: DirectoryIndex
Ví dụ: DirectoryIndex index.html
MaxClients: Quy định số yêu cầu kết nối từ các client đến server.
Cú pháp: MaxClients
Ví dụ MaxClients 256
Listen: quy định địa chỉ IP hoặc cổng mà Apache nhận kết nối từ Client.
Cú pháp: Listen
Ví dụ: Listen 80
BindAddress: quy định địa chỉ card mạng để chạy Apache trên Server.
Cú pháp: BindAddress
Sử dụng dấu “*” để có thể sử dụng tất cả các địa chỉ trên máy.
Ví dụ: BindAddress 192.168.7.8
TimeOut: quy định thời gian sống của một kết nối (được tính bằng giây).
Cú pháp: TimeOut
Ví dụ: TimeOut 300
KeepAlive: cho phép hoặc không cho phép client gửi được nhiều yêu cầu dựa trên một kết nối đến với Web Server.
Cú pháp: KeepAlive
Ví dụ: KeepAlive On
MaxKeepAliveRequests: số Request tối đa trên một kết nối (nếu cho phép nhiều Request trên một kết nối).
Cú pháp: MaxKeepAliveRequests
Ví dụ: MaxKeepAliveRequests 100
KeepAliveTimeout: thời gian chờ một Request kế tiếp từ cùng một client trên cùng một kết nối (được tính bằng giây).
Cú pháp: KeepAliveTimeout
Ví dụ: KeepAliveTimeout 15
Alias: ánh xạ đường dẫn cục bộ (không nằm trong DocumentRoot) thành tên đường dẫn địa chỉ URL.
Cú pháp: Alias <đường dẫn http><đường dẫn cục bộ>
Ví dụ: Alias /doc /usr/share/doc
Khi truy cập http://www.linuxcentos.org/doc, nó sẽ vào /usr/share/doc.
Để giới hạn việc truy cập của người dùng ta có thể kết hợp với Directory directive.
Ví dụ: Alias /doc /usr/share/doc
AuthName intranet #đặt tên cho sự chứng thực là intranet
AuthUserFile /etc/httpd/passwd #vị trí của tập tin password
Require user hongthai minhtri #user cho phép truy cập tài nguyên
Allow from internal.linuxcentos.org #cho phép truy cập từ đchỉ này
UserDir: cho phép người dùng tạo Home page của user trên Web Server.
Cú pháp:
UserDir Disables ## để thực thi cơ chế enable UserDir
UserDir www ## Khai báo thư mục chứa Website của user
Trong thư mục Home Directory của người dùng tạo thư mục www.
Ví dụ:
/home/adminloc Khi đó, cú pháp truy cập từ Web Browser có dạng:
http://www.linuxcentos.org/~
chown adminloc /home/adminloc/home/adminloc/www
chmod 750 /home/adminloc/home/adminloc/www
VirtualHost: là tính năng của Apache, giúp ta duy trì nhiều hơn một web server trên một máy tính. Nhiều tên cùng chia sẻ một địa chỉ IP gọi là named-based virtual hosting và sử dụng những địa chỉ IP khác nhau cho từng domain gọi là IP-based
virtual hosting.
• IP-based Virtual Host: Virtual Host dựa trên IP yêu cầu những server phải có một địa chỉ IP khác nhau cho mỗi virtual host dựa trên IP. Như vậy, một máy tính phải có nhiều interface hay sử dụng cơ chế virtual interface mà những hệ điều hành sau hỗi trợ. Nếu máy của chúng ta có một địa chỉ IP, 192.168.7.8, chúng ta có thể cấu hình một địa chỉ IP khác trên cùng một card mạng như sau:
ifconfig eth0:1 192.168.7.9 netmask 255.255.255.0 up
Sau đó, chúng ta mô tả thông tin cấu hình trong file httpd.conf
...
DocumentRoot/tmp
ServerName www.domain
…
…
DocumentRoot/home/www/site1
ServerName www1.domain
…
DocumentRoot/home/www/site2
ServerName www2.domain
…
• Name-based Virtual Host: IP-based Virtual Hosts dựa vào địa chỉ IP để quyết định Virtual Host nào đúng để truy cập. Vì thế, chúng ta cần phải có địa chỉ khác nhau cho mỗi Virtual Host. Với Named-based Virtual Host, server dựa vào HTTP header của client để biết được hostname. Sử dụng kỹ thuật này, một địa chỉ IP có thể có nhiều tên máy tính khác nhau. Named-based Virtual Host rất đơn giản, chúng ta chỉ cần cấu hình DNS sao cho nó phân giải mỗi tên máy đúng với một địa chỉ IP và sau đó cấu hình Apache để tổ chức những web server cho những miền khác nhau.