Tìm kiếm và cài đặt gói Apache

Một phần của tài liệu Đồ án xây dựng cấu hình các ứng dụng phía server trong hệ điều hành linux fedora 5 0 (Trang 72)

4.2.1 Tìm kiếm gói Linux Apache

Trước khi có thể cài đặt được web server apache, tất nhiên phải có gói apache, những gói apache mới nhất cập nhật nhất thường được download từ Internet ở trang web: http://httpd.apache.org hoặc http://www.apache.org. Một số trình duyệt web như Firefox sẽ tự động download về desktop của máy tính. Với hệ điều hành MS Windows

Bên cạnh đó có thể sử dụng giao thức truyền file FTP (File Transfer Protocol) để có thể nhận được các gói apache. Riêng với Fedora cũng có thể download từ trang:http://download.fedora.com, điều rất thuận tiện và rất đáng chú ý ở đây đó là tất cả các bản của apache đều là miễn phí.

Phần lớn các sản phẩm phần mềm Linux Redhat và Fedora đều có định dạng là RPM (Redhat Package Management). Khi tìm kiếm các file, cần chú ý tên của các file Apache RPM thường bắt đầu bằng httpd tiếp theo là số version ví dụ: httpd_2.0.48_ 1.2.rpm.

Đối với bản Linux Redhat Fedora 5.0 trên thị trường hiện nay rất phổ biến, chỉ cần bỏ ra một số chi phí nhỏ là mgười dùng đã có ngay bộ đĩa gồm 5 đĩa chứa tất cả các gói dịch vụ cho Linux. Chính vì sự dễ dàng và nhanh chóng như vậy mà hiện nay phần lớn người dùng Linux thường chọn phương pháp này để có các gói dịch vụ cho PC của mình. Gói apache trong bản Ferdora 5.0 có tên là: httpd_2.2.0_5.1.2.i386.rpm nằm trong thư mục: /media/disk/Fedora/RPMS của đĩa thứ nhất.

4.2.2 Cài đặt gói Linux Apache

Bây giờ khi đã có gói Linux Apache rồi, trước khi có thể sử dụng Apache server cần phải tiến hành cài đặt phần mềm server vào PC. Qua bước tìm kiếm gói Linux Apache ở trên lúc này nó được đạt ở 2 nơi: trên ổ cứng của PC (do download hoặc copy) hoặc trong ổ CD.ROM. Với cách cài đặt bằng các câu lệnh thì các bước hoàn toàn như cách cài đặt gói DHCP đã nói ở chương 2. Nhưng bên cạnh cách cấu hình như trên, có thể cài trực tiếp vào máy từ gói apache trong đĩa CD.ROM hoặc trên ổ cứng và tiến hành cài đặt như các phần mềm trong hệ điều hành Windows bình thường.

4.3 Khởi động Apache

Có thể dùng một trong hai cách để khởi động apache: sử dụng câu lệnh dạng câu lệnh bẳng cửa sổ terminal hoặc là dùng của sổ service của trình quản lí của sổ (windown manager) trong Fedora đồ họa.

4.3.1 Khởi động Apache bằng câu lệnh

Sau khi đã cài đặt thành công apache dùng lệnh chkconfig để khởi động apache:

[root@ dhxd tmp]# chkconfig httpd on

Câu lệnh này sẽ khởi động hệ thống lần đầu tiên khi nó đã được cấu hình đầy đủ, sau lần đầu không cần dùng lệnh này nữa. Khi đó muốn khởi động lại các dịch vụ của máy chủ DHCP có thể dùng tập lệnh httpd trong thư mục /etc/init.d hoặc service httpd on để có thể thực hiện các yêu cầu như start, stop, restart,..

Hình 4.1: Điều khiển Apache qua các lệnh

[root@dhxd tmp]# /etc/init.d/httpd start [root@dhxd tmp]# service httpd start

Lệnh có tác dụng khởi động máy chủ httpd

[root@dhxd tmp]# /etc/init.d/httpd stop: Sử dụng lệnh này các tiến trình hoạt động của máy chủ httpd sẽ dừng lại.

[root@dhxd tmp]# /etc/init.d/httpd stop [root@dhxd tmp]# service httpd stop

