Web服務的配置與應用

WWW的目的就是使信息更易於獲取,而不管它們的地理位置在哪裏。當使用超文本作爲WWW文檔的標準格式後,人們開發了可以快速獲取這些超文本文檔的協議——HTTP協議,即超文本傳輸協議。
HTTP是應用級的協議,主要用於分佈式、協作的信息系統。HTTP協議是通用的、無狀態的,其系統的建設和傳輸與數據無關。HTTP也是面向對象的協議,可以用於各種任務,包括名字服務、分佈式對象管理、請求方法的擴展、命令等。

在Internet上,HTTP通信往往發生在TCP/IP連接上,其默認的端口爲80,也可以使用其他端口。


Web服務的實現採用客戶/服務器模型。
客戶機運行WWW客戶程序——瀏覽器,它提供良好、統一的用戶界面。瀏覽器的作用是解釋和顯示Web頁面,響應用戶的輸入請求,並通過HTTP協議將用戶請求傳遞給Web服務器。
Web服務器運行服務器程序,它最基本的功能是偵聽和響應客戶端的HTTP請求,向客戶端發出請求處理結果信息。
Web服務通常可以分爲兩種:靜態Web服務和動態Web服務。


Web瀏覽器使用HTTP命令向一個
特定的服務器發出Web頁面請求。
若該服務器在特定端口(通常是
TCP 80端口)處接收到Web頁面
請求後,就發送一個應答並在客戶
和服務器之間建立連接
服務器Web查找客戶端所需文檔,
若Web服務器查找到所請求的文檔,
就會將所請求的文檔傳送給Web瀏
覽器。若該文檔不存在,則服務器
會發送一個相應的錯誤提示文檔給
客戶端。Web瀏覽器接收到文檔後
,就將它顯示出來。
當客戶端瀏覽完成後,就斷開與
服務器的連接。



開放源代碼的Apache(阿帕奇)服務器起初由Illinois大學Urbana-Champaign的國家高級計算程序中心開發,後來Apache被開放源代碼團體的成員不斷地發展和加強。漸漸地,它開始在功能和速度上超越其他Web服務器。由於Apache服務器擁有牢靠可信的美譽,因此從1995年1月以來,Apache一直是Internet上最流行的Web服務器。


後臺進程:httpd
腳本:/etc/rc.d/init.d/httpd
使用端口:80(http),443(https)
所需RPM包:httpd
配置路徑:/etc/httpd/conf/httpd.conf
默認網站存放路徑:/var/www/html/


安裝好Apache服務器後可以進行測試了。
啓動Apache服務器:servicehttpd start


httpd.conf文件的格式
Web服務的基本配置
創建虛擬目錄
設置目錄權限
虛擬主機的配置


httpd.conf配置文件主要由全局環境、主服務器配置和虛擬主機3個部分組成。每部分都有相應的配置語句,該文件所有配置語句的語法爲“配置參數名稱參數值”的形式。
httpd.conf中每行包含一條語句,行末使用反斜槓“\”可以換行,但是反斜槓與下一行中間不能有任何其他字符(包括空白)。
httpd.conf的配置語句除了選項的參數值以外,所有選項指令均不區分大小寫,可以在每一行前用“#”號表示註釋。


ServerRoot
用於指定指定守護進程httpd的運行目錄,httpd在啓動之後自動將進程的當前目錄改變爲這個目錄,因此如果設置文件中指定的文件或目錄是相對路徑,那麼真實路徑就位於這個路徑之下。
Timeout
用於定義客戶程序和服務器連接的超時間隔,超過這個時間間隔(以秒計)後,服務器將斷開與客戶機的連接。
Listen
設定http服務的默認端口。
User/Group
設定服務器程序的執行者與屬組


KeepAlive
在HTTP1.0中,一次連接只能作傳輸一次HTML請求,而KeepAltve參數用於支持HTTP1.1版本的一次連接、多次傳輸功能,這樣就可以在一次連接中傳遞多個HTML請求。雖然只有較新的瀏覽器才支持這個功能,但最好還是使用“on”這個選項。
MaxKeepAliveRequests
MaxKeepAliveRequests爲一次連接可以進行的HTML請求的最大請求次數。將其值設爲0,將支持在一次連接內進行無限次的傳輸請求。事實上沒有客戶程序在一次連接中請求大多的頁面,通常達不到這個上限就完成連接了。
KeepAliveTimeout
KeepAliveTimeout測試一次連接中的多次請求傳輸之間的時間,如果服務器已經完成了一次請求,但一直沒有接收到客戶程序的下一次請求,當時間間隔超過了這個參數設置的值之後,服務器就斷開連接。


