CentOS(Linux)下的apache伺服器配置與管理方法分享_Linux

來源:互聯網
上載者:User
一、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地址和連接埠號碼
Apache預設會在本機所有可用IP地址上的TCP 80連接埠監聽用戶端的請求,可以使用Listen語句以便在某個指定地址和連接埠上監聽請求。例如設定伺服器只監聽192.168.0.94的80連接埠,則可以在httpd.conf中進行相應的設定:Listen 192.168.0.94:80。如果需要更改連接埠號碼為8080,也可以採用"Listen 192.168.0.94:8080"之類的設定,但是此時通過網頁瀏覽器訪問網站的時候也必須在網域名稱地址後面添加相應的連接埠號碼,例如輸入"http://192.168.0.94:8080"才可以進行訪問。註:我的虛擬機器Linux的IP是192.168.0.94,windows的IP是192.168.0.225
3.設定網路系統管理員的電子郵件地址
當用戶端電腦訪問伺服器發生錯誤的時候,伺服器通常都會向用戶端電腦返回錯誤提示頁面,為了方便解決錯誤,在這個網頁中通常包含有管理員的電子郵件地址,此時可以採用ServerAdmin語句來設定管理員的電子郵件地址,例如"ServerAdmin xinyuan365@sohu.com"。
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),因此當Client Access Server的中文網頁時會出現亂碼現象。解決的辦法是將語句"AddDefaultCharset UTF-8"改為"AddDefaultCharset GB2312",然後重新啟動Apache伺服器,中文網頁就可以正常顯示了。
(二)配置目錄許可權
1、定義目錄特性
Apache訪問的每個目錄可設定相關的服務和特性是允許或(和)不允許。(同樣影響其子目錄)
首先,設定"default"地址只有最基本的許可權:
複製代碼 代碼如下:

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

注意從現在開始必須制定開啟特殊的許可權,這樣就不會產生意想不到的結果。請仔細確認。
例如:
複製代碼 代碼如下:

<Directory "D:/www_root">
#
# 此值可是: "None", "All", 或下列的組合: "Indexes",
# "Includes", "FollowSymLinks", "ExecCGI", 或 "MultiViews".
# 注意"MultiViews"必須明確指定--- "Options All"不包括此特性。
#
Options Indexes FollowSymLinks MultiViews
#
# 此項控制目錄中哪些.htaccess檔案可覆蓋。
# 允許值: "All"或者以下項的組合:"Options", "FileInfo",
# "AuthConfig", "Limit"
#
AllowOverride None
#
# 控制哪些使用者可從此伺服器獲得資料。
#
Order allow,deny
Allow from all
</Directory>