Lệnh này sẽ dừng tất cả các tiến trình đang hoạt động trong máy chủ HTTPD

[root@dhxd tmp]# /etc/init.d/httpd restart [root@dhxd tmp]#service httpd restart

Câu lệnh này là tổ hợp của 2 câu lệnh trên tức là dù bất kỳ trạng thái của hệ thống như thế nào các tiến trình sẽ phải dừng lại hoàn toàn (tác dụng như lệnh stop) sau đó khởi động lại (tác dụng như câu lệnh start).

[root@dhxd tmp]# /etc/init.d/httpd condrestart [root@dhxd tmp]#service httpd condrestart

[root@dhxd tmp]# /etc/init.d/httpd configtest [root@dhxd tmp]# service httpd configtest

Dùng cho người quản trị kiểm tra cấu hình của httpd đã chính xác chưa.

[root@dhxd tmp]# /etc/init.d/httpd status [root@dhxd tmp]#service httpd status

Hoặc: [root@dhxd tmp]# /etc/init.d/httpd fullstatus [root@dhxd tmp]#service httpd fullstatus

[root@dhxd tmp]# /etc/init.d/httpd help [root@dhxd tmp]#service httpd help

Có tác dụng như lời chỉ dẫn trong Windows khi người quản trị gặp khó khăn trong quá trình cấu hình. Để kiểm tra quá trình hoạt động của apache dùng lệnh sau:

[root@dhxd tmp]# pgrep httpd

Sau khi nhập câu lệnh trên hệ thống sẽ cho ra một danh sách các số ID các tiến trình đang hoạt động. Cần chú ý là chỉ người quản trị hệ thống (hoặc những người đăng nhập vào hệ thốngd với account là root) mới có thể thực hiện các công việc và các lệnh trên. Đối với người dùng thông thường sẽ không thể thực hiện các thao tác như khởi động, tạm dừng,… apache server như trên.

4.3.2 Khởi động Apache bằng cửa sổ service

Với giao diện đồ hoạ của Fedora việc khởi động cũng như quản trị apache server trở nên đơn giản và trực quan hơn nhiều. Chỉ cần nhấp chuột vào biểu tượng có tên là

services sẽ xuất hiện một cửa sổ chứa tất cả các dịch vụ mà hệ điều hành hỗ trợ có

giao diện như sau:

Hình 4.2: Cửa sổ điều khiểnApache

Việc khởi động apache chỉ đơn giản là kích vào dịch vụ: httpd trong lựa chọn bên trái cửa sổ sau đó kích chuột vào biểu tượng Start là apache server đã được kích hoạt. Bên phải cửa sổ phía bên trên là miêu tả về dịch vụ mà vừa sử dụng, còn bên dưới là trạng thái của dịch vụ mà vừa kích hoạt. Tác dụng của các nút công cụ: Start, Stop, Restart hoàn toàn tương tự như các câu lệnh:

Đây là nơi có thể kiểm tra sự hoạt động của apache, chức năng tương tự như lệnh:

4.4 Cấu hình DNS và DHCP cho Apache

Webserver Apache sẽ không thể hoạt động chính xác nếu như không cấu hình DNS cho miền mà apache sử dụng trong Linux, tức là phải khai báo địa chỉ của thiết bị kết nối mạng mà apache đang được cấu hình với tên miền mà apache đang sử dụng để khi người dùng truy cập tới trang web bằng tên dạng text có thể được chuyển sang dạng địa chỉ IP để hệ thống có thể làm việc được. Các bước cấu hình DNS cũng như khai báo tên miền và địa chỉ IP đã được trình bày chi tiết trong chương 3.

Đề cập đến địa chỉ IP mà thiết bị mạng nhận được thì không thể không nhắc tới DHCP bởi nếu địa chỉ của thiết bị mạng là địa chỉ tĩnh thì vấn đề không khó nhưng nếu địa chỉ được cung cấp là động thì phải cấu hình DHCP cho Linux. Người dùng sẽ phải đồng bộ các địa chỉ IP mà DHCP cung cấp cho hệ thống với địa chỉ IP mà DNS sử dụng. Các bước cấu hình DHCP cũng đã được trình bày cụ thể ở chương 2 của báo cáo nên không trình bày lại.

4.5 Các bước cấu hình Apache