MaxClients
服務器的能力畢竟是有限的,不可能同時處理無限多的連接請求,因此參數MaxClients就用於規定服務器支持的最多併發訪問的客戶數,如果這個值設置得過大,系統在繁忙時不得不在過多的進程之問進行切換來爲這些客戶進行服務,這樣對每個客戶的反應就會減慢,並降低了整體的效率。如果這個值設置得較小,那麼系統繁忙時就會拒絕一些客戶的連接請求。當服務器性能較高時,可以適當增加這個值的設置。
MaxRequestsPerChild
使用於進程方式的Web務,常用的方式是一個子進程爲一次連接服務,這樣造成的問題就是每次連接都需要生成、退出於進程的系統操作,這些額外的處理過程佔據了計算機的大量處理能力。因此最好的方式是一個子進程可以爲多次連接請求服務,這樣就不會造成這些生成、退出進程引起的系統消耗。Apache就採用了這樣的方式,一次連接結束後,子進程並不退出,而是停留在系統中等待下一次服務請求,這樣就極大地提高了性能。


ServerAdmin
設定站點管理者的電子郵件
ServerName
設定服務器的名稱
DocumentRoot
設定服務器的共享路徑
DirectoryIndex
設定默認調用文件順序
ErrorLog
設定錯誤記錄文件名稱


虛擬目錄有以下優點。
便於訪問。
便於移動站點中的目錄。
能靈活加大磁盤空間。
安全性好。
使用Alias選項可以創建虛擬目錄。
【例】創建名爲/down的虛擬目錄,它對應的物理路徑是“/software/download”。
Alias /down  "/software/download“
注意:如果系統開啓了SELinux,則還需要去改變真實目錄的上下文。


可以使用<Directory 目錄路徑>和</Directory>這對語句爲主目錄或虛擬目錄設置權限,它們是一對容器語句,必須成對出現,它們之間封裝的是具體的設置目錄權限語句,這些語句僅對被設置目錄及其子目錄起作用。下面是主配置文件中設置目錄權限的例子。


<Directory "/var/www/bbs">

OptionsIndexesMultiViews

Order   allow,deny

Allow   from  192.168.0.20

</Directory>


命令

說明

Indexes

允許目錄瀏覽

        當客戶僅指定要訪問的目錄,但沒有指定要訪問目錄下的哪個文件,而且目錄下不存在默認文檔時,Apache以超文本形式返回目錄中的文件和子目錄列表(虛擬目錄不會出現在目錄列表中),如圖7-8所示

MultiViews

允許內容協商的多重視圖

MultiViews其實是Apache的一個智能特性。當客戶訪問目錄中一個不存在的對象時,如訪問“http://192.168.16.177/icons/a”,則Apache會查找這個目錄下所有a.*文件。由於icons目錄下存在a.gif文件,因此Apache會將a.gif文件返回給客戶,而不是返回出錯信息

All

All包含了除MultiViews之外的所有特性

如果沒有Options語句,默認爲All

ExecCGI

允許在該目錄下執行CGI腳本

FollowSymLinks

可以在該目錄中使用符號連接

Includes

允許服務器端包含功能

IncludesNoExec

允許服務器端包含功能,但禁用執行CGI腳本


當要限制某一個主機是否能夠訪問目錄時,可加入以下的參數來設置:
Order allow,deny  //默認拒絕所有主機訪問
Allowfrom  192.168.0.100  //單獨開放
Order  deny,allow //默認充許所有主機訪問
Deny  from 192.168.0.100  //單獨禁止


建立口令文件
htpasswd -c /etc/httpd/pwfile linden
添加用戶
htpasswd /etc/httpd/pwfilelonny
修改用戶密碼
htpasswd /etc/httpd/pwfilelonny
建立虛擬目錄並配置用戶認證

Alias /mysecret "/usr/local/mysecret“

<Directory "/usr/local/mysecret">

AuthType Basic

AuthName "This is a private directory.Please Login:"

AuthUserFile /etc/httpd/mysecretpwd

Require valid-user linden tom

</Directory>


利用虛擬主機技術,可以把一臺真正的Web主機分割成許多“虛擬”的Web主機,每個一個虛擬Web主機共享物理資源,從而實現多用戶對硬件資源、網絡資源共享,大幅度降低了用戶的建站成本。
虛擬主機具有以下優點。
節約投資
節約維護費用
可以獲得專業的維護而無需維護人員與昂貴的電源系統
擁有更加穩定的性能

當Web服務器只有一個IP時,可通過基於域名的虛擬Web主機技術來共享多個站點,當服務器收到訪問請求時,就可以根據不同的DNS域名來訪問不同的網站。它的優勢就是不需要更多的IP地址,容易配置。
在配置文件中修改虛擬主機配置部分內容:

NameVirtualHost*:80

<VirtualHost *:80>

DocumentRoot "/usr/www/html"

ServerNamewww.yinhepx.com

</VirtualHost>

<VirtualHost *:80>

DocumentRoot "/usr/www/bbs“

