天天看點

Linux(CentOS)下的apache伺服器配置與管理

安裝方式:

yum install httpd

yum install mysql-server

yum install php

yum install php-mysql

  一、WEB伺服器與Apache

1、web伺服器與網址

2、Apache的曆史

3、補充

http://www.netcraft.com/可以檢視apache伺服器的市場占有率

同時必須注意的是ngnix,正處于強勢增長的上升時期,大有和apache一争天下的感覺,真是後生可畏~~~

二、Apache伺服器的管理指令

1、指令啟動:service httpd start/stop/restart/reload/condrestart/status/configtest/graceful/help

2、腳本啟動:/etc/init.d/httpd start/stop/.....

3、設為開機自動啟動:ntsysv+空格鍵

三、Apache伺服器的目錄和檔案

1、WEB站點目錄

/var/www Apache站點檔案的目錄

/var/www/html 存放WEB站點的WEB檔案

/var/www/cgi-bin CGI程式檔案

/var/www/html/manual Apache WEB伺服器手冊

2、配置檔案

.htaccess  基于目錄的配置檔案,.htaccess檔案包含對它所在目錄中檔案的通路控制指令

/etc/httpd/conf/httpd.conf Apache WEB伺服器配置檔案目錄

3、啟動腳本

/etc/rc.d/init.d/httpd WEB伺服器守護程序的啟動腳本

/etc/rc.d/rc3.d/S85httpd 将運作級目錄(/etc/rc3.d)連接配接到目錄/etc/rc.d/init.d中的啟動腳本

4、應用檔案

/usr/sbin 存放Apache WEB伺服器程式檔案和應用程式的位置

/usr/doc/ 放置Apache WEB伺服器文檔

/var/log/http 放置Apache 日志檔案的位置

四、更多指令

1、檢視Apache安裝資訊:apachectl -C

2、對Apache的配置檔案進行文法檢查:apachectl -t

3、檢視Apache編譯配置參數:apachectl -V

4、檢視Apache的編譯子產品:apachectl -l

五、httpd.conf配置檔案

(一)基本配置

httpd.conf檔案包含為下面三個部分:

1. 全局環境設定:控制整個Apache伺服器行為的部分(即全局環境變量)

2. 主伺服器配置:定義主要或者預設服務參數的指令,也為所有虛拟主機提供預設的設定參數

3. 虛拟主機設定:虛拟主機的設定參數

其中,一行寫不下使用“\”表示換行,除了選項的參數值外,所有選項指令不區分大小寫,“#”表示注釋。

現在,我們來學習httpd.conf中的具體設定項:

1.設定相對根目錄的路徑

相對根目錄通常是Apache存放配置檔案和日志檔案的地方,通常情況下相對根目錄是"/etc/httpd",它一般包含conf和logs子目錄,此時可以采用"ServerRoot"/etc/httpd""格式進行設定。

2.設定Apache監聽的IP位址和端口号

3.設定網絡管理者的電子郵件位址

當用戶端計算機通路伺服器發生錯誤的時候,伺服器通常都會向用戶端計算機傳回錯誤提示頁面,為了友善解決錯誤,在這個網頁中通常包含有管理者的電子郵件位址,此時可以采用ServerAdmin語句來設定管理者的電子郵件位址,例如"ServerAdmin [email protected]"。

4.設定伺服器主機名稱

為了友善Apache識别伺服器自身的資訊,可以使用ServerName語句來設定伺服器的主機名稱。在ServerName語句中,如果伺服器有域名則填寫伺服器的域名;如果沒有域名,則填入伺服器的IP位址。例如"ServerName 192.168.0.94:80"。

5.設定主目錄的路徑

Apache伺服器主目錄預設路徑為"/var/www/html",可以将需要釋出的網頁放置在這個目錄中,同時也可以把主目錄的路徑修改為别的目錄便于使用者管理和使用。例如需要将Apache伺服器主目錄路徑設定為"/home/lk/www",則可以在httpd.conf檔案中進行相應修改:DocumentRoot "/home/www"。

6.設定預設文檔

預設文檔是指在網頁浏覽器中輸入Web站點的IP位址或者域名顯示出來的Web頁面,也就是通常所說的首頁。在預設情況下,Apache的預設文檔名為index.html,預設文檔由DirectoryIndex語句進行定義,例如在httpd.conf中通過"DirectoryIndex index.html index.html.var"進行設定,此時可以将DirectoryIndex語句的預設文檔名修改為其他檔案。

如果有多個檔案名,每個檔案名之間必須用空格進行分隔,Apache會根據檔案名的先後順序查找在DirectoryIndex語句中指定的檔案名。如果能找到第1個則調用第1個,否則再尋找并調用第2個,依次類推。例如添加index.htm和index.php檔案作為預設文檔,則可以相應修改httpd.conf檔案為"DirectoryIndex index.html index.htm index.php index.html.var"。

7.設定日志檔案

日志檔案對于使用者查找系統故障或者分析Web伺服器運作狀況非常重要,此時有兩項重要設定内容。

(1)錯誤日志。錯誤日志記錄了Apache在啟動和運作時發生的錯誤,是以當Apache出錯的時候,應該首先檢查這個日志檔案。通常錯誤日志的檔案名為error_log,錯誤日志檔案存放的位置和檔案名可以通過ErrorLog參數進行設定。例如"ErrorLog logs/erroe_log"。如果日志檔案存放路徑不是以"/"開頭,則表示該路徑是相對于ServerRoot目錄的相對路徑。

(2)通路日志。通路日志記錄了用戶端計算機所有的通路資訊,通過分析通路日志可以知道客戶機何時通路了網站的哪些檔案等資訊。通常通路日志的檔案名為access_log,通路日志檔案的存放位置和檔案名可以通過CustomLog參數進行設定,例如"CustomLog logs/access_log combined"。