File cấu hình được sử dụng cho Apache trong hệ điều hành Linux Fedora 5.0 là:

/etc/httpd/conf/httpd.conf và như phần lớn các ứng dụng khác trong Linux người dùng

phải khởi động lại hệ thống sau khi đã hoàn thành việc cấu hình thì nội dung cấu hình mới hiệu dụng.

4.5.1 Vị trí đặt trang Web

Tất cả các khai báo dùng để định nghĩa các tính năng cho mỗi website được phân thành nhóm cùng nhau ở bên trong đoạn mã <VirtualHost>, hoặc có trong file:

httpd.conf. Trong đoạn mã <VituralHost> thường chứa:

Servername: Định nghĩa tên của các website

DocumentRoot: Định nghĩa thư mục nơi các trang web đặt ở đó

Mặc định, Apache tìm thư mục DocumentRoot từ phần mục lục, hoặc trang

index.html. Ví dụ, nếu có một servername là: www.my_site.com với thư mục

DocumentRoot là: /home/www/site1 thì Apache sẽ hiển thị nội dung của file:

/home/www/site1/index.html đó là nơi mà trình duyệt web sẽ hiển thị nội dung trang

web: http://www.my_site.com. Có một vài trình soạn thảo như Microsoft FrontPage tạo các file với đuôi mở rộng là: “.htm” chứ không phải là: “.html” như FrontPage. Vấn đề xuất hiện đó là Apache không chấp nhận trang mục lục với đuôi mở rộng như vậy khi đó để giải quyết vấn đề đó là phải tạo một liên kết giữa 2 file này để apache có thể hiểu được nội dung của 2 trang đó là như nhau. Dưới đây là minh hoạ cho việc tạo một liên kết tới file:

[root@dhxd tmp]# cd /home/www/site1

[root@dhxd site1]# ln 9s index.htm index.html [root@dhxd site1]# ll index.*

9rw9rw9r99 1 root root 48590 Jun 18 23:43 index.htm

lrwxrwxrwx 1 root root 9 Jun 21 18:05 index.html 9> index.htm [root@dhxd site1]#

4.5.1.1 Vị trí đặt file mặc định

Mặc định, Apache tìm tất cả các file của trang web trong thư mục: /var/www/html/.

Trong các ví dụ sẽ sử dụng thư mục” /home/www để minh hoạ cách người dùng có thể đặt các file trang web ở các vị trí khác nhau.

4.5.1.2 File Permissions

Apache sẽ hiển thị các file trang web ngay khi chúng có thể đọc được nhưng trước đó phải chắc chắn rằng tất cả các file và các thư mục con trong thư mục DocumentRoot có được sự cho phép (permission). Nó là một giải pháp để giải quyết vấn đề nảy sinh khi một người dùng (không phải là người quản trị hệ thống) được phép dùng các dịch vụ như FTP hay SCP mà không cần phải nhập mật mã của người quản trị hệ thống khi họ muốn cập nhật các file.

Để thực hiện được việc này, cần thực hiện các bước sau: . Tạo một tài khoản với thư mục chủ là: /home/www

. Gộp tất cả các file trong thư mục: /home/www và các thư mục con cùng một quyền sở hữu

. Thay đổi sự cho phép trong thư mục: /home/www tới 755, khi đó cho phép tất cả người dùng bao gồm cả apache có thể đọc các file trong thư mục đó.

Câu lệnh như sau:

[root@dhxd tmp]# useradd 9g users www

[root@dhxd tmp]# chown 9R www:users /home/www [root@dhxd tmp]# chmod 755 /home/www

Để kiểm tra quyền sở hữu mới có thể sử dụng lệnh ll như sau:

[root@dhxd tmp]# ll /home/www/site1/index.*

9rw9rw9r99 1 www users 48590 Jun 25 23:43 index.htm

lrwxrwxrwx 1 www users 9 Jun 25 18:05 index.html 9> index.htm [root@dhxd tmp]#

4.5.1.3 Bảo mật nội dung cho các trang Web

Bắt đầu từ bản Fedora 3.0 đã giới thiệu các công cụ cơ bản về bảo mật đó là định nghĩa nâng cao bảo mật cho Linux (SELinux–Sercurity Enhanced Linux). Sử dụng các tính năng bảo mật này trong chế độ Linux đồ hoạ với giao diện như sau:

