一、WEB服務(wù)器與Apache
1、web服務(wù)器與網(wǎng)址
2、Apache的歷史
3、補(bǔ)充
http://www.netcraft.com/可以查看apache服務(wù)器的市場(chǎng)占有率
同時(shí)必須注意的是ngnix,正處于強(qiáng)勢(shì)增長(zhǎng)的上升時(shí)期,大有和apache一爭(zhēng)天下的感覺,真是后生可畏~~~
二、Apache服務(wù)器的管理命令
1、命令啟動(dòng):service httpd start/stop/restart/reload/condrestart/status/configtest/graceful/help
2、腳本啟動(dòng):/etc/init.d/httpd start/stop/.....
3、設(shè)為開機(jī)自動(dòng)啟動(dòng):ntsysv+空格鍵
三、Apache服務(wù)器的目錄和文件
1、WEB站點(diǎn)目錄
/var/www Apache站點(diǎn)文件的目錄
/var/www/html 存放WEB站點(diǎn)的WEB文件
/var/www/cgi-bin CGI程序文件
/var/www/html/manual Apache WEB服務(wù)器手冊(cè)
2、配置文件
.htaccess 基于目錄的配置文件,.htaccess文件包含對(duì)它所在目錄中文件的訪問控制指令
/etc/httpd/conf/httpd.conf Apache WEB服務(wù)器配置文件目錄
3、啟動(dòng)腳本
/etc/rc.d/init.d/httpd WEB服務(wù)器守護(hù)進(jìn)程的啟動(dòng)腳本
/etc/rc.d/rc3.d/S85httpd 將運(yùn)行級(jí)目錄(/etc/rc3.d)連接到目錄/etc/rc.d/init.d中的啟動(dòng)腳本
4、應(yīng)用文件
/usr/sbin 存放Apache WEB服務(wù)器程序文件和應(yīng)用程序的位置
/usr/doc/ 放置Apache WEB服務(wù)器文檔
/var/log/http 放置Apache 日志文件的位置
四、更多命令
1、查看Apache安裝信息:apachectl -C
2、對(duì)Apache的配置文件進(jìn)行語(yǔ)法檢查:apachectl -t
3、查看Apache編譯配置參數(shù):apachectl -V
4、查看Apache的編譯模塊:apachectl -l
五、httpd.conf配置文件
(一)基本配置
httpd.conf文件包含為下面三個(gè)部分:
1. 全局環(huán)境設(shè)置:控制整個(gè)Apache服務(wù)器行為的部分(即全局環(huán)境變量)
2. 主服務(wù)器配置:定義主要或者默認(rèn)服務(wù)參數(shù)的指令,也為所有虛擬主機(jī)提供默認(rèn)的設(shè)置參數(shù)
3. 虛擬主機(jī)設(shè)置:虛擬主機(jī)的設(shè)置參數(shù)
其中,一行寫不下使用“\”表示換行,除了選項(xiàng)的參數(shù)值外,所有選項(xiàng)指令不區(qū)分大小寫,“#”表示注釋。
現(xiàn)在,我們來(lái)學(xué)習(xí)httpd.conf中的具體設(shè)置項(xiàng):
1.設(shè)置相對(duì)根目錄的路徑
相對(duì)根目錄通常是Apache存放配置文件和日志文件的地方,通常情況下相對(duì)根目錄是"/etc/httpd",它一般包含conf和logs子目錄,此時(shí)可以采用"ServerRoot"/etc/httpd""格式進(jìn)行設(shè)置。
2.設(shè)置Apache監(jiān)聽的IP地址和端口號(hào)
Apache默認(rèn)會(huì)在本機(jī)所有可用IP地址上的TCP 80端口監(jiān)聽客戶端的請(qǐng)求,可以使用Listen語(yǔ)句以便在某個(gè)指定地址和端口上監(jiān)聽請(qǐng)求。例如設(shè)置服務(wù)器只監(jiān)聽192.168.0.94的80端口,則可以在httpd.conf中進(jìn)行相應(yīng)的設(shè)置:Listen 192.168.0.94:80。如果需要更改端口號(hào)為8080,也可以采用"Listen 192.168.0.94:8080"之類的設(shè)置,但是此時(shí)通過網(wǎng)頁(yè)瀏覽器訪問網(wǎng)站的時(shí)候也必須在域名地址后面添加相應(yīng)的端口號(hào),例如輸入"http://192.168.0.94:8080"才可以進(jìn)行訪問。注:我的虛擬機(jī)Linux的IP是192.168.0.94,windows的IP是192.168.0.225
3.設(shè)置網(wǎng)絡(luò)管理員的電子郵件地址
當(dāng)客戶端計(jì)算機(jī)訪問服務(wù)器發(fā)生錯(cuò)誤的時(shí)候,服務(wù)器通常都會(huì)向客戶端計(jì)算機(jī)返回錯(cuò)誤提示頁(yè)面,為了方便解決錯(cuò)誤,在這個(gè)網(wǎng)頁(yè)中通常包含有管理員的電子郵件地址,此時(shí)可以采用ServerAdmin語(yǔ)句來(lái)設(shè)置管理員的電子郵件地址,例如"ServerAdmin xinyuan365@sohu.com"。
4.設(shè)置服務(wù)器主機(jī)名稱
為了方便Apache識(shí)別服務(wù)器自身的信息,可以使用ServerName語(yǔ)句來(lái)設(shè)置服務(wù)器的主機(jī)名稱。在ServerName語(yǔ)句中,如果服務(wù)器有域名則填寫服務(wù)器的域名;如果沒有域名,則填入服務(wù)器的IP地址。例如"ServerName 192.168.0.94:80"。
5.設(shè)置主目錄的路徑
Apache服務(wù)器主目錄默認(rèn)路徑為"/var/www/html",可以將需要發(fā)布的網(wǎng)頁(yè)放置在這個(gè)目錄中,同時(shí)也可以把主目錄的路徑修改為別的目錄便于用戶管理和使用。例如需要將Apache服務(wù)器主目錄路徑設(shè)置為"/home/lk/www",則可以在httpd.conf文件中進(jìn)行相應(yīng)修改:DocumentRoot "/home/www"。
6.設(shè)置默認(rèn)文檔
默認(rèn)文檔是指在網(wǎng)頁(yè)瀏覽器中輸入Web站點(diǎn)的IP地址或者域名顯示出來(lái)的Web頁(yè)面,也就是通常所說(shuō)的主頁(yè)。在缺省情況下,Apache的默認(rèn)文檔名為index.html,默認(rèn)文檔由DirectoryIndex語(yǔ)句進(jìn)行定義,例如在httpd.conf中通過"DirectoryIndex index.html index.html.var"進(jìn)行設(shè)置,此時(shí)可以將DirectoryIndex語(yǔ)句的默認(rèn)文檔名修改為其他文件。
如果有多個(gè)文件名,每個(gè)文件名之間必須用空格進(jìn)行分隔,Apache會(huì)根據(jù)文件名的先后順序查找在DirectoryIndex語(yǔ)句中指定的文件名。如果能找到第1個(gè)則調(diào)用第1個(gè),否則再尋找并調(diào)用第2個(gè),依次類推。例如添加index.htm和index.php文件作為默認(rèn)文檔,則可以相應(yīng)修改httpd.conf文件為"DirectoryIndex index.html index.htm index.php index.html.var"。
7.設(shè)置日志文件
日志文件對(duì)于用戶查找系統(tǒng)故障或者分析Web服務(wù)器運(yùn)行狀況非常重要,此時(shí)有兩項(xiàng)重要設(shè)置內(nèi)容。
。1)錯(cuò)誤日志。錯(cuò)誤日志記錄了Apache在啟動(dòng)和運(yùn)行時(shí)發(fā)生的錯(cuò)誤,所以當(dāng)Apache出錯(cuò)的時(shí)候,應(yīng)該首先檢查這個(gè)日志文件。通常錯(cuò)誤日志的文件名為error_log,錯(cuò)誤日志文件存放的位置和文件名可以通過ErrorLog參數(shù)進(jìn)行設(shè)置。例如"ErrorLog logs/erroe_log"。如果日志文件存放路徑不是以"/"開頭,則表示該路徑是相對(duì)于ServerRoot目錄的相對(duì)路徑。
。2)訪問日志。訪問日志記錄了客戶端計(jì)算機(jī)所有的訪問信息,通過分析訪問日志可以知道客戶機(jī)何時(shí)訪問了網(wǎng)站的哪些文件等信息。通常訪問日志的文件名為access_log,訪問日志文件的存放位置和文件名可以通過CustomLog參數(shù)進(jìn)行設(shè)置,例如"CustomLog logs/access_log combined"。
在這個(gè)訪問日志設(shè)置中,combined指明日志使用的格式,在這個(gè)位置可以使用common或者combined。其中common是指使用 Web服務(wù)器普遍采用的普通標(biāo)準(zhǔn)格式,這種格式可以被許多日志分析程序所識(shí)別;combined是指使用組合記錄格式,和common相比,combined的格式基本相同,只是多了引用頁(yè)和瀏覽器識(shí)別信息而已。
8.設(shè)置默認(rèn)字符集
AddDefaultCharset選項(xiàng)設(shè)置了服務(wù)器返回給客戶端計(jì)算機(jī)的默認(rèn)字符集,由于Apache服務(wù)器默認(rèn)字符集為西歐(UTF-8),因此當(dāng)客戶端訪問服務(wù)器的中文網(wǎng)頁(yè)時(shí)會(huì)出現(xiàn)亂碼現(xiàn)象。解決的辦法是將語(yǔ)句"AddDefaultCharset UTF-8"改為"AddDefaultCharset GB2312",然后重新啟動(dòng)Apache服務(wù)器,中文網(wǎng)頁(yè)就可以正常顯示了。
。ǘ┡渲媚夸洐(quán)限
1、定義目錄特性
Apache訪問的每個(gè)目錄可設(shè)置相關(guān)的服務(wù)和特性是允許或(和)不允許。(同樣影響其子目錄)
首先,設(shè)置"default"地址只有最基本的權(quán)限:
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
注意從現(xiàn)在開始必須制定開啟特殊的權(quán)限,這樣就不會(huì)產(chǎn)生意想不到的結(jié)果。請(qǐng)仔細(xì)確認(rèn)。
例如:
<Directory "D:/www_root">
#
# 此值可是: "None", "All", 或下列的組合: "Indexes",
# "Includes", "FollowSymLinks", "ExecCGI", 或 "MultiViews".
# 注意"MultiViews"必須明確指定--- "Options All"不包括此特性。
#
Options Indexes FollowSymLinks MultiViews
#
# 此項(xiàng)控制目錄中哪些.htaccess文件可覆蓋。
# 允許值: "All"或者以下項(xiàng)的組合:"Options", "FileInfo",
# "AuthConfig", "Limit"
#
AllowOverride None
#
# 控制哪些用戶可從此服務(wù)器獲得資料。
#
Order allow,deny
Allow from all
</Directory>
說(shuō)明:
allow和deny可以用于apache的conf文件或者.htaccess文件中(配合Directory, Location, Files等),用來(lái)控制目錄和文件的訪問授權(quán)。
所以,最常用的是:
Order Deny,Allow Allow from All注意“Deny,Allow”中間只有一個(gè)逗號(hào),也只能有一個(gè)逗號(hào),有空格都會(huì)出錯(cuò);單詞的大小寫不限。上面設(shè)定的含義是先設(shè)定“先檢查禁止設(shè)定,沒有禁止的全部允許”,而第二句沒有Deny,也就是沒有禁止訪問的設(shè)定,直接就是允許所有訪問了。這個(gè)主要是用來(lái)確;蛘吒采w上級(jí)目錄的設(shè)置,開放所有內(nèi)容的訪問權(quán)。
按照上面的解釋,下面的設(shè)定是無(wú)條件禁止訪問:
Order Allow,Deny Deny from All如果要禁止部分內(nèi)容的訪問,其他的全部開放:
Order Deny,Allow Deny from ip1 ip2或者
Order Allow,Deny Allow from all Deny from ip1 ip2apache會(huì)按照order決定最后使用哪一條規(guī)則,比如上面的第二種方式,雖然第二句allow允許了訪問,但由于在order中allow不是最后規(guī)則,因此還需要看有沒有deny規(guī)則,于是到了第三句,符合ip1和ip2的訪問就被禁止了。注意,order決定的“最后”規(guī)則非常重要,下面是兩個(gè)錯(cuò)誤的例子和改正方式:
Order Deny,Allow Allow from all Deny from domain.org錯(cuò)誤:想禁止來(lái)自domain.org的訪問,但是deny不是最后規(guī)則,apache在處理到第二句allow的時(shí)候就已經(jīng)匹配成功,根本就不會(huì)去看第三句。解決方法:Order Allow,Deny,后面兩句不動(dòng),即可。
Order Allow,Deny Allow from ip1 Deny from all錯(cuò)誤:想只允許來(lái)自ip1的訪問,但是,雖然第二句中設(shè)定了allow規(guī)則,由于order中deny在后,所以會(huì)以第三句deny為準(zhǔn),而第三句的范圍中又明顯包含了ip1(all include ip1),所以所有的訪問都被禁止了。解決方法一:直接去掉第三句。解決方法二:
Order Deny,Allow Deny from all Allow from ip1小結(jié):規(guī)律就是order deny,allow表示deny優(yōu)先級(jí)低而allow優(yōu)先級(jí)高,order allow,deny表示allow優(yōu)先級(jí)低而deny優(yōu)先級(jí)高。(三)創(chuàng)建虛擬目錄 如果我們的網(wǎng)站建在了別的目錄,比如/opt/www/lk下,是不是不在主目錄/var/www/html下就不能訪問了呢?當(dāng)然不是。 可以使用虛擬目錄,讓用戶訪問到別的目錄下的文件。虛擬目錄是位于Apache主目錄外的其他目錄,一般我們通過為虛擬目錄創(chuàng)建別名的方式來(lái)讓web訪問。這樣做一是安全;二是訪問簡(jiǎn)單,不用輸入那么長(zhǎng)的真是目錄地址,而只用輸入一個(gè)簡(jiǎn)單的別名就行;三是便于站點(diǎn)目錄的移動(dòng),只要虛擬目錄名不變,改變實(shí)際存放位置,不會(huì)影響web訪問的。 我們用Alias選項(xiàng)創(chuàng)建虛擬目錄,如Alias /bbs/ "/opt/www/lk/"<Directory "/opt/www/lk/"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all</Directory>(四)進(jìn)行用戶認(rèn)證 用戶認(rèn)證是網(wǎng)絡(luò)安全中極為重要的一個(gè)部分,讓想訪問指定網(wǎng)站的用戶輸入用戶名和密碼才能進(jìn)行登錄,起到了天然的安全屏障作用。Apache的安全認(rèn)證在實(shí)際使用中也是很常見的,F(xiàn)在就通過一個(gè)例子演示如果在Apache服務(wù)器中實(shí)現(xiàn)用戶認(rèn)證的功能。 我們對(duì)上述的虛擬目錄進(jìn)行操作: Alias /bbs/ "/opt/www/lk/"<Directory "/opt/www/lk/"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all AuthType:Basic AuthName "welcome go home:" AuthUserFile /etc/httpd/authpwd Require user laoda laoer</Directory> 說(shuō)明: AuthType:定義了對(duì)用戶認(rèn)證的類型,常用的是mod_auth提供的Basic; AuthName:Web瀏覽器顯示在輸入用戶名和密碼框時(shí)的提示文字; AuthUserFile:定義口令文件htpasswd的路徑; Require user:定義了允許訪問的用戶名單,名字間用空格分隔。 之后,建立authpwd文件用來(lái)保存密碼,touch /etc/httpd/authpwd 接著,把用戶名和密碼寫入文件(注意:第一次創(chuàng)建用戶時(shí)使用-c參數(shù),第二個(gè)用戶被創(chuàng)建就不必寫了,否則會(huì)覆蓋剛才的用戶): [root@localhost http]#htpasswd -c /etc/httpd/authpwd laoda New password: Re-type new password: Add password for user laoda[root@localhost http]#htpasswd /etc/httpd/authpwd laoer New password: Re-type new password: Add password for user laoer 現(xiàn)在service httpd restart,再用瀏覽器訪問這臺(tái)linux的IP地址即可。(五)配置虛擬主機(jī)為了節(jié)省費(fèi)用和提高服務(wù)器的利用效率,我們可以在一臺(tái)機(jī)器上建立出多臺(tái)“主機(jī)”。每個(gè)主機(jī)都能對(duì)外提供WEB服務(wù),在外界看來(lái)是些不同的網(wǎng)站,但對(duì)服務(wù)器而言,其實(shí)看似不同的網(wǎng)站,其實(shí)它們都是運(yùn)行于同一臺(tái)主機(jī)之上的不同的虛擬主機(jī)而已。如何配置虛擬主機(jī)呢?Apache的虛擬主機(jī)功能是非常強(qiáng)大的,而且配置很簡(jiǎn)單。主要分為基于IP和基于域名的虛擬主機(jī)。我們先配置基于IP的虛擬主機(jī)吧。這其中也有兩種選擇,你現(xiàn)在有多少個(gè)可用IP?如果你購(gòu)買了不少IP,那么你可以給每個(gè)虛擬主機(jī)分配不同的IP,讓他們使用相同的端口,這是其一。如果在這個(gè)IP短缺的時(shí)代,你沒喲那么多IP,只買了一個(gè),那么你就可以使用一個(gè)IP地址加不同端口的方式,讓不同的端口訪問不同的虛擬主機(jī)。1、IP地址相同,但端口號(hào)不同:現(xiàn)在我的CentOS上,只有一個(gè)IP:192.168.0.94,我想分別使用8080和8081兩個(gè)端口配置兩個(gè)網(wǎng)站,編輯httpd.conf:Listen 8080Listen 8081<VirtualHost 192.168.0.94:8080>DocumentRoot /var/www/web1DirectoryIndex index.html index.htmHostNameLookups off</VirtualHost><VirtualHost 192.168.0.94:8081>DocumentRoot /var/www/web2DirectoryIndex index.html index.htmHostNameLookups off</VirtualHost>重啟服務(wù),即可。2、端口號(hào)相同,但I(xiàn)P地址不同,假如一個(gè)是94,一個(gè)是95:
<VirtualHost 192.168.0.94>
ServerName 192.168.0.94:80
DocumentRoot /var/www/web1
DirectoryIndex index.html index.htm
</VirtualHost>
<VirtualHost 192.168.0.95>
ServerName 192.168.0.95:80
DocumentRoot /var/www/web2
DirectoryIndex index.html index.htm
</VirtualHost>
如果本機(jī)只有一個(gè)網(wǎng)卡,那么就得在這一塊網(wǎng)卡上綁定多IP:
ifconfig eth0:1 192.168.0.95
3、基于域名的虛擬主機(jī)
NameVirtualHost 192.168.0.94:
<VirtualHost www.web1.com>
ServerName www.web1.com:80
DocumentRoot /var/www/web1
DirectoryIndex index.html index.htm
</VirtualHost>
<VirtualHost www.web2.com>
ServerName www.web2.com:80
DocumentRoot /var/www/web2
DirectoryIndex index.html index.htm
</VirtualHost>
然后大家在,linux下的/etc/hosts文件或者windows下C:\WINNT\system32\drivers\etc\hosts文件中,加入
192.168.0.94 www.web1.com
192.168.0.94 www.web2.com
請(qǐng)大家注意,虛擬機(jī)配置發(fā)生改變后,一定要restart。
(六)加入PHP支持
這時(shí),我們的APACHE只能支持靜態(tài)的以HTML或者HTM結(jié)尾的文件,想要支持PHP還得進(jìn)行如下操作:
#rpm -qa | grep php,查詢本機(jī)是否已經(jīng)安裝了PHP程序,如果沒有安裝,則進(jìn)入光盤中的CENTOS目錄,在目錄的空白處打開終端:
#rpm -ivh php-common-5.1.6-20.el5.i386.rpm
#rpm -ivh php-cli-5.1.6-20.el5.i386.rpm
#rpm -ivh php-5.1.6-20.el5.i386.rpm
這時(shí),在/var/www/html目錄下新建一個(gè)ok.php腳本,寫入以下內(nèi)容:
在瀏覽器中輸入“http://web服務(wù)器IP/ok.php”查看是否成功。
處于歷史原因,有些程序是以.php3或.php4為結(jié)尾的。我們需要在php的配置文件中進(jìn)行修改,打開/etc/httpd/conf.d/php.conf
修改“#AddType application/x-httpd-php-source .php”為“AddType application/x-httpd-php-source .php .php3 .php4”,要去掉#,在.php3/4前是有空格的
練習(xí)1:
自己在CentOS上使用服務(wù)器建立Web服務(wù)器,設(shè)置“/opt/自己名字的拼音”為新創(chuàng)建的虛擬目錄,此虛擬目錄別名是“exam”,在此虛擬目錄下自己新建一個(gè)html文檔名為“index.htm”,<body>中內(nèi)容是“寫入你自己的名字”。創(chuàng)建apache用戶認(rèn)證,添加兩個(gè)用戶user1(密碼123456)和user2(密碼654321),最后用瀏覽器訪問“ip/exam/:8080”便可以看到顯示你名字的網(wǎng)頁(yè),即可。
練習(xí)2:
配置虛擬主機(jī)。思考,如何配置一臺(tái)虛擬主機(jī),其上跑著四個(gè)網(wǎng)站,分別是192.168.0.101跑web1,192.168.0.102跑web2,192.168.0.100上跑www.cba.com和www.nba.com兩個(gè)網(wǎng)站。
億恩科技地址(ADD):鄭州市黃河路129號(hào)天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888
聯(lián)系:億恩小凡
QQ:89317007
電話:0371-63322206 本文出自:億恩科技【www.riomediacenter.com】
服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|