1、LINUX的APACHE伺服器的編譯安裝配置設置從頭到尾的步驟.個人主頁的建立細節.請高手詳細指點.~~
建議:
1. 安裝Apache伺服器,可以使用命令:rpm -qa |grep httpd,如果顯示如下:
[root@localhost bin]# rpm -qa |grep httpd
httpd-manual-2.2.3-31.el5
httpd-2.2.3-31.el5
system-config-httpd-1.3.3.3-1.el5
說明已經安裝了Apache軟體;
2. 啟動Apache伺服器使用命令「service httpd start",顯示結果如下:
[root@localhost bin]# service httpd start
Starting httpd:
3. 配置httpd.conf文件;
4. 配置目錄許可權;
5. 創建虛擬目錄;
6. 用戶認證。
推薦參考書目:
1. 《Linux系統與網路服務管理 技術大全(第二版)》楊明華 譚勵等編著 電子工業出版社 79元 含光碟一張;
2. 《Linux系統管理與網路管理》 余柏山等編著 清華大學出版社 89元 含光碟一張。
讀完這兩本書,基本上就夠用了。
建議:
1. 最好在系統中先安裝VMware虛擬機,然後在虛擬機中安裝Redhat Enterprise Linux 5等Linux系統;
2. 在虛擬機的Linux系統中進行各種測試,這樣就算有問題也沒有什麼關系。
2、linux伺服器怎樣綁定域名?
一、DNS伺服器的設置
我們知道互聯網網是基於TCP/IP協議的,要進行通信必須獲得對方的IP地址,這是通過DNS伺服器來實現的。因此要想實現虛擬域名首先應當令DNS伺服器接受該虛擬域名,即把它映射到指定的IP地址上。因為我們靠Web伺服器來區分域名,所以這個IP地址自然應當是Web伺服器所管理的。
RedHat6.0操作系統中捆綁有BIND DNS伺服器。它的域名配置文件是」/etc/named.conf」,一般情況下,域配置文件放在」/var/named」目錄下面。
例1、named.conf文件的配置:
zone 「domain.com」 {
type master;
file 「domain.com」;
};
zone 「0.10.10.in-addr.arpa」 {
type master;
file 「10.10.0〃;
};
該例子說明」domain.com」的域配置文件是」/var/named/domain.com」,反向域的配置文件是」/var/named/10.10.0〃。domain.com文件負責把DNS域名映射為IP地址。
例2、domain.com文件配置:
@ IN SOA dns.domain.com. hostmaster.dns.domain.com. (
1998111003 ; serial
3600 ; refresh
900 ; retry
1209600 ; expire
43200 ; default_ttl
)
@ IN MX 10 dns.domain.com.
@ IN NS dns.domain.com.
@ IN A 10.10.0.1
www IN A 10.10.0.1
假定要增加的域名是aaa.domain.com,想要指到www.domain.com,DNS服務中應增加一個別名記錄,可寫成:
aaa IN CNAME www.domain.com.
如果需要配置大量的虛擬域名,domain.com文件要很大,而且也相當麻煩。我們可以使用符號 「*」 ,即在 domain.com 文件中加入:
* IN CNAME www.domain.com.
這樣它就把所有沒給出設置的以domain.com結尾的記錄全部轉到www.domain.com去了,不管是aaa.domain.com還是bbb.domain.com。這不會影響已有的記錄。配置好DNS伺服器後應該重新啟動守護進程named:
[root@domain /root]# /etc/rc.d/init.d/named restart
二、Apache伺服器的配置
Apache伺服器是目前互聯網上使用最多的Web伺服器,它可以維護非常繁忙的站點。RedHat 6.0捆綁了Apache Web Server 1.3。它的配置文件位於」/etc/httpd/conf」目錄下,有httpd.conf、srm.conf、access.conf,下面討論一下與虛擬域名有關的配置:
1、靜態配置
修改配置文件 httpd.conf 的步驟:
(1) 首先設置UseCanonicalName為off。它指示用伺服器Host:header的內容代替ServerName 的值來提供給環境變數SERVER_NAME。
(2) 然後加入:
NameVirtualHost xxx.xxx.xxx.xxx其中xxx.xxx.xxx.xxx為所要配置的虛擬伺服器的IP地址。在此可配置多個虛擬IP地址,當然要與DNS伺服器中的配置一致。(注意:這里要用IP地址,不能用域名。)
(3) 接下來為每個虛擬域名加入一段記錄:
< virtualhost xxx.xxx.xxx.xxx>
…..
< /virtualhost>
xxx.xxx.xxx.xxx要和NameVirtualHost配置的IP地址一致。在兩個標志之間可加入的配置參數有:
ServerName後面跟你要增加的虛擬域名,如aaa.domain.com ;
Documentroot如果你映射到本機的路徑就加在後面,如」/home/aaa」 ;
redirect如果你映射到遠端的URL可加在後面,有兩個參數,第一個是虛擬域名的相對路徑,第二個是遠端站點的URL;
ServerAlias後可加入本域名的別名,可使用通配符,如*.aaa.domain.com 。
下面舉兩個例子:
例3、映射到本機的物理路徑:
< virtualhost xxx.xxx.xxx.xxx>
DocumentRoot 「/home/test」
ServerName test.domain.com
< virtualhost>
例4、映射到遠端的URL:
< virtualhost xxx.xxx.xxx.xxx>
ServerName test1.doamin.com
redirect / http://test.domain1.com/welcome.htm
< /virtualhost>
還有一些參數,象log文件的位置、超時的設置、緩沖區的設置等等,在此不一一介紹,可以參考Apache伺服器的在線幫助文件。配置好httpd.conf文件後需要重新啟動Apache的後台守護進程httpd,
[root@domain /root]# /etc/rc.d/init.d/httpd restart
每增加一個虛擬域名就要增加一段位於 < VirtualHost...>…< /VirtualHost> 之間的配置代碼,而且只有在重新啟動 httpd 後新配置才能生效。
2、動態配置
可以發現,如果要配置大量的虛擬域名將大大增加配置文件的長度,這樣還會使Apache啟動變慢,佔用更多的內存,而且也不容易實現在線申請。可以通過選擇動態方式來配置。這樣不必事先寫好配置,而是通過編寫一定的動態規則來自動生成或隨時從獨立的配置文件中讀取信息。
Apache有一個強大的擴展功能,即模塊(Moles)的特性。模塊可對伺服器的功能進行擴充,它在運行和使用時才裝入伺服器,這樣比一直放入伺服器中要節省內存空間,同時也比調用外部CGI程序速度快。
現在使用一個功能強大的模塊來實現動態配置虛擬域名,這就是mod_rewrite。它負責偵聽從客戶機送出的URL地址,並基於一組規則表達式對該URL來進行重寫。這類似於URL別名概念,但它更進了一步,輸出的URL可以映射到其他主機的任何URL地址上。 修改配置文件httpd.conf的步驟:
(1) 先設置UseCanonicalName為off 。
(2) 使用RewriteEngine on打開rewrite引擎。用RewriteMap設定配置文件的位置和屬性,用RewriteCond和RewriteRule制定相應的規則。
例5、httpd.conf 文件中相關配置的一個例子:
RewriteEngine on
RewriteMap lowercase int:tolower
# 定義獨立的配置文件的位置
RewriteMap vhost dbm:/www/conf/vhostdbm
# 利用獨立的配置文件重映射虛擬域名
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/docs/$1
RewriteCond %{REQUEST_URI} ^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/cgi-bin/$1
這里的 vhostdbm 文件格式見」CGI 程序的編制」 。
三、CGI程序的編制
要實現虛擬域名的在線申請,就必須編寫相應CGI程序動態修改獨立的配置文件(即上面的vhostdbm文件)和進行用戶的管理(包括用戶申請,登錄,密碼修改等等)。在此只介紹對獨立的配置文件的操作,其他屬於如何用Perl語言來編寫CGI程序,請參考有關資料。
vhostdbm文件使用dbm格式來記錄數據,與用普通文本文件相比可加快尋找速度,而且易於修改。許多UNIX系統都具有叫做dbm(database management)的標准庫。該庫將鍵-值對的集合存貯到一對磁碟文件中,提供簡單的資料庫管理工具,可以方便的更改、新增或刪除數據內容。
Perl訪問dbm的方式:通過一個類似於打開文件的進程將關聯數組與dbm資料庫聯系起來。在數組中創建新元素時立即就更改了dbm資料庫。刪除一個元素的同時也刪除了dbm資料庫中的數值。可使用:
1、欲將dbm資料庫與dbm數組相關聯起來:
dbmopen(%arrayname,」dbmfilename」,$mode);
如果dbmfilename不存在的話就新建該庫。%arrayname參數是Perl的關聯數組(如果這個數組已經有值,那麼這些值就被刪除)。該關聯數組連接到叫做dbmfilename的dbm資料庫中。$mode 參數是當需要創建庫時控制庫文件許可權的數字,該數字被指定為8制,經常被用到的是0644,給除了機主之外的新用戶以只讀的許可權,機主可有全部許可權。
2、關閉dbm庫:
dbmclose(%arrayname);
%arrayname 是已經與dbm庫關聯了的數組名。
例6、VHOST打開vhostdbm,或新建一個dbm庫:
dbmopen(%VHOST,」vhostdbm」,0644);
例7、新建記錄或更改已有記錄(設從html文件form中傳過來的參數名為vhost、rhost):
$VHOST{$FORM{』vhost』}}=$FORM{』rhost』};
例8、刪除已有記錄(設從html文件form中傳過來的參數名為vhost):
delete $VHOST{$FORM{』vhost』}};
例9、關閉vhostdbm:
dbmclose(%VHOST);
註:以上已經假設傳過來的參數經過了驗證,不存在重復的記錄,否則會導致已有記錄的混亂。
httpd.conf 該文件底部
< virtualhost 192.168.0.100> #你的伺服器ip
DocumentRoot 「/home/test」 #你的網站路徑
ServerName test.domain.com #你的域名
< virtualhost>
3、linux apache 如何限制域名的數量???現在伺服器被惡意綁定了10來個域名 我暈
是說,別人把域名解析到了你的伺服器?
那很簡單,把這些域名全部做301跳轉到你自己的域名,他就算是給你做了嫁衣……
4、linux下 怎麼向apache添加php模塊
PHP作為apache的模塊運行。
首先下載php,將PHP解壓到你喜歡的位置
修改apache的配置文件,加上
LoadMole php5_mole moles/libphp5.so路徑可能不一樣,在剛剛解壓的PHP目錄下可以找鏈接庫,可復制到apache的擴展庫文件夾下
5、如何部署linux下Apache的SSL數字證書
Apache環境部署SSL證書教程:網頁鏈接
如果以上文檔不適合您,也可以在Gworg查找一下相關資料。
6、怎樣正確配置apache實現用戶個人主頁?(linux)
Apache伺服器的設置文件位於/usr/local/apache/conf/目錄下,傳統上使用三個配置文件httpd.conf,access.conf和srm.conf,來配置Apache伺服器的行為。
httpd.conf提供了最基本的伺服器配置,是對守護程序httpd如何運行的技術描述;srm.conf是伺服器的資源映射文件,告訴伺服器各種文件的
MIME類型,以及如何支持這些文件;access.conf用於配置伺服器的訪問許可權,控制不同用戶和計算機的訪問限制;這三個配置文件控制著服務
器的各個方面的特性,因此為了正常運行伺服器便需要設置好這三個文件。
除了這三個設置文件之外,Apache還使用mime.types文件用於標識不同文件
對應的MIME類型, magic文件設置不同MIME類型文件的一些特殊標識,使得Apache 伺服器從文檔後綴不能判斷出文件的MIME 類型時,能通過
文件內容中的這些特殊標記來判斷文檔的MIME類型。
bash-2.02$ ls -l /usr/local/apache/conf
total 100
-rw-r--r-- 1 root wheel 348 Apr 16 16:01 access.conf
-rw-r--r-- 1 root wheel 348 Feb 13 13:33 access.conf.default
-rw-r--r-- 1 root wheel 30331 May 26 08:55 httpd.conf
-rw-r--r-- 1 root wheel 29953 Feb 13 13:33 httpd.conf.default
-rw-r--r-- 1 root wheel 12441 Apr 19 15:42 magic
-rw-r--r-- 1 root wheel 12441 Feb 13 13:33 magic.default
-rw-r--r-- 1 root wheel 7334 Feb 13 13:33 mime.types
-rw-r--r-- 1 root wheel 383 May 13 17:01 srm.conf
-rw-r--r-- 1 root wheel 357 Feb 13 13:33 srm.conf.default
事實上當前版本的Apache將原來httpd.conf、srm.conf與access.conf中的所有配置參數均放在了一個配置文件httpd.conf中,只是為了與
以前的版本兼容的原因(使用這三個設置文件的方式來源於NCSA-httpd),才使用三個配置文件。而提供的access.conf和srm.conf文件中沒有
具體的設置。
由於在新版本的Apache中,所有的設置都被放在了httpd.conf中,因此只需要調整這個文件中的設置。以下使用預設提供的httpd.conf為
例,解釋Apache伺服器的各個設置選項。然而不必因為它提供設置的參數太多而煩惱,基本上這些參數都很明確,也可以不加改動運行Apache
伺服器。但如果需要調整Apache伺服器的性能,以及增加對某種特性的支持,就需要了解這些設置參數的含義。
關於Apache伺服器的性能,在Internet上存在很大的爭議,基本上使用Apache的使用者幾乎都不懷疑它的優秀性能,Apache也支撐了很多
著名的高負載的網站,但是在商業機構的評測中,Apache往往得分不高。很多人指出,在這些評測中,商業Web伺服器及其操作系統往往由其專
業公司的工程師進行過性能調整,而Free 的操作系統和Web伺服器往往就使用其預設配置或僅僅作很小的更改。需要指出的是,除了操作系統
的性能調整之外,Apache 伺服器本身的預設配置絕不是最優化和最高效的,而是要適應幾乎所有種類操作系統、所有種類硬體下的設置,多平
台的軟體不可能為特定平台和特定硬體提供最優化的預設配置。因此要使用Apache的時候,性能調整是必不可少的。
在商業評測中忽略了的另一個事實是,評測時往往對不同種類的功能進行比較,例如使用Apache的標准CGI 的性能與ISAPI,NSAPI等服務
器端API比較,事實上Apache伺服器與此可以比較的功能為modperl ,FastCGI,與ASP類似的功能為PHP等等,只不過由於Apache的開放模式,
這些功能是由獨立的開發組,作為獨立的模塊來實現的。但是在評測中,測試人員沒有加入相應的模塊評測其性能。
HTTP守護進程的運行參數
httpd.conf中首先定義了一些httpd守護進程運行時需要的參數,來決定其運行方式和運行環境。
ServerType standalone
ServerType定義伺服器的啟動方式,預設值為獨立方式standalone,httpd伺服器將由其本身啟動,並駐留在主機中監視連接請求。在
Linux下將在啟動文件 /etc/rc.d/rc.local/init.d/apache中自動啟動Web伺服器,這種方式是推薦設置。
啟動Apache伺服器的另一種方式是inet方式,使用超級伺服器inetd監視連接請求並啟動伺服器。當需要使用inetd啟動方式時,便需要更
改為這個設置,並屏蔽/etc/rc.d/rc.local/init.d/apache文件,以及更改/etc/inetd.conf並重起inetd,那麼Apache就能從inetd中啟動了。
兩種方式的區別是獨立方式是由伺服器自身管理自己的啟動進程,這樣在啟動時能立即啟動伺服器的多個副本,每個副本都駐留在內存中
,一有連接請求不需要生成子進程就可以立即進行處理,對於客戶瀏覽器的請求反應更快,性能較高。而 inetd方式要由inetd發現有連接請求
後才去啟動http伺服器,由於inetd 要監聽太多的埠,因此反應較慢、效率較低,但節約了沒有連接請求時Web伺服器佔用的資源。因此
inetd方式只用於偶爾被訪問並且不要求訪問速度的伺服器上。事實上inetd方式不適合http的突發和多連接的特性,因為一個頁面可能包含多
個圖象,而每個圖象都會引起一個連接請求,即使雖然訪問人數造成教少,但瞬間的連接請求並不少,這就受到inetd性能的限制,甚至會影響
由inetd啟動的其他伺服器程序。
ServerRoot "/usr/local"
ServerRoot用於指定守護進程httpd的運行目錄,httpd在啟動之後將自動將
進程的當前目錄改變為這個目錄,因此如果設置文件中指定的文件或目錄是相對路徑,那麼真實路徑就位於這個ServerRoot定義的路徑之下。
由於httpd會經常進行並發的文件操作,就需要使用加鎖的方式來保證文件操作不沖突,由於NFS文件系統在文件加鎖方面能力有限,因此
這個目錄應該是本地磁碟文件系統,而不應該使用NFS文件系統。
#LockFile /var/run/httpd.lock
LockFile參數指定了httpd守護進程的加鎖文件,一般不需要設置這個參數, Apache伺服器將自動在ServerRoot下面的路徑中進行操作。
但如果ServerRoot為NFS文件系統,便需要使用這個參數指定本地文件系統中的路徑。
PidFile /var/run/httpd.pid
PidFile指定的文件將記錄httpd守護進程的進程號,由於httpd能自動復制其自身,因此系統中有多個httpd進程,但只有一個進程為最初
啟動的進程,它為其他進程的父進程,對這個進程發送信號將影響所有的httpd進程。PidFILE定義的文件中就記錄httpd父進程的進程號。
ScoreBoardFile /var/run/httpd.scoreboard
httpd使用ScoreBoardFile來維護進程的內部數據,因此通常不需要改變這個參數,除非管理員想在一台計算機上運行幾個Apache伺服器,
這時每個Apache伺服器都需要獨立的設置文件httpd.conf,並使用不同的ScoreBoardFile。
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
這兩個參數ResourceConfig和AccessConfig,就用於和使用 srm.conf 和 access.conf 設置文件的老版本Apache兼容。如果沒有兼容的需
要,可以將對應的設置文件指定為/dev/null,這將表示不存在其他設置文件,而僅使用httpd.conf 一個文件來保存所有的設置選項。
Timeout 300
Timeout定義客戶程序和伺服器連接的超時間隔,超過這個時間間隔(秒)後伺服器將斷開與客戶機的連接。
KeepAlive On
在HTTP 1.0中,一次連接只能作傳輸一次HTTP請求,而KeepAlive參數用於支持HTTP 1.1版本的一次連接、多次傳輸功能,這樣就可以在一
次連接中傳遞多個HTTP請求。雖然只有較新的瀏覽器才支持這個功能,但還是打開使用這個選項。
MaxKeepAliveRequests 100
MaxKeepAliveRequests為一次連接可以進行的HTTP請求的最大請求次數。將
其值設為0將支持在一次連接內進行無限次的傳輸請求。事實上沒有客戶程序在一次連接中請求太多的頁面,通常達不到這個上限就完成連接了
。
KeepAliveTimeout 15
KeepAliveTimeout測試一次連接中的多次請求傳輸之間的時間,如果伺服器
已經完成了一次請求,但一直沒有接收到客戶程序的下一次請求,在間隔超過了
這個參數設置的值之後,伺服器就斷開連接
-----------------------------------------------------------------------------------------
MinSpareServers 5
MaxSpareServers 10
在使用子進程處理HTTP請求的Web伺服器上,由於要首先生成子進程才能處理客戶的請求,因此反應時間就有一點延遲。但是,Apache服務
器使用了一個特殊技術來擺脫這個問題,這就是預先生成多個空餘的子進程駐留在系統中,一旦有請求出現,就立即使用這些空餘的子進程進
行處理,這樣就不存在生成子進程造成的延遲了。在運行中隨著客戶請求的增多,啟動的子進程會隨之增多,但這些伺服器副本在處理完一次
HTTP請求之後並不立即退出,而是停留在計算機中等待下次請求。但是空餘的子進程副本不能光增加不減少,太多的空餘子進程沒有處理任務
,也佔用伺服器的處理能力,因此也要限制空餘副本的數量,使其保持一個合適的數量,使得既能及時回應客戶請求,又能減少不必要的進程
數量。
因此就可以使用參數MinSpareServers來設置最少的空餘子進程數量, 以及使用參數MaxSpareServers 來限制最多的空閑子進程數量,多
余的伺服器進程副本就會退出。根據伺服器的實際情況來進行設置,如果伺服器性能較高,並且也被頻繁訪問,就應該增大這兩個參數的設置
。對於高負載的專業網站,這兩個值應該大致相同,並且等同於系統支持的最多伺服器副本數量,也減少不必要的副本退出。
StartServers 5
StartServers參數就是用來設置httpd啟動時啟動的子進程副本數量,這個參數與上面定義的MinSpareServers和MaxSpareServers參數相關
,都是用於啟動空閑子進程以提高伺服器的反應速度的。這個參數應該設置為前兩個值之間的一個數值,小於MinSpareServers和大於MaxS
pareServers都沒有意義。
MaxClients 150
在另一方面,伺服器的能力畢竟是有限的,不可能同時處理無限多的連接請求,因此參數Maxclient s就用於規定伺服器支持的最多並發訪
問的客戶數,如果這個值設置得過大,系統在繁忙時不得不在過多的進程之間進行切換來為太多的客戶進行服務,這樣對每個客戶的反應就會
減慢,並降低了整體的效率。如果這個值設置的較小,那麼系統繁忙時就會拒絕一些客戶的連接請求。當伺服器性能較高時,就可以適當增加
這個值的設置。對於專業網站,應該使用提高伺服器效率的策略,因此這個參數不能超過硬體本身的限制,如果頻繁出現拒絕訪問現象,就說
明需要升級伺服器硬體了。對於非專業網站,不太在意對客戶瀏覽器的反應速度,或者認為反應速度較慢也比拒絕連接好,就也可以略微超過
硬體條件來設置這個參數。
這個參數限制了MinSpareServers和MaxSpareServers的設置,它們不應該大於這個參數的設置。
MaxRequestsPerChild 30
使用子進程的方式提供服務的Web服務,常用的方式是一個子進程為一次連接服務,這樣造成的問題就是每次連接都需要生成、退出子進程
的系統操作,使得這些額外的處理過程占據了計算機的大量處理能力。因此最好的方式是一個子進程可以為多次連接請求服務,這樣就不需要
這些生成、退出進程的系統消耗,Apache就採用了這樣的方式,一次連接結束後,子進程並不退出,而是停留在系統中等待下一次服務請求,
這樣就極大的提高了性能。
但由於在處理過程中子進程要不斷的申請和釋放內存,次數多了就會造成一些內存垃圾,就會影響系統的穩定性,並且影響系統資源的有
效利用。因此在一個副本處理過一定次數的請求之後,就可以讓這個子進程副本退出,再從原始的httpd進程中重新復制一個干凈的副本,這樣
就能提高系統的穩定性。這樣,每個子進程處理服務請求次數由MaxRequestPerChild定義。 預設的設置值為30,
這個值對於具備高穩定性特點的Linux系統來講是過於保守的設置,可以設置為1000甚至更高,設置為0支持每個副本進行無限次的服務處理。
#Listen 3000
#Listen 12.34.56.78:80
#BindAddress *
Listen參數可以指定伺服器除了監視標準的80埠之外,還監視其他埠的HTTP請求。由於FreeBSD系統可以同時擁有多個IP地址,因此也
可以指定伺服器只聽取對某個BindAddress< /B>的IP地址的HTTP請求。如果沒有配置這一項,則伺服器會回應對所有IP的請求。
即使使用了BindAddress參數,使得伺服器只回應對一個IP地址的請求,但是通過使用擴展的Listen參數,仍然可以讓HTTP守護進程回應對
其他IP地址的請求。此時Listen參數的用法與上面的第二個例子相同。這種比較復雜的用法主要用於設置虛擬主機。此後可以用VirtualHost參
數定義對不同IP的虛擬主機,然而這種用法是較早的HTTP 1.0標准中設置虛擬主機的方法,每針對一個虛擬主機就需要一個IP地址,實際上用
處並不大。在HTTP 1.1中,增加了對單IP地址多域名的虛擬主機的支持,使得虛擬主機的設置具備更大的意義。
LoadMole mime_magic_mole libexec/apache/mod_mime_magic.so
LoadMole info_mole libexec/apache/mod_info.so
LoadMole speling_mole libexec/apache/mod_speling.so
LoadMole proxy_mole libexec/apache/libproxy.so
LoadMole rewrite_mole libexec/apache/mod_rewrite.so
LoadMole anon_auth_mole libexec/apache/mod_auth_anon.so
LoadMole db_auth_mole libexec/apache/mod_auth_db.so
LoadMole digest_mole libexec/apache/mod_digest.so
LoadMole cern_meta_mole libexec/apache/mod_cern_meta.so
LoadMole expires_mole libexec/apache/mod_expires.so
LoadMole headers_mole libexec/apache/mod_headers.so
LoadMole usertrack_mole libexec/apache/mod_usertrack.so
LoadMole unique_id_mole libexec/apache/mod_unique_id.so
ClearMoleList
AddMole mod_env.c
AddMole mod_log_config.c
AddMole mod_mime_magic.c
AddMole mod_mime.c
AddMole mod_negotiation.c
AddMole mod_status.c
AddMole mod_info.c
AddMole mod_include.c
AddMole mod_autoindex.c
AddMole mod_dir.c
AddMole mod_cgi.c
AddMole mod_asis.c
AddMole mod_imap.c
AddMole mod_actions.c
AddMole mod_speling.c
AddMole mod_userdir.c
AddMole mod_proxy.c
AddMole mod_alias.c
AddMole mod_rewrite.c
AddMole mod_access.c
AddMole mod_auth.c
AddMole mod_auth_anon.c
AddMole mod_auth_db.c
AddMole mod_digest.c
AddMole mod_cern_meta.c
AddMole mod_expires.c
AddMole mod_headers.c
AddMole mod_usertrack.c
AddMole mod_unique_id.c
AddMole mod_so.c
AddMole mod_setenvif.c
Apache伺服器的一個重要特性就是其模塊化的結構,這不但表現為其能在編
譯時能通過新的模塊加入新的功能,還表現為其模塊可以動態載入入http服務程
序中,而不必載入不需要的模塊。使用Apache的動態載入模塊只需要設置好Load Mole和AddMole參數就可以了,這種特性就是Apache的
DSO(Dynamic Shared Object)特性,然而要想充分使用DSO特性仍然不是一個簡單的事情,不適當的改動這里的設置就可能造成伺服器不能正
常啟動。因此如果不是要增加或減少伺服器提供的功能,就不要改動這里的設置。
上面這些列表就顯示了Linux下的預設Apache伺服器支持的模塊,事實上很
多模塊是沒有必要的,不必要模塊不會被載入內存。模塊可以靜態連接到pache 伺服器內部,也可以這樣動態載入,將Apache的特性都編譯成
動態可載入模塊是該Port的做法,而不是Apache的預設做法,這樣就以犧牲很小的性能的同時,帶來極大的靈活性。
因而動態可載入的能力還是對性能有輕微的影響,因此可以重新編譯Apache,將自己所需要的功能編譯進Apache 伺服器內部,可以讓系統
顯得更為干凈,效率也有輕微的提高。通常僅僅為了這一個目的就重新編譯Apache是沒有必要的,如果需要增加其他特性而重新編譯Apache,
不妨在增加其他模塊的同時將所有的模塊都靜態連接入Apache 伺服器。有的使用者更喜歡動態載入模塊,那麼也不妨全部都使用動態載入模塊
。
這些模塊都被放置到/usr/local/apache/libexec/目錄下, 每個模塊對應Apache伺服器的一個特性。詳細解釋每個模塊的功能需要相當多
的篇幅,其中比較重要的特性將在後面相應的地方中進行解釋,而具體每個模塊的功能及用法就需要查看Apache的文檔。
#ExtendedStatus On
Apache伺服器可以通過特殊的HTTP請求,來報告自身的運行狀態,打開這個ExtendedStatus 參數可以讓伺服器報告更全面的運行狀態信息
。
-----------------------------------------------------------------------------------------------------------------
主伺服器設置
Apache伺服器需要各種設置,以定義自己使用各種參數以提供Web服務。對於使用虛擬主機的情況,除了在虛擬主機的定義項中覆蓋的設置
之外(有的設置必須重新定義),這里的設置也是虛擬主機的預設設置。
Port 80
Port定義了Standalone模式下httpd守護進程使用的埠,標准埠是80。這個選項只對於以獨立方式啟動的伺服器才有效,對於以inetd
方式啟動的伺服器則在inetd.conf中定義使用哪個埠。
在Unix下使用80埠需要root許可權,一些管理員為了安全的原因,認為 httpd 伺服器不可能沒有安全漏洞,因而更願意使用普通用戶的權
限來啟動伺服器,這樣就不能使用80埠及其他小於1024的埠,而必須使用大於 1024的埠來啟動httpd,一般情況下8000或8080也是常用
的埠。而Apache httpd伺服器本身可以在以root許可權打開80埠後再改變為普通用戶身份進行運行,這樣就減少了危險性,因而就不需要考
慮這個安全問題。但是如果普通用戶也想安裝配置自己的WWW伺服器,那麼就不得不使用大於1024的埠。
User nobody
Group nogroup
User和Group配置是Apache的安全保證,Apache在打開埠之後,就將其本身設置為這兩個選項設置的用戶和組許可權進行運行,這樣就降低
了伺服器的危險性。這個選項也只用於 Standalone模式,inetd模式在inetd.conf中指定運行Apache的用戶。由於伺服器必須執行改變身份的
setuid()操作,因此初始進程應該具備root許可權,如果是使用非root用戶來啟動Aapche,這個配置就不會發揮作用。
預設設置為nobody和nogroup,這個用戶和組在系統中不擁有文件,保證了伺服器本身和由它啟動的CGI 進程沒有許可權更改文件系統。在某
些情況下,例如為了運行CGI與Unix交互,也需要讓伺服器來訪問伺服器上的文件,如果仍然使用nobody和nogroup,那麼系統中將會出現屬於
nobody的文件,這對於系統安全是不利的,因為其他程序也會以nobody和nogroup的許可權執行某些操作,就有可能訪問這些nobody擁有的文件,
造成安全問題。一般情況下要為Web服務設定一個特定的用戶和組,同時在這里更改用戶和組設置。
ServerAdmin [email protected]
配置文件中應該改變的也許只有ServerAdmin, 這一項用於配置WWW伺服器的管理員的email地址,這將在HTTP服務出現錯誤的條件下返回
給瀏覽器,以便讓Web使用者和管理員聯系,報告錯誤。習慣上使用伺服器上的webmaster作為WWW伺服器的管理員,通過郵件伺服器的別名機制
,將發送到webmaster 的電子郵件發送給真正的Web管理員。
#ServerName new.host.name
預設情況下,並不需要指定這個ServerName參數,伺服器將自動通過名字解析過程來獲得自己的名字,但如果伺服器的名字解析有問題(
通常為反向解析不正確),或者沒有正式的DNS名字,也可以在這里指定IP地址。當ServerName設置不正確的時候,伺服器不能正常啟動。
通常一個Web伺服器可以具有多個名字,客戶瀏覽器可以使用所有這些名字或IP地址來訪問這台伺服器,但在沒有定義虛擬主機的情況下,
伺服器總是以自己的正式名字回應瀏覽器。ServerName就定義了Web伺服器自己承認的正式名字,例如一台伺服器名字(在DNS中定義了A類型)
為exmaple.org.cn,同時為了方便記憶還定義了一個別名(CNAME記錄)為www.exmaple.org.cn,那麼Apache自動解析得到的名字就為
example.org.cn,這樣不管客戶瀏覽器使用哪個名字發送請求,伺服器總是告訴客戶程序自己為 example.org.cn。雖然這一般並不會造成什麼
問題,但是考慮到某一天伺服器可能遷移到其他計算機上,而只想通過更改DNS中的www別名配置就完成遷移任務,所以不想讓客戶在其書簽中
使用 Linux 記錄下這個伺服器的地址,就必須使用ServerName來重新指定伺服器的正式名字。
DocumentRoot "/www/"
DocumentRoot定義這個伺服器對外發布的超文本文檔存放的路徑,客戶程序請求的URL就被映射為這個目錄下的網頁文件。這個目錄下的子
目錄,以及使用符號連接指出的文件和目錄都能被瀏覽器訪問,只是要在URL上使用同樣的相對目錄名。
注意,符號連接雖然邏輯上位於根文檔目錄之下,但實際上可以位於計算機上的任意目錄中,因此可以使客戶程序能訪問那些根文檔目錄
之外的目錄,這在增加了靈活性的同時但減少了安全性。Apache在目錄的訪問控制中提供了FollowSymLinks選項來打開或關閉支持符號連接的
特性。
---------------------------------------------------------------------------------------------------------------------------
Options FollowSymLinks
AllowOverride None
Apache伺服器可以針對目錄進行文檔的訪問控制,然而訪問控制可以通過兩
種方式來實現,一個是在設置文件 httpd.conf(或access.conf)中針對每個目
錄進行設置,另一個方法是在每個目錄下設置訪問控制文件,通常訪問控制文件
名字為.htaccess。雖然使用這兩個方式都能用於控制瀏覽器的訪問,然而使用配置文件的方法要求每次改動後重新啟動httpd守護進程,比較
不靈活,因此主要用於配置伺服器系統的整體安全控制策略,而使用每個目錄下的.htaccess文件設置具體目錄的訪問控制更為靈活方便。
Directory語句就是用來定義目錄的訪問限制的,這里可以看出它的標准語法,為一個目錄定義訪問限制。上例的這個設置是針對系統的根
目錄進行的,設置了允許符號連接的選項FollowSymLinks ,以及使用AllowOverride None表示不允許這個目錄下的訪問控制文件來改變這里進
行的配置,這也意味著不用查看這個目錄下的相應訪問控制文件。
由於Apache對一個目錄的訪問控制設置是能夠被下一級目錄繼承的,因此對根目錄的設置將影響到它的下級目錄。注意由於AllowOverride
None的設置,使得Apache伺服器不需要查看根目錄下的訪問控制文件,也不需要查看以下各級目錄下的訪問控制文件,直至httpd.conf(或
access.conf )中為某個目錄指定了允許Alloworride,即允許查看訪問控制文件。由於Apache對目錄訪問控制是採用的繼承方式,如果從根目
錄就允許查看訪問控制文件,那麼Apache就必須一級一級的查看訪問控制文件,對系統性能會造成影響。而預設關閉了根目錄的這個特性,就
使得Apache從httpd.conf中具體指定的目錄向下搜尋,減少了搜尋的級數,增加了系統性能。因此對於系統根目錄設置AllowOverride None不
但對於系統安全有幫助,也有益於系統性能。
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
這里定義的是系統對外發布文檔的目錄的訪問設置,設置不同的 AllowOverride選項,以定義配置文件中的目錄設置和用戶目錄下的安全
控制文件的關系,而Options選項用於定義該目錄的特性。
配置文件和每個目錄下的訪問控制文件都可以設置訪問限制,設置文件是由管理員設置的,而每個目錄下的訪問控制文件是由目錄的屬主
設置的,因此管理員可以規定目錄的屬主是否能覆蓋系統在設置文件中的設置,這就需要使用AllowOverride參數進行設置,通常可以設置的值
為:AllowOverride的設置 對每個目錄訪問控制文件作用的影響
All 預設值,使訪問控制文件可以覆蓋系統配置
None 伺服器忽略訪問控制文件的設置
Options 允許訪問控制文件中可以使用Options參數定義目錄的選項
FileInfo 允許訪問控制文件中可以使用AddType等參數設置
AuthConfig 允許訪問控制文件使用AuthName,AuthType等針對每個用戶的認證機制,這使目錄屬主能用口令和用戶名來保護目錄 Limit 允許
7、linux伺服器 Apache伺服器如何設置二級域名綁定子目錄?
echo "NameVirtualHost *:80">>/etc/httpd/conf/httpd.conf
DocumentRoot 「/var/www/html/erji.test.com」
ServerName erji.test.com
類似這樣的配置不行?
8、Linux下Apache2的配置
你操作的是創建虛擬目錄,操作過程如下:
alias /home/secret "/var/pictures" 注釋:創建虛擬目錄
<directory "/var/pictures">
options indexes 注釋:允許瀏覽專目錄
order allow,deny 注釋:順序屬是先允許後拒絕
allow from all 注釋:允許所有的來訪問
</directory>
再到/var目錄下創建pictures目錄:
mkdir /var pictures
最後重啟服務 service httpd restart 就可以了
9、linux 雲主機已經配置了apache 如何綁定域名?求命令和步驟。
綁定域名是在apache配置文件里做的,一般vhosts.cfg打開修改就可以。這是做虛擬主機的例子。
10、如何在Linux+Apache+MySQL+PHP的環境下安裝wordpress個人博客系統?
lanmp的環境集成軟體有wdcp,這款有後台管理界面可以使用比較直觀
wdcp後台--》站點添加下綁定域名--》添加mysql賬戶--》添加ftp賬戶--》本地ftp軟體添加剛剛的ftp賬戶上傳WordPress站點資料--》域名解析到伺服器的ip上--》解析生效後訪問安裝;
ssh遠程到Linux命令行添加(都是yum安裝方式)
mkdir /var/www/html/test.com
chown apache:apache /var/www/html/test.com
echo "NameVirtualHost *:80">>/etc/httpd/conf/httpd.conf
sed -i 's/AllowOverride None/AllowOverride ALL/g' /etc/httpd/conf/httpd.conf
vi /etc/httpd/conf/httpd.conf 尾部添加
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/test.com
ServerName test.com
ErrorLog logs/test.com-error_log
CustomLog logs/test.com-access_log common
</VirtualHost>
/etc/init.d/httpd restart
創建資料庫
mysql -u root -p
create database testcom;
grant all privileges on testcom.* to 'testcom'@'localhost' identified by 'testcomD';
flush privileges;
quit
然後上傳WordPress到/var/www/html/test.com
域名解析生效後訪問安裝。