阿帕奇服務器配置方案
apach 服務器配置大全 (1)2011-09-16 23:02:00 www.hackbase.com 來源:一、資料參考與準備: Apache 軟件包的組成 /etc/httpd/c
apach 服務器配置大全 (1)
2011-09-16 23:02:00 www.hackbase.com 來源:
一、資料參考與準備: Apache 軟件包的組成 /etc/httpd/conf/*
一、資料參考與準備:
Apache 軟件包的組成
/etc/httpd/conf/*
主配置文件位置
/etc/rc.d/init.d/httpd
啟動腳本
/home/httpd/html
html 文檔的主目錄
/home/httpd/html/manual/*
html 格式的幫助文檔
/home/httpd/icons/*
用在html 網(wǎng)頁中的圖標文件
/usr/sbin/*
-/usr/sbin/htpasswd
建立和更新apache 用戶的程序
-/usr/sbin/httpd
/var/log/httpd/*
日志文件
主配置文件httpd.conf 的常用指令解釋
ServerType standalone
#設置服務器的形式是單獨啟動(standalone ),還是借由互聯(lián)網(wǎng)絡伺服程序inetd 來啟動。一般使用前者。
ServerRoot "/usr/local/apache"
#設置服務器的Home 目錄,用來存放服務器的設置文件、錯誤文件、記錄文件。 PidFile logs/httpd.pid
#程序啟動時,把父進程httpd 的進程號(process id)存在這個文件中。這個文件名可以配合PidFile 指令加以改變。
ScoreBoardFile logs/apache_status
#設置網(wǎng)絡上WWW 服務器一些執(zhí)行程序的記錄文件。
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
#這兩個文件的內(nèi)容已經(jīng)包含在httpd.conf 文件中了。
Timeout 300
#如果客戶端300秒還沒有連上,或者服務器300秒還沒有傳送數(shù)據(jù)到客戶端,就會自動斷線。 KeepAlive On
#設置是否支持續(xù)傳功能。
,MaxKeepAliveRequests 100
#設置支持續(xù)傳功能的數(shù)目。數(shù)目越多則浪費的硬盤空間越多。設置為0則不止持續(xù)傳。 KeepAliveTimeout 15
#如果該為使用者在15秒后還沒有向服務器發(fā)出要求,則他在不能續(xù)傳。
MaxRequestsPerChild 0
#設置同時間內(nèi)child process數(shù)目。
TtesteadsPerChild 50
#設置服務器使用進程的數(shù)目。
#Listen 3000
#Listen 12.34.56.78:80
#允許使用其它的Port 或IP 訪問服務器。此例中Port 為3000,IP 為12.34.56.78:80。 #BindAddress *
#設置Apache 監(jiān)聽所有的IP ,也可以具體的指定。
#LoadModule anon_auth_module modules/ApacheModuleAuthAnon.dll
……
#打開當前未激活預定以的模塊。
#ExtendedStatus On
#設置服務器產(chǎn)生的狀態(tài)信息。
Port 80
#設置服務器使用的Port 。
ServerAdmin you@your.address
#設置服務器管理者的E-Mail 地址。
#ServerName new.host.name
#服務器的主機名。如果你有固定的IP 地址,則不需要設置。
DocumentRoot "/usr/local/apache/htdocs"
#設置存放站點html 文件的目錄。
Options FollowSymLinks
AllowOverride None
#設置/目錄的指令。具體地說明:
Option :定義在目錄內(nèi)所能執(zhí)行的操作。
None :表示只能瀏覽,
FollowSymLinks :允許頁面連接到別處,
ExecCGI :允許執(zhí)行CGI ,
MultiViews :允許看動畫或是聽音樂之類的操作,
Indexes :允許服務器返回目錄的格式化列表,
Includes :允許使用SSI 。這些設置可以復選。
All :則可以做任何事,但不包括MultiViews 。
AllowOverride :加None 參數(shù)表示任何人都可以瀏覽該目錄下的文件。
另外的參數(shù)有:FileInfo 、AuthConfig 、Limit 。
UserDir public_html
#定義使用者存放html 文件的目錄。
DirectoryIndex index.html
,#定義首先顯示的文件。
AccessFileName .htaccess
#定義每個目錄訪問控制文件的名稱。
#CacheNegotiatedDocs
定義代理服務器不要Cache 你的頁面。不建議使用。
UseCanonicalName On
#服務器使用ServerName 指定的服務器名和Port 指定的端口地址。
二、安裝與配置
apache 安裝
$ tar xvf httpd-*.tar
$ ./configure --prefix=PREFIX
$ make Install
$ make install
常用關鍵配置
·vi /etc/httpd/conf/httpd.conf
Listen 80
Include conf.d/*.conf
ServerRoot "/etc/httpd"
DocumentRoot "/var/www/html"
ServerAdmin root@mai.xuanfei.net
ServerName 10.45.63.188:80
用戶認證
假如某一目錄下的文件如/home/ftp/pub需要做到用戶認證 創(chuàng)建認證用戶
@htpasswd –c /*/.password xuanfei
創(chuàng)建認證組
@vi /*/.group
xuanfei-group:xuanfei xuanfei1
一。 基本的Apache 用戶認證方法:
在httpd.conf 中加入下面的行
<>
options indexes followsymlinks
allowoverride authconfig
order allow,deny
allow from all
<>
或者加到 /etc/httpd/conf.d/ 新建個文件名為。conf 結尾的配置文件 〈Directory /home/ftp/pub>
Options Indexes
AllowOverride AuthConfig
order allow,deny
allow from all
〈/Directory>
用在目錄/home/ftp/pub下放文件。htaccess ,內(nèi)容如下:
,authname "shared files"
authtype basic
authuserfile /*/.password
require valid-user
#require group xuanfei-group //接收組所以用戶
#requirre user xuanfei //接收xuanfei 單個用戶
用隨Apache 來的程序htpasswd 生成文件/etc/.passwd,每行一個用戶名:密碼 只要能提供正確的用戶名和密碼對,就允許登錄訪問,這是針對任何地址來的 請求都要求提供用戶名和密碼認證。
二。針對部分網(wǎng)段或地址要求認證。
若公司LAN 所在網(wǎng)段為10.45.63.0/24,且有一防火墻專線接入Internet,
內(nèi)部網(wǎng)卡的地址為10.45.63.1/32,則現(xiàn)在希望所有通過撥本地633通過
防火墻上的apache 反向代理向LAN 上的另一WWW 服務器訪問時需要認證,而本地 LAN 上的用戶不需認證??梢栽趆ttpd.conf 中放入:
〈Directory /home/ftp/pub>
Options Indexes FollowSymLinks
AllowOverride AuthConfig
order deny,allow
deny from 10.45.63.1
〈/Directory>
且在/home/ftp/pub/.htaccess中放入:
AuthName "shared files"
AuthType Basic
AuthUserFile /etc/.passwd
require valid-user
satisfy any
三。對同一目錄及其下的子目錄有不同的權限,僅某些人可以存取一目錄下的 子目錄。
如有一目錄/home/ftp/pub/host,有三個用戶user1,user2,user3都需要用戶名 和密碼進入/home/ftp/pub,但僅user1,user2能進入/home/ftp/pub/host.則
放下面的行到httpd.conf
〈Directory /home/ftp/pub>
Options Indexes
AllowOverride AuthConfig
order allow,deny
allow from all
〈/Directory>
〈Directory /home/ftp/pub/host>
Options Indexes
AllowOverride AuthConfig
order allow,deny
allow from all
〈/Directory>
且看/home/ftp/pub/.htaccess為:
,AuthName "shared files"
AuthType Basic
AuthUserFile /etc/.passwd
require valid-user
且看/home/ftp/pub/host/.htaccess
AuthName "shared files"
AuthType Basic
AuthUserFile /etc/.passwd
AuthGroupFile /etc/.hostgroup
require group manager
且文件/etc/.passwd內(nèi)容為:
user1:passwd1
user2:passwd2
user3:passwd3
且文件/etc/.hostgroup內(nèi)容為:
manager: user1 user2
虛擬目錄
#vi /etc/httpd/conf.d/xuanfei.conf
Alias /xuanfei /home/xuanfei
(設置虛擬目錄屬性)
Options Indexes MultiViews
(當沒有主頁時以是否顯示文件及文件夾)
AllowOverride None
Order allow,deny
Allow from all
虛擬主機設置
簡介:這里說的虛擬主機是指在一臺機器上僅運行一個httpd 后臺程序 支持多個Apache 服務器,如在公司財務部門有一臺web 服務器,名為 account.xuanfei.net, 同時又想為host 部門建立網(wǎng)站,網(wǎng)站內(nèi)容也 放在該機器上,通過host.xuanfei.net 訪問,這就要用到虛擬主機 設置。
設置Apache 虛擬主機通常有兩種方案
一、基于IP 的虛擬主機
這種方式需要在機器上設置IP 別名,象上面的例子,在一臺機器的 網(wǎng)卡上綁定多個IP 地址去服務多個虛擬主機。
若該機器的IP 地址為10.45.63.2(account.xuanfei.net ), 首先
你要設置IP 別名(假設用10.45.63.4作為其別名IP )。加下面的行到 /etc/rc.d/rc.local,確保每次啟動后自動運行。
#/sbin/ifconfig eth0:0 10.45.63.4 netmask 255.255.255.0 broadcast 10.45.63.255 up
#/sbin/route add -host 10.45.63.4 eth0:0
然后你需要設置/etd/httpd/conf/httpd.conf文件:
ServerAdmin root@xuanfei.net
,DocumentRoot /home/httpd/host.xuanfei.net
ServerName host.xuanfei.net
ErrorLog /var/log/httpd/host.xuanfei.net/error_log
TransferLog /var/log/httpd/host.xuanfei.net/access_log
然后分別創(chuàng)建目錄
/home/httpd/host.xuanfei.net,
/var/log/httpd/host.xuanfei.net
, 放相應的網(wǎng)站內(nèi)容到目錄/home/httpd/host.xuanfei.net下即可,并確保 你內(nèi)部的DNS 指定host.xuanfei.net 的A 記錄到IP 地址10.45.63.4 。
注:這種基于IP 的虛擬主機有一個缺點,就是你需要更多的IP 地址去服務各自的 虛擬主機,如果你僅僅有一個IP 地址,那么你將可以考慮用基于名字的虛擬主機 方案。
二、基于名字的虛擬主機:
它的優(yōu)勢就是不需要更多的IP 地址,容易配置,不需要其它軟硬件,現(xiàn)代的 瀏覽器大多都支持這種方式。與基于IP 的虛擬主機一樣,你需要編輯文件 /etc/httpd/conf/httpd.conf
NameVirtualHost 10.45.63.2
ServerAdmin root@xuanfei.net
DocumentRoot /home/httpd/host.xuanfei.net
ServerName host.xuanfei.net
ErrorLog /var/log/httpd/host.xuanfei.net/error_log
TransferLog /var/log/httpd/host.xuanfei.net/access_log
ServerAdmin root@xuanfei.net
DocumentRoot /home/httpd/test.xuanfei.net
ServerName test.xuanfei.net
ErrorLog /var/log/httpd/test.xuanfei.net/error_log
TransferLog /var/log/test.xuanfei.net/access_log
注: 你需要加NameVirtualHost 指示在最前面,下面依次為各個虛擬主機, 為了讓它工作,你需要把host.xuanfei.net, test.xuanfei.net的DNS
都指向IP 地址10.45.63.2
上面的兩種都將工作,如果是在外部網(wǎng)段,在互聯(lián)網(wǎng)上提供WWW 服務,你可能 沒有足夠的真實IP 地址來支持多個虛擬主機,便可用基于名字的虛擬主機方案, 若是在內(nèi)部網(wǎng)段上,你有較多的內(nèi)部保留IP 地址,將沒有太大的區(qū)別。 NameVirtualHost 11.22.33.44 ; 在這個IP 地址接收虛擬主機的服務
tualHost 111.222.33.44> ServerName www.xuanfei1.com DocumentRoot /www/xuanfei1 ServerName www.xuanfei2.com DocumentRoot /www/xuanfei2 三、基于端口的虛擬主機: ServerName www.xuanfei1.com DocumentRoot /www/xuanfei1 ServerName www.xuanfei2.com DocumentRoot /www/xuanfei2 此種方法應用相對沒那么方便!所以相對應用也少點!不同之處就是要在其域名或者IP 后面添加其端口。 基于CGI 的配置 要讓CGI 程序能正常運作,必須配置Apache 以允許CGI 的執(zhí)行,其方法有多種。 ScriptAlias ScriptAlias 指令使Apache 允許執(zhí)行一個特定目錄中的CGI 程序。當客戶端請求此特定目錄中的資源時,Apache 假定其中文件都是CGI 程序并試圖運行。 ScriptAlias 指令形如: ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/ 如果Apache 被安裝到默認的位置,默認的配置文件httpd.conf 中則會有上述配置。ScriptAlias 指令定義了映射到一個特定目錄的URL 前綴,與Alias 指令非常相似,兩者一般都用于指定位于DocumentRoot 目錄以外的目錄,其區(qū)別是ScriptAlias 又多了一層含義,即其URL 前綴中任何文件都被視為CGI 程序。所以,上述例子會指示Apache ,/cgi-bin/應該指向/usr/local/apache/cgi-bin/目錄,且視之為CGI 程序。 舉例,如果有URL 為http://www.example.com/cgi-bin/test.pl的請求,Apache 會試圖執(zhí)行/usr/local/apache/cgi-bin/test.pl文件并返回其輸出。當然,這個文件必須存在而且可執(zhí)行,并以特定的方法產(chǎn)生輸出,否則Apache 返回一個出錯消息。 ScriptAlias 目錄以外的CGI 由于安全原因,CGI 程序通常被限制在ScriptAlias 指定的目錄中,如此,管理員就可以嚴格地控制誰可以使用CGI 程序。但是,如果采取了恰當?shù)陌踩椒ù胧?,則沒有理由不允許其他目錄中的CGI 程序運行。比如,你可能希望用戶在UserDir 指定的宿主目錄中存放頁面,而他們有自己的CGI 程序,但無權存取cgi-bin 目錄,這樣,就產(chǎn)生了運行其他目錄中CGI 程序的需求。 用Options 顯式地允許CGI 的執(zhí)行 可以在主服務器配置文件中,使用Options 指令顯式地允許特定目錄中CGI 的執(zhí)行: Options ExecCGI 上述指令使Apache 允許CGI 文件的執(zhí)行。另外,還必須告訴服務器哪些文件是CGI 文件。下面的AddHandler 指令告訴服務器所有帶有cgi 或pl 后綴的文件是CGI 程序: AddHandler cgi-script cgi pl .htaccess 文件 .htaccess 文件是針對目錄進行配置的一種方法。Apache 在提供一個資源時,會在此資源所在目錄中尋找。htaccess 文件,如果有,則使其中的指令生效。AllowOverride 指令決定了。htaccess 文件是否有效,它指定了哪些指令可以出現(xiàn)在其中,或者根本不允許使用。為此,需要在主服務器配置中如此配置: AllowOverride Options 在。htaccess 文件中,需要如此配置: Options ExecCGI 以使Apache 允許此目錄中CGI 程序的執(zhí)行。 從網(wǎng)絡訪問CGI 程序,瀏覽器中可能會發(fā)生四種情況: CGI 程序的輸出 太好了!這說明一切正常。 CGI 程序的源代碼或者一個"POST Method Not Allowed"消息 這說明Apache 沒有被正確配置以執(zhí)行CGI 程序,重新閱讀configuring Apache 看看遺漏了什么。 一個以"Forbidden" 開頭的消息 這說明有權限問題。參考Apache error log和下面的文件的權限。 一個"Internal Server Error"消息 查閱Apache error log ,可以找到CGI 程序產(chǎn)生的出錯消息"Premature end of script headers" 。對此,需要檢查下列各項,以找出不能產(chǎn)生正確HTTP 頭的原因。 文件的權限 記 住,服務器不是以你的用戶身份運行的,就是說,在服務器啟動后,擁有的是一個非特權用戶的權限-通常是``nobody''或者``www'' -而需要更大的權限以允許文件的執(zhí)行。通常,給予``nobody''足夠的權限以執(zhí)行文件的方法是,對文件賦予everyone execute權限: 基于PERL 的配置 先用perl -v命令檢查是否已安裝了perl, 如果不能出現(xiàn)版本號,先安裝perl 進入apache 配置文件,如果要運行perl 寫的cgi 程序,寫上:ScriptAlias /cgi-bin/ "cgi-bin所在目錄" ,linux 的cgi-bin 目錄默認在/var/www/cgi-bin/;如果要運行。pl 文件,則加上: AddHandler cgi-script .pl 修改/etc/http/conf.d/perl.conf文件,將以下內(nèi)容前的#號去掉 Alias /perl /var/www/perl Sethandler perl-script Perresponsehandler modperl::registry Perloptions parseheaders ptions ExecCGI 基于JSP 的配置 jakarta-tomcat-4.0下載地址: 安裝步驟: JDK: 1)將安裝程序復制到 /usr/local目錄下 2)執(zhí)行命令: ./j2sdk-1_4_2_01-linux-i586.bin 解壓后得到目錄j2sdk-1.4.2_01,將目錄名改為j2sdk-1.4.2,不然后面的操作會無效。 3)依次執(zhí)行下列命令: ln -s j2sdk-1.4.2 jdk ln -s jdk/jre jre 4)設置環(huán)境變量 vi /etc/profile 加入如下內(nèi)容: export JAVA_HOME=/usr/local/jdk export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar PATH=$PATH:/usr/local/j2sdk1.4.2/bin 5)測試JDK 是否安裝成功 cd /etc javac 如果出現(xiàn)關于javac 的使用說明,表示安裝成功。 TOMCAT: 1)將安裝程序復制到 /usr/local目錄下 2)執(zhí)行命令: tar -zxvf jakarta-tomcat-5.0.19.tar.gz 解壓后得到目錄jakarta-tomcat-5.0.19 3)設置環(huán)境變量 vi /etc/profile 加入如下內(nèi)容: export TOMCAT_HOME=foo/tomcat 4)進入 /usr/local/jakarta-tomcat*/bin vi shutdown.sh 添加 export JAVA_HOME=/usr/jdk export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=$JAVA_HOME/lib 執(zhí)行: ./startup.sh start 啟動tomcat 服務器 5)測試是否安裝成功 用瀏覽器瀏覽http://localhost:8080 如果出現(xiàn)tomcat 的歡迎頁面,表示安裝成功。 Apache 和tomcat 的整合 安裝和配置mod_jk2 #cp etc/httpd/conf.d/jk2.conf /etc/httpd/conf.d/ #cp usr/lib/httpd/modules/* /usr/lib/httpd/modules/ #cp –a usr/share/doc/mod_jk2/ /usr/share/doc/mod_jk2/ #cp –a var/www/manual/mod_jk2/ /var/www/manual/mod_jk2/ b)、 編輯mod_jk2配置文件 #vi /etc/httpd/conf/workers2.properties 在末尾加入以下語句: [uri:/*.jsp] worker=ajp13:localhost:8009 c )、配置Tomcat Tomcat 默認的主目錄/usr/local/tomcat/webapps/ROOT/ 需要設置和 Apache 的主目錄一致; 編輯T omcat 主配置文件: #vi /usr/local/tomcat/conf/server.xml 找到 重新啟動Apache 和T omcat #/etc/init.d/httpd restart #/usr/local/tomcat/bin/shutdown.sh#/usr/local/tomcat/bin/startup.sh 測試Apache 和T omcat 整合 在Apache 主目錄(/var/www/html/)中建立Test.jsp 文件內(nèi)容如下: Hello! Welcom to here The time is <= new java.util.Date() > 在瀏覽器中輸入http://10.45.63.35/test.jsp 出現(xiàn)下面信息頁面,代表Apache 和Tomcat 整合運行環(huán)境配置成功。 三、啟用與測試 啟動apache [root@localhost]#/etc/rc.d/init.d/httpd start 關閉apache [root@localhost]#/etc/rc.d/init.d/httpd stop 重新啟動apache [root@localhost]#/etc/rc.d/init.d/httpd restart 在瀏覽器輸入:http://www.xuanfei.net 四、小結 Apache 慢慢地已經(jīng)成為Internet 上最流行的Web 服務器軟件了。在所有的Web 服務器軟件中,Apache 占據(jù)絕對優(yōu)勢,遠遠領先排名第二的Microsoft IIS 本問還很多相關的安全配置 性能優(yōu)化 負載均衡等等多方面還未涉及,這只是個開始,望日后繼續(xù)努力更新!本文網(wǎng)上眾多網(wǎng)友的文章整合而成,如以上內(nèi)容有誤或有不足之處,望朋友能給予意見或者建議!謝謝:)