說明:
allow和deny可以用於apache的conf檔案或者.htaccess檔案中(配合Directory, Location, Files等),用來控制目錄和檔案的訪問授權。
所以,最常用的是:
Order Deny,Allow Allow from All注意“Deny,Allow”中間只有一個逗號,也只能有一個逗號,有空格都會出錯;單詞的大小寫不限。上面設定的含義是先設定“先檢查禁止設定,沒有禁止的全部允許”,而第二句沒有Deny,也就是沒有禁止訪問的設定,直接就是允許所有訪問了。這個主要是用來確保或者覆蓋上級目錄的設定,開放所有內容的訪問權。
按照上面的解釋,下面的設定是無條件禁止訪問:
Order Allow,Deny Deny from All如果要禁止部分內容的訪問,其他的全部開放:
Order Deny,Allow Deny from ip1 ip2或者
Order Allow,Deny Allow from all Deny from ip1 ip2apache會按照order決定最後使用哪一條規則,比如上面的第二種方式,雖然第二句allow允許了訪問,但由於在order中allow不是最後規則,因此還需要看有沒有deny規則,於是到了第三句,符合ip1和ip2的訪問就被禁止了。注意,order決定的“最後”規則非常重要,下面是兩個錯誤的例子和改正方式:
Order Deny,Allow Allow from all Deny from domain.org錯誤:想禁止來自domain.org的訪問,但是deny不是最後規則,apache在處理到第二句allow的時候就已經匹配成功,根本就不會去看第三句。
解決方案:Order Allow,Deny,後面兩句不動,即可。
Order Allow,Deny Allow from ip1 Deny from all錯誤:想只允許來自ip1的訪問,但是,雖然第二句中設定了allow規則,由於order中deny在後,所以會以第三句deny為準,而第三句的範圍中又明顯包含了ip1(all include ip1),所以所有的訪問都被禁止了。
解決方案一:直接去掉第三句。
解決方案二:
Order Deny,Allow Deny from all Allow from ip1小結:規律就是order deny,allow表示deny優先順序低而allow優先順序高,order allow,deny表示allow優先順序低而deny優先順序高。
(三)建立虛擬目錄 如果我們的網站建在了別的目錄,比如/opt/www/lk下,是不是不在主目錄/var/www/html下就不能訪問了呢?當然不是。 可以使用虛擬目錄,讓使用者訪問到別的目錄下的檔案。虛擬目錄是位於Apache主目錄外的其他目錄,一般我們通過為虛擬目錄建立別名的方式來讓web訪問。這樣做一是安全;二是訪問簡單,不用輸入那麼長的真是目錄位址,而只用輸入一個簡單的別名就行;三是便於網站目錄的移動,只要虛擬目錄名不變,改變實際存放位置,不會影響web訪問的。 我們用Alias選項建立虛擬目錄,如Alias /bbs/ "/opt/www/lk/"<Directory "/opt/www/lk/"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all</Directory>
(四)進行使用者認證 使用者認證是網路安全中極為重要的一個部分,讓想訪問指定網站的使用者輸入使用者名稱和密碼才能進行登入,起到了天然的安全屏障作用。Apache的安全認證在實際使用中也是很常見的。現在就通過一個例子示範如果在Apache伺服器中實現使用者認證的功能。 我們對上述的虛擬目錄進行操作: 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> 說明: AuthType:定義了對使用者認證的類型,常用的是mod_auth提供的Basic; AuthName:Web瀏覽器顯示在輸入使用者名稱和密碼框時的提示文字; AuthUserFile:定義口令檔案htpasswd的路徑; Require user:定義了允許訪問的使用者名稱單,名字間用空格分隔。 之後,建立authpwd檔案用來儲存密碼,touch /etc/httpd/authpwd 接著,把使用者名稱和密碼寫入檔案(注意:第一次建立使用者時使用-c參數,第二個使用者被建立就不必寫了,否則會覆蓋剛才的使用者): [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 現在service httpd restart,再用瀏覽器訪問這台linux的IP地址即可。
(五)配置虛擬機器主機為了節省費用和提高伺服器的利用效率,我們可以在一台機器上建立出多台“主機”。每個主機都能對外提供WEB服務,在外界看來是些不同的網站,但對伺服器而言,其實看似不同的網站,其實它們都是運行於同一台主機之上的不同的虛擬機器主機而已。如何配置虛擬機器主機呢?Apache的虛擬機器主機功能是非常強大的,而且配置很簡單。主要分為基於IP和基於網域名稱的虛擬機器主機。我們先配置基於IP的虛擬機器主機吧。這其中也有兩種選擇,你現在有多少個可用IP?如果你購買了不少IP,那麼你可以給每個虛擬機器主機分配不同的IP,讓他們使用相同的連接埠,這是其一。如果在這個IP短缺的時代,你沒喲那麼多IP,只買了一個,那麼你就可以使用一個IP地址加不同連接埠的方式,讓不同的連接埠訪問不同的虛擬機器主機。1、IP地址相同,但連接埠號碼不同:現在我的CentOS上,只有一個IP:192.168.0.94,我想分別使用8080和8081兩個連接埠配置兩個網站,編輯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>重啟服務,即可。
2、連接埠號碼相同,但IP地址不同,假如一個是94,一個是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>

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

ifconfig eth0:1 192.168.0.95

3、基於網域名稱的虛擬機器主機
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

請大家注意,虛擬機器設定發生改變後,一定要restart。
(六)加入PHP支援
這時,我們的APACHE只能支援靜態以HTML或者HTM結尾的檔案,想要支援PHP還得進行如下操作:
#rpm -qa | grep php,查詢本機是否已經安裝了PHP程式,如果沒有安裝,則進入光碟片中的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”,<body>中內容是“寫入你自己的名字”。建立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兩個網站。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.