Hình 4.3: Cửa sổ SELinux

Một trang web có thể có được sự cho phép (permission) đúng nhưng apache sẽ không thể đọc được nếu như người dùng gán nội dung bảo mật với deamon không khớp nhau, khi đó sẽ có thông báo: “403 Forbidden”. Khi một file được tạo ra, nó sẽ thừa kế các nội dung bảo mật của thư mục do vậy nếu đặt các trang Web tại thư mục mặc định: /var/www/ thì chúng sẽ thừa hưởng nội dung bảo mật của thư mục đó tức là thư mục mặc định được hệ thống lựa chọn trước và như vậy người dùng đặc biệt là những người mới có thể tránh được rất nhiều các lỗi khi làm việc.

4.5.1.4 Bảng nhãn file ngữ cảnh bảo mật SELinux

Mã HTTP Miêu tả

httpd_sys_script_ro_t Sử dụng cho các tập lệnh CGI để đọc các file và các thư mục

httpd_sys_script_ra_t Tương tự như: “httpd_sys_script_ro_t“ nhưng cho phép nối thêm dữ liệu tới các file bằng tập lệnh CGI httpd_sys_script_rw_t Các file với kiểu này có thể được thay đổi bằng một

tập lệnh CGI bao gồm xoá bỏ.

httpd_sys_script_exec_t Kiểu này yêu cầu để chạy các tập lệnh CGI

Bảng 4.1: Bảng nhãn file ngữ cảnh bảo mật SELinux

4.5.1.5 Bảo mật cho tập lệnh CGI

Có thể dùng Apache để ngay lập tức thi hành các chương trình bởi các tập lệnh CGI (Common Gateway Interface) .Các tập lệnh CGI có thể được viết bởi nhiều ngôn ngữ khác nhau như Perl hay PHP và được dùng để xuất một trang Web mới hay cập nhật các file dữ liệu. Mặc định các tập lệnh CGI được đặt trong thư mục:

/var/www/cgi_bin/ và người dùng có thể tìm thấy đường dẫn đó từ nội dung của file:

httpd.conf.

Trong trường hợp mặc định một số URL với chuỗi ký tự: /cgi_bin/ sẽ ngay lập tức Apache tìm một tệp tin thi hành tương đương trong thư mụ đó. Ví dụ, với URL:

http://192.168.1.100/cgi_bin/test/test.cgi thì Apache sẽ thi hành tập lệnh:

/var/www/cgi_bin/test/test.cgi.SELinux phải được sửa đổi theo giá trị như trong bảng

nhãn file ngữ cảnh bảo mật SELinux cho mỗi tập lệnh CGI để chạy trong thư mục khác hoặc để truy cập các file dữ liệu. Ví dụ, tập lệnh test.cgi viết bằng ngôn ngữ PERL đã được tạo để hiển thị từ “Khoa CNTT.Truong DHXD” như sau:

#!/usr/bin/perl

# CGI Script "test.cgi" print qq(

<html> <head>

<meta http_equiv="Content_Language" content="en_us"> <meta http_equiv="Content_Type" content="text/html"> <title>Linux Home Networking</title>

</head> <body>

</body> </html> );

Trong ví dụ trên sử dụng câu lệnh ScriptAlias đã chỉ tới thư mục: /home/www/cgi. bin/ thay cho thư mục: /var/www/cgi_bin/ như mặc định.

ScriptAlias /cgi9bin/ "/home/www/cgi9bin/"

Người quản trị hệ thống tạo thư mục: /home/www/cgi_bin/, thay đổi nhãn bảo mật với

mã: httpd_sys_script_exec_t, và sau đó tạo tập lệnh: /home/cgi_bin/test/test.cgi với tập

tin chạy cho phép chính xác:

[root@dhxd tmp]# mkdir 9p /home/www/cgi9bin/test

[root@dhxd tmp]# chcon 9h 9t httpd_sys_script_exec_t /home/www/cgi9bin/ [root@dhxd tmp]# mkdir /home/www/cgi9bin/test

[root@dhxd tmp]# ls 9Z /home/www/cgi9bin

drwxr9xr9x root root root:object_r:httpd_sys_script_exec_t test [root@dhxd tmp]# vi /home/www/cgi9bin/test/test.cgi

