21.1.1 Giới thiệu.
Apache: web server phổ biến nhất, chiếm 2/3 tổng số web server hiện nay (theo thống kê của Netcraft, http://www.netcraft.com).
Apache là một phần mềm có hiều tính năng mạnh và linh hoạt dùng để làm Webserver. Hỗ trợ đầy đủ những giao thức HTT trước đây như HTTP/1.1.
Có thể cấu hình và mở rông với những module của công ty thứ 3. Cung cấp source code đầy đủ với license không hạn chế.
Chạy trên nhiều hệ điều hành như Windows NT/9x, Netware 5.x, OS/2 và trên hầu hết các hệ điều hành Unix.
Để sử dụng Fedora Core như một web server, bạn thực hiện theo các bước sau: Cài đặt Apache.
Cài đặt công cụ system-config-httpd để cấu hình Apache web server
Cấu hình Linux để tự động khởi động Apache web server khi khởi động hệ thống. Cấu hình firewall của Linux để cho phép trao đổi các yêu cầu của web.
21.1.2 Cài đặt.
Có hai cách để cài đặt Apache: Cài đặt từ nguồn:
Chúng ta có thể download gói tin httpd-2.2.3.tar.gz từ trên mạng. Nếu sử dụng gói.gz thì dùng lệnh: tar xvzf httpd-***.tar.gz để giải nén. Vào thư mục vừa giải mã, sau đó sử dụng các lệnh để cài đặt:
#./configure #make #make install Cài đặt từ đĩa CD:
Dùng câu lệnh sau để cài đặt Apache từ đĩa CD:
#rpm -ivh /media/CentOS/httpd-2.2.3-31.el5.centos.i386.rpm
21.1.3 Cấu hình.
Khởi động dịch vụ.
Mặc định thì dịch vụ Apache chưa được kích hoạt. Để khởi động, sử dụng công cụ hoặc dùng dòng lệnh:
# service httpd start
Để chắc chắn là Apache sẽ khởi động mỗi lần hệ thống boot, hãy enable dịch vụ Apach bằng câu lệnh:
Hệ điều hành mã nguồn mở
Trang 104 #chkconfig httpd on
Khi thay đổi cấu hình của Apache, bạn phải reload lại Apache bằng dòng lệnh: # service httpd reload
Kiểm tra Apache.
Dùng trình duyệt web có sẵn trong Linux như Firefox, truy cập vào địa chỉ http://localhost, bạn sẽ thấy trang web hiện ra như sau:
Hình 21.1: Kiểm tra hoạt động của apache.
Bạn có thể truy cập vào trang web trên server từ xa thông qua địa chỉ IP của server (ví dụ như http://192.168.1.1/), hoặc nếu như dịch vụ DNS có hổ trợ thì bạn có thể truy cập thông qua hostname của server (ví dụ như http://linuxgroup.com/)
Các tham số trong tập tin cấu hình httpd.conf. Global Environment.
ServerRoot: nơi đặt tập tin cấu hình
Cú pháp: ServerRoot <đường_dẫn_thư_mục> Ví dụ: ServerRoot “/etc/httpd”
Listen: quy định địa chỉ IP hoặc cổng mà web server nhận kết nối từ client. Cú pháp: Listen <IP:port>
Ví dụ: Listen 8080 #cổng 80 ở tất cả các card mạng. Listen 192.168.5.6:8080 #công 8080 của 1 card mạng.
TimeOut <time>: qui định thời gian sống của một kết nối (tính bằng giây). Ví dụ: TimeOut 300
KeepAlive <On/Off>: 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 với web server
Hệ điều hành mã nguồn mở
Trang 105 Ví du: KeepAlive On
MaxKeepAliveRequest <số_request>: số tối đa của request trên một kết nối (nếu cho phép nhiều Request trên một kết nối)
Ví du: MaxKeepAliveRequest 100
KeepAliveTimeOut <time>: qui định thời gian để chờ cho một Request kế tiếp từ cùng một client trên cùng một kết nối (được tinh bằng giây)
Ví dụ: KeepAliveTimeOut 15
MaxClients <number>: qui định số yêu cầu tối đa từ các client gửi đồng thời đến server Ví du: MaxClients 256
BindAddress <IP/*>: qui định địa chỉ card mạng để chạy Apache trên server. Sử dụng dấu “ * ” để có thể sử dụng tất cả các địa chỉ có trên máy.
Ví dụ: BindAddress 192.168.5.5 Mặc định là: BindAddress * Main' server configuration. User apache
Group apache
ServerAdmin < email>: địa chỉ email của người quản trị website Ví dụ: ServerAdmin root@linuxgroup.com
ServerName <name/IP> tên hoặc địa chỉ của Ví du: ServerName www.linuxgroup.com DocumentRoot <path>: nơi đặt dữ liệu web Ví dụ: DocumentRoot /var/www/html
# cấu hình server mặc định (xem DocumentRoot) <directory></directory>var/www/html"> Options Indexes FollowSymLinks AllowOverride AuthConfig Limit # cho phép mọi người xem trang web chính Order allow,deny
Allow from all <ifmodule>
# không sử dụng: UserDir disable
# trường hợp sử dụng: chỉ định nơi đặt dữ liệu # UserDir public_html
</ifmodule>
+ ServerSignature Off: không hiển thị thông tin về server + AddDefaultCharset UTF-8: bộ mã mặc định
+ DirectoryIndex <danh_sách_tập_tin>: các tập tin mặc định khi truy cập tên website. Ví dụ: DirectoryIndex index.html index.html index.php index.cgi
+ ErrorLog <vị_trí_tập_tin_log>: chỉ định tập tin để server ghi vào bất kỳ những lỗi mà nó gặp phải.
Hệ điều hành mã nguồn mở
Trang 106 Ví dụ: ErrorLog logs/error_log
+ Nếu đường dẫn không có dấu / thì vị trí tập tin log liên quan đến ServerRoot
+ Alias <đường_dẫn_http> <đường_dẫn_cục_bộ>: ánh xạ đường dẫn cục bộ (không nằm trong DocumentRoot) thành đường dẫn http
Ví dụ: Alias /manual /var/www/manual
+ Để giới hạn việc truy cập củangười dùng, ta có thể kết hợp với các khai báo Directory như ví dụ sau:
Alias /manual /var/www/manual <Directory /var/www/manual> AuthType Basic
AuthName intranet
AuthUserFile /etc/httpd/passwd Require user <user cần chứng thực> Allow from linuxgroup.com </Directory>
+ UserDir: cho phép người dùng tạo Homepage của minh lên server Ví dụ: UserDir www
<Directory /home/mimi/www> Order deny,allow Allow from all </Directory>
+ Trong thư mục home directory của người dùng mimi tạo thư mục www. Khi đó cú pháp truy cập từ web browser là http://www.linuxgroup.com/~mimi
Virtual Hosts:
Là tinh 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.
Named-based Virtual Hosts: 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 miền khác nhau.
Ví dụ: Tạo ra 2 web server www.domain1.linuxgroup.com www.domain2.linuxgroup.com
trên một máy tính có IP 192.168.5.5 như sau: # cho http (cổng 8080) NameVirtualHost *:8080 <virtualhost 192.168.5.5> ServerName www.domain1.linuxgroup.com DocumentRoot /var/www/domain1 ServerAdmin domain1@linuxgroup.com ErrorLog /var/log/httpd/A/error_log
CustomLog /var/log/httpd/A/access_log combined <directory></directory>var/www/domain1"> AllowOverride AuthConfig Limit
</virtualhost>
<virtualhost 192.168.5.5>
Hệ điều hành mã nguồn mở
Trang 107 # gõ http://domain2.linuxgroup.com sẽ chuyển đến
http://www.domain2.linuxgroup.com
ServerAlias domain2.linuxgroup.com *.domain2.linuxgroup.com DocumentRoot /var/www/domain2
ServerAdmin domain2@linuxgroup.com ErrorLog /var/log/httpd/B/error_log
CustomLog /var/log/httpd/B/access_log combined <directory></directory>var/www/domain2">
AllowOverride AuthConfig FileInfo Limit Options </virtualhost>
+ Lưu ý: Phải cấu hình DNS phân giải 2 tên miền www.domain1.linuxgroup.com
www.domain2.linuxgroup.com về cùng một địa chỉ 192.168.5.5 Cấu hình SSL/TLS.
Tiếp theo, khai báo IP và port trong httpd.conf # cho https (cổng 443)
NameVirtualHost 192.168.5.15:443 # trang web https://www.A-domain.name # tham khảo file /etc/httpd/conf.d/ssl.conf
<virtualhost> ServerName www.A-domain.name DocumentRoot /var/www/html ServerAdmin webmaster@A-domain.name ErrorLog /var/log/httpd/A/error_log CustomLog /var/log/httpd/access_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL <files> SSLOptions +StdEnvVars </files> <directory></directory>var/www/cgi-bin"> SSLOptions +StdEnvVars SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key </virtualhost> Cấu hình truy cập.
Apache sử dụng đường dẫn thư mục để kiểm soát sự truy cập vào thư mục trên hệ thống máy tình của bạn. Thư mục root được cấu hình đầu tiên:
<Directory />
Options FollowSymLinks AllowOverride None </Directory>
Chỉ dẫn Option gồm các trạng thái: nó chỉ rõ quền của các thư mục này. Trong trường hợp này, tất cả các sự truy cập vào thư mục root và các thư mục con, toàn bộ hệ thống ngăn cấm truy cập vào các đường dẫn.
Hệ điều hành mã nguồn mở
Trang 108 Thư mục chứa trong thư mục /var/www/html và các thư mục con của nó:
<Directory "/var/www/html"> Options Indexes FollowSymLink AllowOverride None
Order Allow,Deny Allow from all </Directory>
Các giá trị của Option được lựa chọn trong danh sách sau: All: Mặc định, cho phép mọi sự truy cập cho Multiview. ExecCGI: Cho phép thực thi các đoạn Script.
FollowSymLinks, SymLinksIfOwnerMatch: Nếu FollowSynLinks đuợc định nghĩa Apache sẽ theo ký hiệu lêin kết dẫn tới hoặc từ thư mục nào. Nếu SymLinksIfOwnerMatch đựơc định nghĩa, các liên kết và các đường phải thuộc vào cùng user.
Includes, IncludesNoExec: Một file có thế bao gồm (Includes) một file khác, có hoặc không có khả năng (Includes và IncludesNoExec, theo thứ tự) để thực thi các file khác. Các file sử dụng đặc điểm này phải có tên file với phần mở rộng là.shtml và có thể bao gồm các chỉ dẫn ví dụ như <!-- #include virtual="footer.html" --> hoặc <!--#exec cmd="/usr/bin/cal" --> để thêm file footer.html hoặc xuất ra dòng lệnh, theo thứ tự.
Indexes: Một trang Index.html thường được đáp ứng như một chỉ mục cho thư mục. Cài đặt và cấu hình Mysql và php.
Bạn đưa đĩa cd cài đặt CentOS 5.4 vào ổ cd Mount đĩa cd bằng lệnh: mount /dev/cdrom /media/ Sử dụng lệnh rpm cài đặt các gói sau:
Cài đặt mysql: rpm -ivh mysql-bench-4.11.1-2.rpm rpm -ivh mysql-4.11.1-2.rpm rpm -ivh mysqlclient10-3.23.58-6.rpm rpm -ivh mysql-server-4.11.1-2.rpm Cài đặt php: rpm -ivh php-mysql-5.0.4-10.rpm rpm -ivh php-5.0.4-10.rpm rpm -ivh php-ldap-5.0.4-10.rpm rpm -ivh php-pear-5.0.4-10.rpm Cấu hình mysql:
Tạo nhóm (nhóm này có tên là mysql) groupadd mysql
Tạo tài khoản người dùng useradd -g mysql mysql
Cấp quyền cho người dùng mysql chown -R root /usr/local/mysql chown -R mysql /usr/local/mysql/var chgrp -R mysql /usr/local/mysql
Hệ điều hành mã nguồn mở
Trang 109 Đến đây việc cài Mysql đã hoàn tất. Chạy tiếp để test MySQL
Gọi lệnh để khởi động /tắt/khởi động lại dịch vụ mysqld /etc/init.d/mysqld start/stop/restart
Gọi lệnh "mysqladmin version" để kiểm tra số phiên bản
Hình 21.2: Kiểm tra số phiên bản.
Chú ý:
Kiểm tra file mysql.sock có thể nó không tồn tại
Kiểm tra file /etc/my.cnf và thay đổi đường dẫn chứa file mysql.sock Để tạo password mới (ví dụ như root)
mysqladmin -u root password root
Nếu bạn sử dụng trên domain thì có thể sử dụng:
mysqladmin -u root -h linuxgroup.com root linuxgroupadmin
Bây giờ bạn hãy truy cập vào mysql thử xem bằng tài khoản root như sau:
Hình 21.3: Truy cập vào Mysql.
Cấu hình php:
Mở tập tin cấu hình webserver /etc/httpd/conf/httpd.conf tìm dòng AddModule, thêm vào dòng sau: AddModule mod_php5.c
Hệ điều hành mã nguồn mở
Trang 110 LoadModule php5_module libexec/libphp5.so
Tìm dòng <IfModule mod_dir.c> thay đổi nó thành <IfModule mod_dir.c>
DirectoryIndex index.php default.php index.html index.htm </IfModule>
Tạo tập tin default.php trong thư mục /var/www/html và chạy thử như sau: echo "<html><body><?hello world ?></body></html>" >
"/var/www/html/index.php”
Hình 21.4: Gọi trang default.php.
Tập tin cấu hình chính của PHP là /etc/php.ini