一、Web服務概述
1、什麼是WEB服務
Web服務是Internet中最爲重要的應用
Web服務是一種服務導向架構的技術,通過標準的Web協議提供服務,目的是保證不同平臺的應用服務可以互操作。
根據W3C的定義,Web服務(Web service)應當是一個軟件系統,用以支持網絡間不同機器的互動操作。網絡服務通常是許多應用程序接口(API)所組成的,它們透過網絡,例如國際互聯網(Internet)的遠程服務器端,執行客戶所提交服務的請求。
2、Web服務採用客戶端/服務器模型
客戶端爲瀏覽器,它提供了良好、統一的用戶界面。瀏覽器的作用爲解釋和顯示Web頁面,響應用戶的輸入請求,並通過HTTP協議將用戶請求傳遞給Web服務器
渲染引擎是瀏覽器重要的組成部分。
3、Web服務器運行服務器程序,最基本的功能是偵聽和響應客戶端的HTTP請求,向客戶端發出請求處理結果信息
4、HTTP協議的默認端口爲80
二、HTTP協議操作過程
如果在請求中沒有明確的說明請求的文件,默認請求的是/index.html文件。默認應答的頁面即請求根目錄的index.html文件。
如 http://www.e-bai.com/index.html
用戶的請求包括domain(域)和path(路徑)兩部分:
www.e-bai.com表示domain部分;
/index.html稱爲path部分,根目錄下的html文件。
三、Apache服務器
1、Apache HTTP Server(簡稱Apache)是Apache軟件基金會的一個開放源代碼的網頁服務器,可以在大多數電腦操作系統中運行,由於其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠並且可通過簡單的API擴充,將Perl/Python等解釋器編譯到服務器中。
Apache服務器支持相應的模塊化功能
兼容性強,支持多種平臺
2、Apache項目有Apache軟件基金會(ASF)負責管理和開發
3、安裝apache
生產中較少使用源代碼安裝軟件,一般採用rpm包管理器安裝
yum install httpd
進入RHEL安裝光盤安裝
rpm -ivh http-xxx.rpm
httpd-2.2.3-43.el5.i386.rpm apache主程序包
httpd-manual-2.2.3-43.el5.i386.rpm httpd手冊
httpd-devel-2.2.3-43.el5.i386.rpm 相應的apach庫文件
4、主要組成部分
rpm -ql httpd查看httpd包安裝的文件
(1)相應配置文件目錄/etc/httpd/,
主配置文件:/etc/httpd/conf/httpd.conf
分三個組成部分:
Section 1: Global Environment 全局配置
ServerRoot "/etc/httpd" 指定當前apache服務器運
行之後的chroot目錄是
/etc/httpd目錄;
PidFile run/httpd.pid 指定apche的進程編號保
存位置。
該位置表示的是相對路徑,
絕對路徑爲/etc/httpd/run/httpd.pid
Timeout 120 超時時間,如果用戶連接120秒後仍然
連接不上,就直接回復連接超時了
KeepAlive Off 和TCP/IP協議中關於TCP協議的
keepalive不同;
保活連接Apche自身的實現。
默認off關閉。
如果改成on之後,下面的配置將生效
建議設置爲on,同時根據網站情況合
理分配下面兩個參數的數值。
MaxKeepAliveRequests 100 最大的保活連接嘗試次
數。100次之後確認對方
已掛掉
KeepAliveTimeout 15 用戶如果15秒之內沒有發送任
何相應的數據包,服務器將發送
一次保活連接測試。
Server-Pool Size Regulation (MPM specific)
MPM配置。
當前Apache有兩種運行的模式:
進程(prefork)和線程(worker)模式。
運行於進程模式的Apache服務器,處理請求速
度更快;但是開啓的進程數受到一定限制;處
理大併發量進程的請求時不如線程模式;
進程模式性能好,但承載量少
線程模式由於共享進程內存,所以可以開啓非
常多的線程。大大超過進程的數量,處理大並
髮量的進程訪問時性能比進程模式好;但是由
於線程模式是競爭進程內存的,所以效率沒有
進程模式高。
線程模式性能稍差,承載量多
如果Apache服務運行於(prefork)進程模式,則
該段配置生效.當前apache服務器默認運行在
prefork模式。
StartServers 8 默認啓動多少個進程來爲用戶提供服務。
默認爲8
MinSpareServers 5 最小的空閒進程數量
MaxSpareServers 20 最大的空閒進程數量
ServerLimit 256 當前進程開啓的最大數量,如果需要超過
256,需要改寫源代碼或者使用MAxClients
參數
MaxClients 256
MaxRequestsPerChild 4000 每個子進程可以處理4000個請求
線程模式
StartServers 2 啓動2個進程
MaxClients 150 最多開啓150個線程
MinSpareThreads 25 最小進程閒置數量
MaxSpareThreads 75 最大線程閒置數量
ThreadsPerChild 25 每個進程開啓25個線程
MaxRequestsPerChild 0 每個子進程處理相應請求的數量。默認0
不做限制
的端口;
如果指定所有網卡的端口都監聽,直接寫Listen 80就可以了。
也可以重新設置Apache的默認端口。
Dynamic Shared Object 動態加載增加或縮減功能
語法格式:
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule 模塊名稱/模塊位置(路徑以相對路徑書寫)
實際路徑爲/etc/httpd/module下的相應的.so文件
Include conf.d/*.conf 包含 conf.d/目錄下所有的.conf結尾的
文件
包含各種子配置文件
分別設置以哪個用戶、哪個組的身份運行Apache服務器
注意:由於監聽的是80端口屬於知名端口(小於1024),知名端口必須有root用戶來綁定。所以首先使用root身份運行Apache服務,;然後在進程中fork出其他子進程,fork出的子進程用Apache身份來運行。root運行的進程只監聽端口,將接收到請求轉交給其他子進程。
Section 2: 'Main' server configuration
主服務的配置文件即默認的主網站的各項參數配置
ServerAdmin root@localhost 該網站的管理員的email地址
ServerName www.example.com:80 當前服務器主機的域名。
不是本機的DNS主機名
DocumentRoot "/var/www/html" 網站的主目錄位置
Options 後跟的內容包括Indexes(單獨設定目錄的默認主頁文件的名稱,一般是idexes/html文件)、Includes(包含其他目錄屬性)、 FollowSymLinks(創建軟鏈接)、 SymLinksifOwnerMatch、ExecCGI、 MultiViews(支持多類型的頁面)
ALL除了Multiviews之外的其他所有功能
自定義首頁文件和創建軟鏈接
AllowOverride None 允許覆蓋。控制.htaccess功能的開關以及
開啓什麼功能。
none表示關閉該功能。
.htaccess文件可以寫入的配置
Options(屬性配置信息)、 FileInfo(文件細節控制)、
AuthConfig(認證配置)、Limit(使用量的配置)
all表示以上全部功能
.htaccess文件不需要重啓服務器立即生效。但會增加服務器
的負擔。一般在多用戶所使用服務器的時候開啓。
控制當前目錄的訪問。
usr dir 模塊開啓後,當前的服務器每一個普通用戶都
可以在家目錄中創建一個public_html 的目錄。該目
錄下可以放置一些頁面文件。
用戶通過訪問服務器的域名地址/~user,就可以訪問到
該目錄的網頁。
默認關閉
DirectoryIndex index.html index.html.var
配置後才能使用
~代表是後面的名稱是用正則表達式書寫的
^表示以什麼爲開頭;\轉譯符;
表示.ht爲開頭的文件任何人不能訪問。只能被服務器
讀取,不會被普通用戶讀取到。增強安全性。
類型配置。
mime:多用途互聯網郵件擴展(MIME,Multipurpose Internet Mail Extensions)是一個互聯網標準,它擴展了電子郵件標準,使其能夠支持非ASCII字符、二進制格式附件等多種格式的郵件消息。這個標準被定義在RFC 2045、RFC 2046、RFC 2047、RFC 2048、RFC 2049等RFC中。 由RFC 822轉變而來的RFC 2822,規定電子郵件標準並不允許在郵件消息中使用7位ASCII字符集以外的字符。正因如此,一些非英語字符消息和二進制文件,圖像,聲音等非文字消息都不能在電子郵件中傳輸。MIME規定了用於表示各種各樣的數據類型的符號化方法。 此外,在萬維網中使用的HTTP協議中也使用了MIME的框架。
/etc/httpd/conf/magic文件是mime文件的補充。
DefaultType text/plain或application/octet-stream
訪問的文件服務器無法識別的時候,
默認text/plain是以文本格式顯示在頁面中;
service httpd restart重啓服務
application/octet-stream 下載到本機;推薦使用
service httpd restart重啓服務
首先瀏覽器的緩存,再次訪問
hostnamelookups Apache服務器是否打開DNS查詢的功能。
默認是off。如果打開,每個訪問網站的用,apache都會執行一次反向解析得知來源IP地址的想ing域名並且保存到日誌。
消耗服務器的性能。
ErrorLog logs/error_log 指定當前網站的錯誤日誌目錄。
實際路徑是
/var/log/httpd/error_log
LogLevel warn 記錄什麼級別的日誌。表示記錄warn以上級別的日
志。
LogFormat 日誌格式。表示的是用戶訪問的日誌格式。
Alias /var/www/icons/ alias別名。用戶在url下訪問/icons/
表示訪問的實際路徑是
/var/www/icons/。
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" scriptAlias別名。
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml 如果mime中沒有的格式可以在
此添加
ErrorDocument語句 用來指定報錯頁面內容
設置進程模式或者線程模式啓動使用/etc/sysconfig/httpd文件
HTTPD=/usr/sbin/httpd.worker 如果去掉註釋,apache服務重啓
後會使用線程模式;但是線程模式
會與某些模塊發生不兼容,例如
PHP。
服務器的根目錄(ServerRoot):/etc/httpd
根文檔目錄(DocumentRoot):/var/www/html
訪問日誌文件:/etc/httpd/logs/access_log
錯誤日誌文件:/etc/httpd/logs/error_log
模塊存放路徑:/etc/httpd/modules
實驗
一、配置基於IP的虛擬主機
1、添加一個IP地址
ifconfig eth0:0 192.168.1.200 netmask 255.255.255.0
2、編輯配置文件
vi /etc/http/conf/http.conf
複製該段
編輯如下
<VirtualHost 192.168.1.150>
指定192.168.1.150監聽,由於當前默認監聽的
是80端口,所以這裏我們可以省略。
ServerAdmin 網站的管理員
DocumentRoot 當前網站的主目錄
ServerName 網站的名稱
ErrorLog 錯誤日誌文件;
CustomLog 用戶訪問日誌
最終配置如圖:
3、創建配置文件目錄
4、重啓服務
5、chkconfig httpd on設置開機啓動
6、測試
訪問192.168.1.150,回覆如下:
訪問1,92.168.1.200,回覆是:
由於IP地址越來越稀缺,所以這種方式已經較少適用。
二、配置基於端口的虛擬主機
1、
編輯配置文件.訪問80端口回覆a.com;80:80端口回覆b.com。
vim /etc/httpd/conf/httpd.conf
添加監聽端口8080
虛擬主機的配置爲
2、重啓服務
3、測試
80端口是默認訪問的,直接訪問結果不變
訪問192.168.1.150:8080端口,得到的結果是
this is b.com
三、配置基於名稱的虛擬主機
1、編輯配置文件
vim /etc/httpd/conf/httpd.conf
哪個端口的基於名稱的虛擬主機的功能。
默認是*:80,表示服務器所有IP地址的80端口都打開此
功能。
注意:一定要先打開,只有打開後Apache服務器纔會支持
分辨用戶請求的主機頭的部分的內容。
2)配置如圖
2、爲了讓當前訪問不再輸入IP地址,而是直接輸入主機名。我們修
改一下/etc/hosts文件
vi /etc/hosts
3、重啓服務
4、測試
輸入www.a.com
輸入www.b.com