在這個通路日志設定中,combined指明日志使用的格式,在這個位置可以使用common或者combined。其中common是指使用 Web伺服器普遍采用的普通标準格式,這種格式可以被許多日志分析程式所識别;combined是指使用組合記錄格式,和common相比,combined的格式基本相同,隻是多了引用頁和浏覽器識别資訊而已。

8.設定預設字元集

AddDefaultCharset選項設定了伺服器傳回給用戶端計算機的預設字元集,由于Apache伺服器預設字元集為西歐(UTF-8),是以當用戶端通路伺服器的中文網頁時會出現亂碼現象。解決的辦法是将語句"AddDefaultCharset UTF-8"改為"AddDefaultCharset GB2312",然後重新啟動Apache伺服器,中文網頁就可以正常顯示了。

(二)配置目錄權限

1、定義目錄特性

Apache通路的每個目錄可設定相關的服務和特性是允許或(和)不允許。(同樣影響其子目錄)

首先,設定"default"位址隻有最基本的權限:

   Options FollowSymLinks

   AllowOverride None

注意從現在開始必須制定開啟特殊的權限,這樣就不會産生意想不到的結果。請仔細确認。

例如:

#

# 此值可是: "None", "All", 或下列的組合: "Indexes",

# "Includes", "FollowSymLinks", "ExecCGI", 或 "MultiViews".

# 注意"MultiViews"必須明确指定--- "Options All"不包括此特性。

   Options Indexes FollowSymLinks MultiViews

# 此項控制目錄中哪些.htaccess檔案可覆寫。

# 允許值: "All"或者以下項的組合:"Options", "FileInfo",

# "AuthConfig", "Limit"

# 控制哪些使用者可從此伺服器獲得資料。

   Order allow,deny

   Allow from all

說明:

allow和deny可以用于apache的conf檔案或者.htaccess檔案中(配合Directory, Location, Files等),用來控制目錄和檔案的通路授權。

是以,最常用的是:

注意“Deny,Allow”中間隻有一個逗号,也隻能有一個逗号,有空格都會出錯;單詞的大小寫不限。上面設定的含義是先設定“先檢查禁止設定,沒有禁止的全部允許”,而第二句沒有Deny,也就是沒有禁止通路的設定,直接就是允許所有通路了。這個主要是用來確定或者覆寫上級目錄的設定,開放所有内容的通路權。

按照上面的解釋,下面的設定是無條件禁止通路:

如果要禁止部分内容的通路,其他的全部開放:

或者

apache會按照order決定最後使用哪一條規則,比如上面的第二種方式,雖然第二句allow允許了通路,但由于在order中allow不是最後規則,是以還需要看有沒有deny規則,于是到了第三句,符合ip1和ip2的通路就被禁止了。注意,order決定的“最後”規則非常重要,下面是兩個錯誤的例子和改正方式:

錯誤:想禁止來自domain.org的通路,但是deny不是最後規則,apache在處理到第二句allow的時候就已經比對成功,根本就不會去看第三句。解決方法:Order Allow,Deny,後面兩句不動,即可。

錯誤:想隻允許來自ip1的通路,但是,雖然第二句中設定了allow規則,由于order中deny在後,是以會以第三句deny為準,而第三句的範圍中又明顯包含了ip1(all include ip1),是以所有的通路都被禁止了。解決方法一:直接去掉第三句。解決方法二:

2、端口号相同,但IP位址不同,假如一個是94,一個是95:

ServerName 192.168.0.94:80

DocumentRoot /var/www/web1

DirectoryIndex index.html index.htm

ServerName 192.168.0.95:80

DocumentRoot /var/www/web2

如果本機隻有一個網卡,那麼就得在這一塊網卡上綁定多IP:

ifconfig eth0:1 192.168.0.95

3、基于域名的虛拟主機

NameVirtualHost 192.168.0.94:

ServerName www.web1.com:80

ServerName www.web2.com:80

然後大家在,linux下的/etc/hosts檔案或者windows下C:\WINNT\system32\drivers\etc\hosts檔案中,加入

192.168.0.94 www.web1.com

192.168.0.94 www.web2.com

請大家注意,虛拟機配置發生改變後,一定要restart。

(六)加入PHP支援

這時,我們的APACHE隻能支援靜态的以HTML或者HTM結尾的檔案,想要支援PHP還得進行如下操作:

#rpm -qa | grep php,查詢本機是否已經安裝了PHP程式,如果沒有安裝,則進入CD光牒中的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

這時,在/var/www/html目錄下建立一個ok.php腳本,寫入以下内容:

在浏覽器中輸入“http://web伺服器IP/ok.php”檢視是否成功。

處于曆史原因,有些程式是以.php3或.php4為結尾的。我們需要在php的配置檔案中進行修改,打開/etc/httpd/conf.d/php.conf

修改“#AddType application/x-httpd-php-source .php”為“AddType application/x-httpd-php-source .php .php3 .php4”,要去掉#,在.php3/4前是有空格的

練習1:

自己在CentOS上使用伺服器建立Web伺服器,設定“/opt/自己名字的拼音”為新建立的虛拟目錄,此虛拟目錄别名是“exam”,在此虛拟目錄下自己建立一個html文檔名為“index.htm”,中内容是“寫入你自己的名字”。建立apache使用者認證,添加兩個使用者user1(密碼123456)和user2(密碼654321),最後用浏覽器通路“ip/exam/:8080”便可以看到顯示你名字的網頁,即可。

練習2:

配置虛拟主機。思考,如何配置一台虛拟主機,其上跑着四個網站,分别是192.168.0.101跑web1,192.168.0.102跑web2,192.168.0.100上跑www.cba.com和www.nba.com兩個網站。