ServerNamebbs.yinhepx.com

</VirtualHost>


基於IP的虛擬Web主機與基於域名的虛擬Web主機配置類似,但在這種虛擬Web主機中,每個站點對應着不同的IP地址。
其配置如下:

#NameVirtualHost  *:80 //將此行註釋掉

<VirtualHost 192.168.0.20:80>

DocumentRoot "/usr/www/html“

ServerNamewww.yinhepx.com

</VirtualHost>

<VirtualHost 192.168.0.200:80>

DocumentRoot"/usr/www/bbs"

ServerName bbs.yinhepx.com

</VirtualHost>

啓動Web服務
service httpd start
停止Web服務
service httpd stop
重新啓動Web服務
service httpd restart
測試Web配置文件
service httpdconfigtest
Web瀏覽器、Web服務器和CGI程序之間的一個工作流程。
用戶通過Web瀏覽器訪問CGI程序。
Web服務器接收用戶請求並交給CGI程序處理。
CGI程序執行基於輸入數據的操作,包括查詢數據庫、計算數值或調用系統中其他程序。
CGI程序產生某種Web服務器能理解的輸出結果。
Web服務器接收來自CGI程序的輸出並且把它傳回Web瀏覽器。
默認情況下,Red Hat Enterprise Linux安裝程序會將Perl語言解釋器安裝在系統上,如果沒有安裝請自行安裝。
安裝
rpm -ivhperl-xxxxxxx.rpm
設置存放CGI文件的目錄權限應在主目錄權限設置的Options指令中添加一個“ExecCGI”選項。
標明CGI程序的文件類型找到“#AddHandlercgi-script .cgi”語句,刪除前面的“#”即可,該語句告訴Apache擴展名爲“.cgi”的文件是CGI程序。
在CGI文件存放的目錄(如/var/www/html/)中建立一個名爲test.cgi的文件,該文件的內容如下。
#!/usr/bin/perl
print "Content-type:text/html\n\n";
print "Hello World!\n";
執行命令
“chmod +x /var/www/html/test.cgi”,爲test.cgi文件添加運行權限。
在客戶端的瀏覽器訪問“http://Linux服務器的IP地址/test.cgi” 。


PHP的特點
PHP解釋器的安裝
設置php.conf文件
測試PHP運行環境
PHP具有下列特點。
跨平臺:PHP程序可以運行在UNIX、Linux或Windows操作系統下。
嵌入HTML:因爲PHP語言可以嵌入到HTML內部,所以PHP很容易學習。
簡單的語言:與Java和C++不同,PHP語言堅持以基本語言爲基礎,然而它的功能強大到足以支持任何類型的Web站點。
效率高:和其他的解釋性語言相比,PHP系統消耗較少的系統資源。當PHP作爲ApacheWeb服務器的一部分時,運行代碼不需要調外部二進制程序,服務器解釋腳本不需要承擔任何額外負擔。
支持各種數據庫:用戶可以使用PHP存取Oracle、Sybase、MS-SQL、MySQL、PostgreSQL、dBase、FilePro和Informix等類型的數據庫。
文件存取:PHP有許多支持文件存取函數。
文本處理:PHP有許多函數處理字符串,其中包括模式匹配的能力。
複雜的變量:PHP支持標量、數組、關聯數組等變量,這給用戶提供了支持其他的高級數據結構的堅實基礎。
支持圖像處理:用戶可以使用PHP動態創建圖像。
默認情況下Red Hat Enterprise Linux安裝程序不會將PHP解釋器安裝在系統上,用戶可使用下面的命令檢查系統是否已經安裝了PHP解釋器或查看已經安裝了何種版本。
rpm -q php
如果系統還沒有安裝PHP解釋器,加載光驅後在光盤的Package目錄下找到PHP解釋器的RPM安裝包文件
php-xxxxxxx.rpm
相關程序文件
php-cli-xxxxx.rpm
php-common-5.1.6-5.el5.i386.rpm,
使用下面的命令安裝PHP解釋器。
rpm -ivh php-common-xxxx.rpm
rpm -ivh /mnt/Server/php-cli-xxxx.rpm
rpm -ivh /mnt/Server/php-xxxx.rpm
使用yum安裝php解釋器
yum install “php*”
在Apache主配置文件httpd.conf中默認有一條“Includeconf.d/*.conf”語句,它的含義是將目錄/etc/httpd/conf.d/中的所有*.conf文件包含到httpd.conf中。
PHP解釋器的安裝程序會自動在目錄/etc/httpd/conf.d/中建立一個名爲php.conf的配置文件,這個文件包含了PHP的配置選項。
上面的配置內容在軟件安裝好後就已經配置好了,只需重啓Web服務器即可生效。
測試,寫一個PHP的網頁到網站所在目錄。

 echo “<? phpinfo()  ?>” >  test.php


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章