[root@dhxd tmp]# chmod o+x /home/www/cgi9bin/test/test.cgi [root@dhxd tmp]#

Có một vấn đề nảy sinh khi tồn tại file: test.cgi được dùng cho website thứ 2 nào đó trong cùng một webserver. File đã được sao chép tới thư mục: /web/cgi_bin/site2/ bởi ScriptAlias trong website thứ 2 nhưng ngữ cảnh bảo mật thì không được sao chép cùng với nó.

File đó thừa kế ngữ cảnh của thư mục mà nó nằm trong đó.

[root@dhxd tmp]# cp /home/www/cgi9bin/test/test.cgi /web/cgi9bin/site2/test.cgi [root@dhxd tmp]# ls 9Z /web/cgi9bin/site2/test.cgi

9rw9r99r9x root root root:object_r:tmp_t /web/cgi9bin/site2/test.cgi [root@dhxd tmp]#

File permission không cho phép và thông báo lỗi lại xuất hiện, khi đó người dùng có thể sửa chữa chỉ bằng cách thay đổi ngữ cảnh bảo mật của file: test.cgi như sau:

[root@dhxd tmp]# tail /var/log/httpd/error_log

[Fri Dec 24 18:36:08 2004] [error] [client 216.10.119.250] (13)Permission denied: access to /cgi9bin/texcelon/test.cgi denied

Dec 24 18:36:08 dhxd kernel: audit(1103942168.549:0): avc: denied { getattr } for pid=2191 exe=/usr/sbin/httpd path=/web/cgi9bin/site2/test.cgi dev=hda5 ino=77491 scontext=system_u:system_r:httpd_t tcontext=root:object_r:tmp_t tclass=file

[root@dhxd tmp]#

4.5.2 Named Virtual Hosting

Có thể làm cho web server host nhiều hơn 1 site cho mỗi địa chỉ IP bằng cách sử dụng tính năng đặt tên ảo cho host (named virtual hosting). Sử dụng NameVirtualHost để hướng dẫn file: /etc/httpd/conf/httpd.conf nói cho Apache địa chỉ IP nào sẽ tham gia trong tính năng đó. <VirtualHost> chứa trong file sau đó nói cho Apache vị trí nó sẽ tìm kiếm các trang web được dùng trên mỗi trang web, yêu cầu phải định rõ địa chỉ IP cho mỗi <VirtualHost> thực thi.

Ví dụ: Có một server được cấu hình để hỗ trợ nội dung trên địa chỉ 97.158.253.26. Trong đoạn mã dưới đây chú ý rằng trong mỗi <VirtualHost> định rõ tên miền website chính cho địa chỉ IP đó với SernerName. DocumentRoot định nghĩa thư mục mà chứa trang index cho trang web đó. Cũng có thể liệt kê tên miền thứ 2 mà sẽ phục vụ cùng nội dung như ServerName sử dụng ServerAlias. Apache kiểm tra các thông tin về NameVirtualHost, <VirtualHost>, và ServerName có chính xác không khi tạo một quyết định chọn nội dung nào để gửi tới trình duyệt của người dùng ở xa. Nếu không chính xác, sau đó Apache sử dụng <VirtualHost> đầu tiên trong danh sách mà phù hợp với địa chỉ IP của yêu cầu. Đó chính là lý do giải thích tại sao các thông số của <VirtualHost> đầu tiên chứa một dấu hoa thị (*) để chỉ ra rằng nó sẽ được dùng cho tất cả các truy vấn của các web khác.

NameVirtualHost 97.158.253.26 <VirtualHost *>

Default Directives. (In other words, not site #1 or site #2) </VirtualHost>

<VirtualHost 97.158.253.26> servername www.my_site.com Directives for site #1

</VirtualHost>

<VirtualHost 97.158.253.26> servername www.another_site.com Directives for site #2

</VirtualHost>

Cũng có thể có nhiều NameVirtualHost tức là mỗi NameVirtualHost tương ứng với

Một phần của tài liệu Đồ án xây dựng cấu hình các ứng dụng phía server trong hệ điều hành linux fedora 5 0 (Trang 72)

Tải bản đầy đủ (PDF)

(95 trang)