Khi chưa khởi động lại Apache thì DNS sẽ làm việc không chính xác, cách đơn giản nhất là tạm thời bỏ qua để cấu hình file các host trên PC khách của người phát triển
Wen hoặc các trạm làm việc (không phải là Apache server). Mặc định, các PC và các trạm làm việc Linux truy vấn các file host trước khi kiểm tra DNS, do đó nếu giá trị
cho www.my_site.com được đưa vào danh sách víf vậy mà máy khách sẽ sử dụng
được.Trong Windows cũng tương tự trong Linux đó là:
C:\WINDOWS\system32\drivers\etc\hosts. Có thể dùng Notepad để thêm nội dung vào
như sau:
97.158.253.26 www.my.site.com 4.6.3 Vô hiệu hoá Danh sách Thư mục
Nếu như Apache không tìm thấy trang index.html trong mỗi thư mục con dưới thư mục DocumentRoot thì sẽ mặc định đưa ra danh sách tất cả các file trong thư mục con đó.
Ví dụ, nếu tạo một thư mục con: /home/www/site1/example dưới: www.my_site.com
của /home/www/site1/. Có thể quan sát nội dung của file my_example.html trong thư
mục con này nếu trỏ tới: http://www.my_site.com/example/my_example.html. Có thể biết trang index nào cho: www.my_site.com/example bằng cách gõ vào link sau:
http://www.my_site.com/example. Apache đưa ra toàn bộ danh sách nội dung các file
trong thư mục example nếu như nó không thể tìm thấy file index.html. Người dùng có thể vô hiệu hoá danh sách này bằng cách dùng tuỳ chọn: “.Indexes” trong <Directory> cho DocumentRoot như sau:
<Directory "/home/www/*"> ...
...
Options MultiViews _Indexes SymLinksIfOwnerMatch IncludesNoExec
Cần chú ý rằng để có được hiệu quả như mong muốn Apache cần được khởi động lại nếu không sẽ xuất hiện thông báo: “403 Access denied”.
4.6.4 Thông báo các trang thiếu
Người dùng có thể chỉ cho Apache hiển thị một file HTML xác định trước nếu như cố gắng truy cập vào trang không tồn tại bằng cách đặt một khai báo trong file httpd.conf
để Apache sẽ hiển thị cảnh báo nội dung thay vì hiển thị thông báo: “404 File Not Found” như sau:
ErrorDocument 404 /missing.htm
mạng khi truyền qua Internet. Đầu tiên cần tải Apache bản 2.x, sử dụng chỉ dẫn Location để định rõ kiểu file nào cần nén, sau đó sửa đổi và khởi động lại Apache. Có thể kiểm tra lại các kích thước trước và sau khi nén từ file: /var/log/httpd/access_log
như sau:
[root@ dhxd tmp]# grep dns9static /var/log/httpd/access_log ...
...
67.119.25.115 9 9 [15/Feb/2003:23:06:51 90800] "GET /dns9static.htm HTTP/1.1" 200 15190 "http://www.linuxhomenetworking.com/sendmail.htm" "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0; AT&T CSM6.0; YComp 5.0.2.6)"
... ...
[root@ dhxd tmp]#
Và tương ứng với thư mục trong danh sách:
[root@ dhxd tmp]# ll /web9dir/dns9static.htm
9rw9r99r99 1 user group 78350 Feb 15 00:53 /home/www/ccie/dns9static.htm [root@dhxd tmp]#
Dễ thấy, 78350 byte ban đầu đã giảm xuống 15190 byte tức là đã nén được đến 80%. Sau đây là ví dụ về cấu hình nén:
Đầu tiên cần phải đưa vào các khai báo trước phần host ảo của file: httpd.conf để kích hoạt nén các trang tĩnh. Đối với các bản của Fedora file httpd.conf tải module tĩnh:
mod_deflate mặc định, do đó dòng LoadModule không cần thiết, tuy nhiên để có cái nhìn
toàn diện trong ví dụ dưới đây coi như chưa có mod_deflate.
LoadModule deflate_module modules/mod_deflate.so <Location />
# Insert filter
SetOutputFilter DEFLATE
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip_only_text/html
# Netscape 4.06_4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no_gzip # MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSIE !no_gzip !gzip_only_text/html
# Don't compress images SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no_gzip dont_vary
# Make sure proxies don't deliver the wrong content Header append Vary User_Agent env=!dont_vary </Location>
4.8 Chạy Apache trên server đằng sau NAT Firewall
Nếu như Webserver đặt phía sau NAT firewall và người dùng đã “log” trên một máy đằng sau firewall, sau đó có thể bắt gặp vấn đề khi cố gắng truy cập vào:
www.mysite.com của www.another_site.com. Do NAT, các tường lửa thường không
cho truy cập từ các mạng đã được bảo vệ tới địa chỉ IP giả mạo từ bên ngoài. Ví dụ, Linux Web server dhxd có một địa chỉ bên trong là: 192.168.1.100, nhưng tường lửa có địa chỉ IP ở bên ngoài là 97.158.253.25 thông qua NAT. Nếu người dùng bên ngoài, mạng 192.168.1.x thì DNS không thể phân giải địa chỉ 97.158.253.26. Sau đây là 2 bước để giải quyết vấn đề:
4.8.1 Bước 1: Cấu hình host ảo với nhiều địa chỉ IP
Người dùng có thể cấu hình Apache để phục vụ chính xác nội dung khi truy cập vào:
www.mysite.com hoặc www.another_site.com từ bên ngoài và khi định rõ địa chỉ IP:
192.168.1.100 từ bên trong. Nhưng Apache còn có thể cho phép định rõ nhiều địa chỉ IP trong <VirtualHost> để giải quyết vấn đề. Sau đây là ví dụ:
NameVirtualHost 192.168.1.100 NameVirtualHost 97.158.253.26 <VirtualHost 192.168.1.100 97.158.253.26> DocumentRoot /www/server1 ServerName www.my_site.com ServerAlias dhxd, www.my_site_192_168_1_100.com </VirtualHost> 4.8.2 Bước 2: Cấu hình DNS
Cần ổn định vấn đề DNS mà NAT tạo ra, người dùng trên Internet cần truy cập vào địa chỉ IP: 97.158.253.26 khi vào trang web: www.my_site.com và nhiều người dùng
4.9 Bảo vệ các thư mục trang Web với mật khẩu
Sử dụng mật khẩu (password) để bảo vệ nội dung trong thư mục chính và thư mục con DocumentRoot .Ví dụ sau thể hiện cách sử dụng mật khẩu để bảo vệ thư mục:
/home/www/:
a) Sử dụng tiện ích mật khẩu htpasswd để tạo usename/password không phụ thuộc vào mật khẩu truy cập vào hệ thống. Người dùng phải định rõ vị trí đặt file mật khẩu, nếu như không tồn tại thì phải bao gồm một –c. Một cách khác đó là đặt file trong thư mục: /etc/httpd/conf, xa cây DocumentRoot tới những người sử dụng web có thể nhìn thấy được. Sau đây là ví dụ cho người dùng có tên là Dung và người thứ 2 là Quy:
[root@dhxd tmp]# htpasswd 9c /etc/httpd/conf/.htpasswd dung New password:
Re9type new password:
Adding password for user dung
[root@dhxd tmp]# htpasswd /etc/httpd/conf/.htpasswd quy New password:
Re9type new password:
Adding password for user quy [root@dhxd tmp]#
b) Tạo file: “.htpasswd” mà tất cả người dùng có thể đọc được
[root@dhxd tmp]# chmod 644 /etc/httpd/conf/.htpasswd
c) Tạo một file: “.htaccess” trong thư mục mà muốn điều khiển mật khẩu
AuthUserFile /etc/httpd/conf/.htpasswd AuthGroupFile /dev/null
AuthName EnterPassword AuthType Basic
require user dung
Mật khẩu này dùng để bảo vệ thư mục chính và tất cả các thư mục con,
“AuthUserFile” chỉ cho Apache để dùng file: “.htpasswd”. Câu lệnh: “require user”
hướng dẫn Apache chỉ cho phép người dùng “dung” trong file: “.htpasswd” mới có thể truy cập được. Nếu muốn tất cả người dùng trong file: “.htpasswd” được truy cập thì phải thay dòng lệnh này với người dùng theo yêu cầu. “AuthTypeBasic” chỉ thị cho Apache chấp nhận mật khẩu chưa được mã hoá từ người dùng ở xa khi trình duyệt Web.
d) Thiết lập file bảo vệ chính xác trên file: “.htaccess” trong thư mục: /home/www/.
e) Chắc chắn rằng file: /etc/httpd/conf/httpd.conf có khai báo AllowOverride trong <Directory> cho một vài cây phía trên: /home/www. Trong ví dụ dưới đây, tất cả các thư mục dưới: /var/www đều cần mật khẩu quyền hạn:
<Directory /home/www/*> AllowOverride AuthConfig </Directory>
f) Chắc chắn rằng đã có <VirtualHost> mà định nghĩa truy cập tới /home/www hoặc thư mục khác cao hơn trong cây thư mục:
<VirtualHost *>
ServerName 97.158.253.26 DocumentRoot /home/www </VirtualHost>
g) Khởi động lại Apache
h) Kiểm thử bằng cách truy cập vào trang web khi đó nó sẽ yêu cầu mật khẩu truy cập 4.10 Thư mục conf.d
Các file trong thư mục: /etc/httpd/conf.d đươc đọc ra và tự động nối thêm dữ liệu tới cấu hình trong file: httpd.conf mỗi lần Apache khởi động. Trong nội dung cấu hình mà một webserver phục vụ nhiều host trên nhiều Website, người dùng có thể tạo một file cấu hình cho mỗi Website với <Virtual> và <Directory>. Có thể cấu hình quản lý Website đơn giản hơn bằng cách như sau:
Sao lưu file: httpd.conf tránh trường hợp bị mất
Tạo các file đặt tại thư mục này mà Apache yêu cầu <VirtualHost> và <Directory>
Nếu mỗi site có một địa chỉ IP riêng biệt, sau đó đặt các khai báo NameVirtualHost tương đương các file trong thư mục conf.d. Nếu nó được chia sẻ, nó cần để giữ nguyên file: httpd.conf chính.
Tháo bỏ các lời chỉ dẫn tương đương từ file: httpd.conf
Khởi động lại Apache và kiểm tra.
Các file đặt trong thư mục conf.d không phải có tên đặc biệt và không cần phải quy chúng vào trong file httpd.conf.
4.11 Xử lý các sự cố Apache
pháp không chính xác trong khai báo <VirtualHost>. Sau đây là các lỗi mà người dùng hay gặp phải nhất.
4.11.1 Kiểm tra kết nối HTTP
Bước đầu tiên là để xác định webserver có thể truy cập trên TCP cổng 80, do không có kết nối có thể do tường lửa, NAT, hay luật gửi qua cổng tới webserver . Một vài lỗi khác bao gồm Apache không khởi động, server hoặc mạng bị lỗi.Nếu có thể kết nối qua cổng 80 nhưng không có trang nào được hiển thị thì vấn đề thường là do ứng dụng web lỗi, không do phần mềm web server. Một cách tốt nhất để kiểm tra từ cả bên trong mạng và từ Internet với TELNET.
4.11.2 Bản tin “403 Forbidden”
Nguyên nhân ở đây thường là do file permissions và xuất hiện ngữ cảnh bảo mật. Các vấn đề có liên quan tới bảo mật như bản tin: “avc: denied” trong file: /var/log/messages.
Nov 21 20:41:23 dhxd kernel: audit(1101098483.897:0): avc: denied { getattr } for
pid=1377 exe=/usr/sbin/httpd path=/home/www/index.html dev=hda5 ino=12
scontext=root:system_r:httpd_t tcontext=root:object_r:home_root_t tclass=file
4.11.3 Chỉ xuất hiện trang Apache mặc định
Khi chỉ xuất hiện trang Apache mặc định, có 2 nguyên nhân chính.
. Thứ nhất đó là do không có file: index.html trong thư mục DocumentRoot của website
. Thứ hai là thường do có liên quan tới ngữ cảnh bảo mật không chính xác 4.11.4 File httpd.conf không tương thích khi nâng cấp
Các file cấu hình cũ sẽ không tương thích khi nâng cấp từ Apache bản 1.3 tới bản 2.x. Trong Fedora, bản mới 2.x, file cấu hình mặc định được lưu trong file:
/etc/httpd/conf/httpd.conf.rpmnew. Đối với ví dụ host ảo đơn giản ở trên cách đơn giản
nhất là:
Lưu file httpd.conf cũ với tên khác, sao chép ServerName, NameVirtualHost, và Virtual Host từ file cũ và đặt chúng trong và đặt chúng vào trong file
httpd.conf.rpmnew mới.
Sao chép file httpd.conf.rpmnew và đặt tên lại là: httpd.conf
Khởi động lại Apache
4.11.5 Lỗi ServerName
Tất cả các chỉ dẫn ServerName phải đưa vào trong một miền mà DNS có thể phân giải được, nếu không sẽ xuất hiện lỗi khi httpd khởi động.
Starting httpd: httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Starting httpd: [Wed Feb 04 21:18:16 2004] [error] (EAI 2)Name or service not known: Failed to resolve server name for 192.16.1.100 (check DNS) __ or specify an explicit ServerName
Có thể tránh lỗi này bằng cách thêm một ServerName mặc định ở phần cuối nội dung file: httpd.conf, ví dụ:
#ServerName new.host.name:80 ServerName localhost
4.11.6 File ghi trạng thái Apache
File: /var/httpd/access_log được cập nhật sau mỗi truy vấn HTTP và là nguồn thông tin tổng quát về website. Đó là một kiểu định dạng cố định với mỗi mục vào được phân chia bằng các không gian hoặc các dấu ngoặc kép. Dưới đây là danh sách cách bố trí:
Field Number
Miêu tả (description) Separator
1 Địa chỉ IP của web ở xa Khoảng trống
2 Tem thời gian (Time Stamp) Dấu ngoặc vuông
. [ ] 3 Truy vấn HTTP bao gồm trang web được phục
cụ
Lời dẫn . " "
4 Mã kết quả HTTP Khoảng trống
5 Số lượng dữ liệu trong các byte gửi tới trình duyệt web ở xa
Khoảng trống
6 Trang Web chứa liên kết tới trang đã phục vụ Lời dẫn – “ ” 7 Phiên bản của trình duyệt web để lấy trang Lời dẫn – “ ”
Mã trạng thái có thể cung cấp vài thông tin bên trong các hoạt động và giúp cô lập các vấn đề. Ví dụ, mã lỗi 404 xuất hiện khi ai đó cố gắng truy cập tơi trang web không tồn tại, có thể do liên kết URL không chính xác. Sau đây là vài ví dụ phổ biến:
Code Miêu tả
200 Yêu cầu thành công
304
Yêu cầu thành công nhưng trang web đã yêu cầu không được sửa chữa từ khi các bản hiện tại trong trình duyệt web của cache. Có nghĩa là trang web không được gửi tới trình duyệt ở xa.
401 Truy cập không được phép. Ai đó sử dụng một tài khoản không chính xác
403 Thường xuất hiện khi file trang web được sở hữu bởi người quản trị mạng
404 Không tìm thấy. Trang yêu cầu không tồn tại
500 Lỗi server bên trong. Thường do các tập lệnh CGI, cần kiểm tra file error_log.
Bảng 4.4: Ví dụ mã trạng thái
4.11.7 File ghi lỗi Apache
File /var/log/httpd/error_log chứa các thông tin hữu ích về các lỗi, không giống như file: /var/log/httpd/access_log chúng không có định dạng chuẩn. Kiểu lỗi thường thấy là các truy vấn không tồn tại hay yêu cầu không hợp lệ. File này bao gồm các các lỗi khi khởi động Apache. File này cũng là vị trí mà các lỗi tập lệnh CGI được viết. Nhiều trường hợp các tập lệnh CGI bị lỗi với màn hình trống trên trình duyệt, thì vấn đề do file: /var/log/httpd/error_log là phù hợp nhất.
4.12 Tổng kết
Các Website cá nhân hay các tổ chức thương mại là rất phổ biến rộng rãi và tiện ích vì mọi người có thể chia sẻ các thông tin thú vị cho nhau và cho phép mọi người có thể những người bạn mới hoặc gặp đối tác làm ăn,vv… Apach là một trong những công nghệ mạnh nhất hiện này, với việc cấu hình thành công Apache cũng như giải quyết các vấn đề liên quan trợ giúp rất tốt khi triển khai xây dựng các ứng dụng khác.
KẾT LUẬN
Đồ án đã xây dựng được chương trình theo đúng các bước và yêu cầu mà bài toán đã đặt ra ban đầu. Các chương trình có những ưu, nhược điểm sau:
Ưu điểm:
Nghiên cứu cơ sở lý thuyết và cơ chế hoạt động của DHCP, DNS, APACHE từ đó xây dựng quy trình chung cho việc xây dựng các ứng dụng không chỉ trên hệ điều hành Linux mà trong mọi hệ điều hành khác.
Cấu hình được các ứng dụng và đã chạy thử chương trình thành công. Hình thành các bước cơ bản để xây dựng các ứng dụng trong hệ điều hành Linux nói chung.
Có thể triển khai các ứng dụng DHCP, DNS, Apache ngay vào trong thực tế. Nhược điểm:
Phần cấu hình phía khách (client) chưa hoàn thiện. Do thời gian không cho phép nên phần cấu hình cho các máy khách chưa thể sử dụng được các ứng dụng như đã đề cập ở trên.
Khi cấu hình các ứng dụng trên các hệ điều hành khác hay bản khác của Fedora có thể phải thay đổi cách cấu hình.
Hướng phát triển trong tương lai:
Hoàn thiện phần cấu hình ở phía khách (client) cho các ứng dụng.
Cấu hình các ứng dụng khác dựa trên nền các ứng dụng trên như: TFTP, Sendmail, Samba,...
Do thời gian nghiên cứu và làm đồ án có hạn và trình độ bản thân còn hạn chế nên đồ án không thể tránh khỏi những thiếu sót. Em rất mong được sự đóng góp ý kiến của các thầy cô giáo và các bạn. Một lần nữa em xin chân thành cảm ơn các thầy, cô giáo khoa Công nghệ thông tin trường Đại học Xây dựng và đặc biệt là Thạc sĩ Bùi Thanh Hương đã giúp đỡ em hoàn thành đồ án này!
TÀI LIỆU THAM KHẢO
Tài liệu tiếng Việt
1. Nguyễn Thúc Hải (1999), Mạng máy tính và các hệ thống mở, NXB Giáo dục, Hà Nội
2. Nguyễn Thanh Thuỷ (2000), Nhập môn hệ điều hành Linux, NXB KH&KT, Hà Nội
Tài liệu tiếng Anh
1. Bud Millwood (2004), DHCP Turbo Administrator’s Guide, http://www.weird.solutions.com
2. Gerhard Mourani (2000), Securing and Optimizing Linux, Open Network Architecture ® and OpenDocs Publishing
3. Không biết tên, Apache web server administration, Publisher International Technology Solutions, Inc (2001)
4. Matt Welsh, Phil Hughes,... (1998), Linux Installation and Getting Started, http://ssc.com
5. Olaf Kirch (1994), The Linux Network Administrator’s Guide, okir@monad.swb.de
6. Patric Volkerding, Kevin Reichard,...(2001), Linux Configuration and Installation, Publisher IDG Books Worldwide, Inc.
Trang Web 1. http:// www.manguon.com 2. http://www.apache.org 3. http:// www.cisco.com 4. http://www.linuxhomenetworking.com 5. http://www.redhat.com