❶ 塊存儲、文件存儲、對象存儲這三者的本質差別是什麼
塊存儲主要是將裸磁碟空間整個映射給主機使用的,就是說例如磁碟陣列裡面有5塊硬碟(為方便說明,假設每個硬碟1G),然後可以通過劃邏輯盤、做Raid、或者LVM(邏輯卷)等種種方式邏輯劃分出N個邏輯的硬碟。(假設劃分完的邏輯盤也是5個,每個也是1G,但是這5個1G的邏輯盤已經於原來的5個物理硬碟意義完全不同了。例如第一個邏輯硬碟A裡面,可能第一個200M是來自物理硬碟1,第二個200M是來自物理硬碟2,所以邏輯硬碟A是由多個物理硬碟邏輯虛構出來的硬碟。)接著塊存儲會采旦派用映射的方式將這幾個邏輯盤映射給主機,主機上面的操作系統會識別到有5塊硬碟,但是操作系統是區分不出到底是邏輯還是物理的,它一概就認為只是5塊裸的物理硬碟陸遲迅而已,跟直接拿一塊物理硬碟掛載到操作系統沒有區別的,至少操作系統感知上沒有區別。此種方式下,操作系統還需要對掛載的裸硬碟進行分區、格式化後,才能使用,與平常主機內置硬碟的方式完全無異。優點早此:這種方式的好處當然是因為通過了Raid與LVM等手段,對數據提供了保護。另外也可以將多塊廉價的硬碟組合起來,成為一個大容量的邏輯盤對外提供服務,提高了容量。寫入數據的時候,由於是多塊磁碟組合出來的邏輯盤,所以幾塊磁碟可以並行寫入的,提升了讀寫效率。很多時候塊存儲採用SAN架構組網,傳輸速率以及封裝協議的原因,使得傳輸速度與讀寫速率得到提升。
❷ TPCC 大於 20萬的伺服器大概是什麼配置
TPC-C學習筆記
摘錄:本文章來自:
TPC-C學習筆記
2�TPCC基準測試
TPCC值被廣泛用於衡量C/S環境下,由伺服器和客戶端構築的整體系統的性能,它由事物處理性能委員會(TPC,Transaction Processing Corp)制定,TPC為非贏利性國際組織。
TPCC值可以反映出系統的性能價格比。TPCC測試系統每分鍾處理的任務數,單位為tpm,(transactions per minute)。系統的總體價格(單位為美元)除以TPCC值,就可以衡量出系統的性價比,系統的性價比值越小,系統的性價比越好。
需要注意的是,TPC-C值描述的是C/S整體系統的性能,它與系統的伺服器和客戶機的性能都有關系,也就是說,同樣的伺服器配置不同的客戶端將會影響TPCC值,任何廠商和測試者都可以根據TPC提供的測試規范構造出自己最優的系統,當然測試的結果要經過TPC審核。
---------------------------------------------------------------------------------------------------------------
性能測試指標介紹
TPC-C
作為一家非盈利性機構,事務處理性能委員會(TPC)負責定義諸如TPC-C、TPC-H和TPC-W基準測試之類的事務處理與資料庫性能基準測試,並依據這些基準測試項目發布客觀性能數據。TPC基準測試採用極為嚴格的運行環境,並且必須在獨立審計機構監督下進行。委員會成員包括大多數主要資料庫產品廠商以及伺服器硬體系統供應商。
相關企業參與TPC基準測試以期在規定運行環境中獲得客觀性能驗證,並通過應用測試過程中所使用的技術開發出更加強健且更具伸縮性的軟體產品及硬體設備。
TPC-C是一種旨在衡量聯機事務處理(OLTP)系統性能與可伸縮性的行業標准基準測試項目。這種基準測試項目將對包括查詢、更新及隊列式小批量事務在內的廣泛資料庫功能進行測試。許多IT專業人員將TPC-C視為衡量「真實」OLTP系統性能的有效指示器。
TPC-C基準測試針對一種模擬訂單錄入與銷售環境測量每分鍾商業事務(tpmC)吞吐量。特別值得一提的是,它將專門測量系統在同時執行其它四種事務類型(如支付、訂單狀態更新、交付及證券級變更)時每分鍾所生成的新增訂單事務數量。獨立審計機構將負責對基準測試結果進行公證,同時,TPC將出據一份全面徹底的測試報告。這份測試報告可以從TPC Web站點()上獲得。
tpmC定義: TPC-C的吞吐量,按有效TPC-C配置期間每分鍾處理的平均交易次數測量,至少要運行12分鍾。
1.TPC-C規范概要
TPC-C是專門針對聯機交易處理系統(OLTP系統)的,一般情況下我們也把這類系統稱為業務處理系統。
TPC-C測試規范中模擬了一個比較復雜並具有代表意義的OLTP應用環境:假設有一個大型商品批發商,它擁有若干個分布在不同區域的商品庫;每個倉庫負責為10個銷售點供貨;每個銷售點為3000個客戶提供服務;每個客戶平均一個訂單有10項產品;所有訂單中約1%的產品在其直接所屬的倉庫中沒有存貨,需要由其他區域的倉庫來供貨。
該系統需要處理的交易為以下幾種:
New-Order:客戶輸入一筆新的訂貨交易;
Payment:更新客戶賬戶余額以反映其支付狀況;
Delivery:發貨(模擬批處理交易);
Order-Status:查詢客戶最近交易的狀態;
Stock-Level:查詢倉庫庫存狀況,以便能夠及時補貨。
對於前四種類型的交易,要求響應時間在5秒以內;對於庫存狀況查詢交易,要求響應時間在20秒以內。
邏輯結構圖:
流程圖:
2.評測指標
TPC-C測試規范經過兩年的研製,於1992年7月發布。幾乎所有在OLTP市場提供軟硬體平台的廠商都發布了相應的TPC-C測試結果,隨著計算機技術的不斷發展,這些測試結果也在不斷刷新。
TPC-C的測試結果主要有兩個指標:
● 流量指標(Throughput,簡稱tpmC)
按照TPC的定義,流量指標描述了系統在執行Payment、Order-status、Delivery、Stock-Level這四種交易的同時,每分鍾可以處理多少個New-Order交易。所有交易的響應時間必須滿足TPC-C測試規范的要求。
流量指標值越大越好!
● 性價比(Price/Performance,簡稱Price/tpmC)
即測試系統價格(指在美國的報價)與流量指標的比值。
性價比越小越好!
---------------------------------------------------------------------------------------------------------------
[Oracle] How to Use Open Source Tools to Implement Your Own TPC-C
作者:Fenng
日期:Mar 14 2004 (v0.13)
出處:
版本:0.93
--------------------------------------------------------------------------------
本文簡介
介紹如何利用開源工具實現Oracle資料庫環境中的TPC-C.對DBA、開發人員、BI實施者有一定的參考價值.
引言描述
設想一下這樣一種情況:
您正在負責公司的一個OLTP類型的資料庫項目,面臨資料庫伺服器選型的問題:如何選擇硬體才能滿足產品環境的業務要求? 這個事情是「拍腦袋」 能決定的嗎?
不可否認,硬體選型是一門藝術,選擇合適的硬體,能給公司節省大筆的費用,選擇不能滿足業務需求的伺服器產品,不但花了冤枉錢,還會對將來的業務產生影響。
可能大家首先會想到參考伺服器的TPC-C的信息。提到TPC-C,可能很多人對此都感到既熟悉又陌生,因為經常聽人說起,但是具體的問下去,能說清楚的又沒有多少人,而且,從大家口中得到的還不盡相同。那麼什麼是TPC/TPC-C這些都代表什麼意思呢?
先說一下TPC-C,TPC-C是聯機事務處理(on-line transaction processing , OLTP)的基準程序。TPC-C模擬一個批發商的貨物管理環境。TPC-C使用三種性能和價格度量,其中性能由TPC-C吞吐率衡量,單位是tpmC。tpm是transactions per minute的簡稱;C指TPC中的C基準程序。它的定義是每分鍾內系統處理的新訂單個數。
了解了這些內容,您可能會想:我們公司的PC伺服器完全是自己攢出來的,如何進行TPC-C的衡量的?也去參考TPC官方站點上的信息?不要忘了,TPC.org 上公布的測試結果都是各大廠商根據自己的系統進行了充分優化之後的出來的結果。打個比方,TPC公布的數值就好比嶄新的法拉利跑車經過專業技師們的精心檢查保養,然後在專用跑道上跑出來的速度值,而我們的情況可能是法拉利(甚至是夏利)要在鄉村土路上行駛,可比性大打折扣。
有的朋友會想:那我們可以根據自己的情況,拿一個秒錶在「鄉村土路」上測試一下看看呀。這樣的意義也是顯而易見的,對我們的實際的環境不是更具有參考價值?不錯,這也正是本文的目的:讓我們利用開源(Open Source)工具來實現自己的針對Oracle資料庫的TPC-C。
Hammerora—the Open Source Oracle Load Test Tool
首先介紹一下Hammerora。從創作者對這個工具的標題描述可以看出,Hammerora是一款Oracle資料庫負載測試工具。該工具可以在Oracle 8i、9i和10g等版本上使用。當前可以用在linux/Unix和Windows上。初步實現了跨平台。Hammerora 完全用TCL/TK寫就,以GPL版權形式發布。
作者是Steve Shaw。該項目的主頁在: 。
Hammerora的設計原理是解析Oracle的Trace文件,並把它們轉化為Oratcl程序,然後在Oracle資料庫中用多個用戶並發的對用戶的事務進行「回放」。我們知道,Oracle的Trace文件能夠翔實的記錄用戶對資料庫的操作。這樣Hammerora能夠保證對用戶環境的真實模擬。
Hammerora最初是用以學習的目的:期望是模擬資料庫的一定數量的用戶。這樣一個小的基於家庭的學習開發系統就能夠比較接近產品環境。這個工具已經成長為一個Oracle資料庫做壓力測試--從小的資料庫到大的基於RAC的集群。
TCL語言已經用來提供高性能的和Oracle資料庫的OCI集成,而無需重新編譯生成的程序。每個生成的程序具有嚴格的TCL/Oratcl兼容性,並且可以在Hammerora的命令行Shell下運行。TCL的強大功能和靈活性意味著潛在的功能是無窮盡的。TCL線程包用來實現對Oracle資料庫的多個並發連接。
Hammerora包含Oracle存儲過程和TCL驅動腳本用來運行TPC-C基準程序。但是,我們先要構建一個同TPC-C規范相符的資料庫。這樣,我們需要用到Orabm。
Orabm
Orabm是Geoff Ingram (High-Performance Oracle: Proven Methods for Achieving Optimum Performance and Availability一書的作者)構建的一個程序包,包含了一套SQL腳本和幾個命令行程序。Orabm數據裝載程序(Orabmload)構建了一組遵從TPC-C標準的數據用以測試。Orabm的程序包和源代碼可以從它的主頁面( ) 得到。
Orabm的運行機制
Orabm的運行機制在Geoff Ingram有明確的說明,這里翻譯如下:Orabm通過在每個用戶指定的並發資料庫會話(session) 中運行用戶執行數量的資料庫事務來進行工作.事務通過ORABM模式下的ORABM_SERVERSIDE_STRESS存儲過程運行。對每個並發會話來說,ORABM_SERVERSIDE_STRESS運行在orabm命令行下指定的事務數,並返回該會話在采樣間隔完成時的TPS值.要確保所有並發會話都是在采樣間隔期間處理事務,TPS值僅包括事務的中間的80%,也即:初始的10%和最後的 10%將忽略掉。
更詳細信息可以參考 的內容.
安裝步驟
1) 安裝Oracle OCI 庫
對Oracle 9i 來說,如果沒有安裝該組件的話,可能要重新運行runInstall,在Oracle 9i Client procts樹中選擇"Oracle Call Interfaces" .
對Oracle 10g來說,Oracle 10 OCI 庫應該是默認安裝的.
2) 安裝TCL
cd /usr/local/src/tcl8.4.5/unix
rm -f config.cache
./configure --enable-threads --enable-shared
make clean
make
make install
3 安裝TK
cd /usr/local/src/tk8.4.5/unix
rm -f config.cache
./configure --with-tcl=../../tcl8.4.5/unix --enable-threads --enable-shared
make clean
make
make install
4 安裝TCL Threads
cd /usr/local/src/thread2.5.2/unix
rm -f config.cache
sh ../configure --enable-threads --enable-shared
make clean
make
make install
5 安裝Oratcl
對10g來說,要編輯配置文件,在1728 行附近, FOUND_ORACLE=0 那一行的下面添加如下部分內容:
echo "checking for Oracle 10.0 style toplevel (libclient10.a)" 1> &6
echo "configure:1730: checking for Oracle 10 style toplevel(libclient10.a)"> &5
for f in $oracle_directory $oratest1 $oratest2 $oratest3 \
$oracle4 /opt/oracle /u/oracle /usr/oracle /usr/local/oracle ; do
echo "$ac_t""looking for lib/libclient10.a in $f" 1>&6
if test -r "$f/lib/libclient10.a" ; then
ORA="$f/lib"
ORACLE_HOME=$f
echo "$ac_t""setting ORA to $ORA" 1>&6
testver=10
ORA_MAJOR_VERSION=10
ORA_MINOR_VERSION=0
FOUND_ORACLE=1
break
fi
done
export ORACLE_HOME=your_oracle_home_directory
cd /usr/local/src/oratcl-4-1-branch/unix
rm -f config.cache
sh ../configure --with-tcl=../../tcl8.4.5/unix \
--with-oracle-directory=$ORACLE_HOME --with-oracle-version=9 ( or 10 or 8! ) \
--enable-threads --enable-shared
vi Makefile - 把所有的 -rpath 改做 -Wl,-rpath,
make clean
make
make install
sqlplus orabm/orabm @delivery_sp.sql
sqlplus orabm/orabm @new_order_sp.sql
sqlplus orabm/orabm @ostat_sp.sql
sqlplus orabm/orabm @payment_sp.sql
sqlplus orabm/orabm @slev_sp.sql
步驟 操作 命令
1 創建 ORABM用戶(用TOOLS做默認表空間,
TEMP 表空間為臨時表空間) sqlplus system/pwd @orabm_user
2 創建表 sqlplus system/pwd @orabm_tab
3 裝載數據 $orabmload Warehouses 1
4 創建索引 sqlplus system/pwd @orabm_ind
5 分析表和索引 sqlplus system/pwd @orabm_analyze
6 創建壓力測試PL/SQL 過程 sqlplus system/pwd @orabm_serverside_stress
7 把表和索引數據緩沖到SGA sqlplus system/pwd @orabm_cache
把tpc-c.tcl腳本載入Hammerora中(要查看TCL文件注意把過濾正確的文件擴展名:不是*.trc 而是*.tcl ),在該tpc-c.tcl中查找connect字元串,調整為你的資料庫用戶連接信息。並調整虛擬用戶信息。
測試運行
運行Hammerora,創建需要的用戶數, 來模擬TPC-C 基準程序(注意調整好執行Hammerora程序的環境變數,最好直接用Oracle用戶來執行).
TPC基準程序及tpmc值
—兼談在使用性能度量時如何避免誤區
今天的用戶在選用平台時面對的是一個繽紛繁雜的世界。用戶希望有一種度量標准,能夠量化計算機系統的性能,以此作為選型的依據。作者曾在美國從事過數年計算機性能評價工作,深深體會到,計算機的性能很難用一兩種度量來 評價,而且,任何度量都有其優缺點,尤其是當使用者對性能度量了解不深時,很容易被引入一些誤區,甚至推演出錯誤的結論。本文以TPC基準程序為例,給出一 些實際建議,以幫助用戶避免進入這些誤區。
一、什麼是TPC和tpmC?
tpmC值在國內外被廣 泛用於衡量計算機系統的事務處理能力。但究竟什麼是tpmC值呢?作者曾向一些 用戶、推銷人員乃至某些國外大公司的技術人員問過這個問題,但回答的精確度 與tpmC值的流行程度遠非相稱。tpmC這一度量也常被誤寫為TPM或TPMC。
1、TPC
TPC(Transaction Processing Performance Council,事務處理性能委員會)是由數10家會員公司創建的非盈利組織,總部設在美國。該組織對全世界開放,但迄今為止,絕大多數會員都是美、 日、西歐的大公司。TPC的成員主要是計算機軟硬體廠家,而非計算機用戶,它的功 能是制定商務應用基準程序(Benchmark)的標准規范、性能和價格度量,並管理測 試結果的發布。
TPC的出版物是開放 的,可以通過網路獲取()。TPC不給出基準程序的代碼,而只 給出基準程序的標准規范(Standard Specification)。任何廠家或其它測試者都可以根據規范,最優地構造出自己的系統(測試平台和測試程序)。為保證測試結果的客觀性,被測試者(通常是廠家)必須提交給TPC一套完整的報告(Full Disclosure Report),包括被測系統的詳細配置、分類價格和包含五年維護費用在內的總價 格。該報告必須由TPC授權的審核員核實(TPC本身並不做審計)。現在全球只有幾個審核員,全部在美國。
2、tpmC
TPC已經推出了四套基準程序,被稱為TPC-A、TPC-B、TPC-C和TPC-D。其中A和B已經過時,不再使用了。TPC-C是在線事務處理(OLTP)的基準程序,TPC-D是決策支持(Decision Support) 的基準程序。TPC即將推TPC-E,作為大型企業(Enterprise)信息服務的基準程序。
TPC-C模擬一個批發 商的貨物管理環境。該批發公司有N個倉庫,每個倉庫供應10個地區,其中每個地 區為3000名顧客服務。在每個倉庫中有10個終端,每一個終端用於一個地區。在運 行時,10×N個終端操作員向公司的資料庫發出5類請求。由於一個倉庫中不可能 存儲公司所有的貨物,有一些請求必須發往其它倉庫,因此,資料庫在邏輯上是 分布的。N是一個可變參數,測試者可以隨意改變N,以獲得最佳測試效果。
TPC-C使用三種性能 和價格度量,其中性能由TPC-C吞吐率衡量,單位是tpmC。tpm是transactions per minute的簡稱;C指TPC中的C基準程序。它的定義是每分鍾內系統處理的新訂單個數。要注意的是,在處理新訂單的同時,系統還要按表1的要求處理其它4類事務 請求。從表1可以看出,新訂單請求不可能超出全部事務請求的45%,因此,當一個 系統的性能為1000tpmC時,它每分鍾實際處理的請求數是2000多個。價格是指系 統的總價格,單位是美元,而價格性能比則定義為總價格÷性能,單位是$/tpmC。
二、如何衡量計算機系統的性能和價格
在系統選型時,我們一定不要忘記我們是為特定用戶環境中的特定應用選擇系統。切忌為了「與國際接 軌」而盲目套用「國際通用」的東西。在性能評價領域,越是通用的度量常常越是不準確的。據我所知,美國的一些大用戶從不相信任何「國際通用」的度量,而是花相當精力,比如預算的5%,使用自己的應用來測試系統,決定選型。在使用任何一種性能和價格度量時,一定要弄明白該度量的定義,以及它是在什麼系統配置和運行環境下得到的,如何解釋它的意義等。下面我們由好到差討論三種方式。
1、在真實環境中運行 實際應用
最理想的方式是搞一個試點,要求製造商或系統集成商配合將系統(含平台、軟體和操作流程)在一個 實際用戶點真正試運行一段時間。這樣,用戶不僅能看到實際性能,也能觀察到系統是否穩定可靠、使用是否方便、服務是否周到、配置是否足夠、全部價格是否合理。如果一個部門需要購買一批同類的系統,這種方式應列為首選,因為它不僅最精確、穩妥,也常常最有效率,用戶還可先租一套系統作為試點。用這種方式得到的度量值常常具有很明確和實際的含義。
2、使用用戶定義的基準程序
如果由於某種原因第一種方式不可行,用戶可以定義一組含有自己實際應用環境特徵的應用基準程序。 我舉兩個例子:近年來,由於R/3軟體是應用層軟體,SAP公司的基準程序獲得了越來越多國外企業的認可;中國稅務總局最近也開發了自己的基準程序,以幫助稅務系統進行計算機選型。這種方式在中國尤其重要,因為中國的信息系統有其特殊性。
3、使用通用基準程序
如果第1種和第2種方式都不行,則使用如TPC-C之類的通用基準程序,這是不得已的一種近似方法。因 此,tpmC值只能用作參考。我們應當注意以下幾點:
(1)實際應用是否與基準程序相符
絕大多數基準程序都是在美國制訂的,而中國的企事業單位與美國的運作方式常常不一樣(恐怕也不應該或不可能一樣)。在使用TPC-C時,我們應該清楚地知道:我的應用是否符合批發商模式?事務請求是否與表1近似?對響應時間的要求是否滿足表1?如果都不是,則tpmC值的參考價值就不太大了。
(2)TPC度量的解釋
TPC基準程序是用來測系統而不是測主機的,廠家肯定要充分優化他們的被測系統。此處的「系統」包括主機、外設(如硬碟或RAID)、主機端操作系統、資料庫軟體、客戶端計算機及其 操作系統、資料庫軟體和網路連接等。在很多廠家的TPC測試系統中,主機的價格只是系統總價格的1/4或更小,而硬碟的價格有可能佔到總價格的1/3以上,因為TPC-C要求被測系統必須保存180天的事務記錄。如果同樣的主機被用到用戶的環境中,廠家報的tpmC值就意義不大,因為用戶的實際系統與廠家原來用於TPC測試的系統大不一樣。當同樣的主機用在不同的系統中時,tpmC值可能有相當大的變化,現在很多用戶還沒有意識到這一點。
我舉一個例子。假設用 戶希望購買一批同類系統,每一系統至少需要1GB的內存和50GB的硬碟。廠家A、B、C 各報了三個價格相當的系統,tpmC值分別為3000、2800、2600。用戶是否應該選廠 家A的產品呢?答案是:不一定。廠家用於測試tpmC值的系統與實際提供給用戶的系統配置大不一樣。tpmC最低的廠家C提供給用戶的系統反而有可能性能最好,不 論是以實際系統的tpmC值還是以用戶的實際應用性能來衡量。
(3)TPC測試的成本
TPC-C和TPC-D都是很復雜的基準程序,做一個嚴格的測試是很消耗資源的,廠家當然不會說出他們花費了多少錢和時間。但據國外知情人士透露,一個廠家做第一個TPC-C測試需 要幾十萬到上百萬美元的資金和半年左右的時間投入。因此,很多TPC的度量值都 是估計的。由於計算機系統換代頻繁,如果用戶一定要用通過審核的度量值,就必 須多等待半年時間,因此而不能用最先進的系統。中國的廠家通過審核的時間則 更長。
綜上所述,我們對中國 用戶(尤其是大用戶)在計算機系統的選型方面有如下建議:
最好建立一個真實的試點,因為實際應用環境是檢驗計算機系統的最好標准。
中國的行業應該建立符合自己實際應用的基準程序和測試標准。中國稅務總局的做法值得提倡。國家有關部門應該建立獨立的測試中心,制定跨行業、符合中國企事業運作模式的性能測試標准。
「國際通用」的度量可以作為參考值,而不應作為必要條件。尤其是一定要弄清這些流行度量有什麼含義,是在什麼樣的系統環境中測得的,以及基準程序是否符合企業真實的業務流程和運作模式。
Trackback:
❸ LINUX操作系統課程設計:企業伺服器的配置與實現怎樣做
一般購買大品牌的伺服器才有相應的驅動程序:
硬體:4核CPU,4G的內存,主板帶RIAD,512G內存,
安裝與配置Web伺服器
Apache伺服器源代碼安裝:
http://httpd.apache.org
Apache RPM軟體下載:
http://updates.redhat.com
Apache模塊和MPM可使用類型的更詳細介紹:
http://httpd.apache.org/docs-2.0/mod/N
Apache對模塊的使用有兩種方法,一種是將其永久性地編譯Apache內核中,即採用靜態編譯;另一種是採取動態編譯,將其編譯成DSO(Dynamic shared object,動態共享對象)模塊,DSO模塊的存儲是獨立於內核的,可被內核在需要時調用,具體是由mod_so模塊提供的運行時配置指令(LoadMole)來實現的,若在編譯中包含有任何動態模塊,則mod_so模塊會被自動包含進內核。若僅希望內核能夠支持裝載DSO模塊,但不實際編譯任何動態模塊,則在編譯配置時就明確指定--enable-so配置參數。
還提供了多道處理模塊MPMs(multi-processing moles),編譯過程中必須包含一個且只能有一個MPM,編譯時系統會根據平台類型自動選擇使用默認的MPM,也可在configure命令行中配置:
--with-mpm=要使用MPM類型
模塊的指定方法:
1.靜態編譯模塊到內核中,如編譯包含mod-sll和mod_rewrite(去掉mod_)模塊:
./configure --enable-mole="ssl rewrite"或./configure --enable-sll --enable-rewrite
動態編譯模塊為DSO:
./configure --enable-mods-shared="ssl rewrite"或./configure --enable-rewrite=shared
模塊說明:
httpd -l //查看httpd進程中包含哪些模塊;
httpd -S //檢查虛擬主機的配置是否存在語法錯誤;
httpd -f //啟動httpd守護進程時,載入配置文件;
mod_deflate模塊允許支持此功能的瀏覽器,在請求的頁面內容發送前進行壓縮,以節少網路帶寬。
mod_vbost_alias模塊支持虛擬主要的動態配置。
chkconfig --level 235 httpd on
chkconfig --list httpd
service httpd start
service httpd restart
service httpd reload //重新裝載httpd.conf(不重啟伺服器)
./configure --prefix=/usr/local/apache2 --enable-so --with-mpm=prefork --enable-moles="setenvif rewrite deflate vhost_alias"
#apachectl start //啟動Apache伺服器;
#apachectl restart
#echo "/usr/local/apache2/bin/apachectl start">>/etc/rc.d/rc.local //自動啟動
#httpd -t //檢查配置文件httpd.conf
#apachect configtest //檢查配置文件httpd.conf
#ServerRoot apache安裝路徑 //設置伺服器的根目錄;
#ServerName 完整的域名[:埠號] //設置伺服器用於重定向(埠)和虛擬主機;
#Listen [IP地址]埠號 //告訴伺服器接受來自指定埠或者指定IP地址的某埠的請求;
Listen 80
Listen 61.186.160.104:8088
#ServrAdmin E-mail地址 //設置Web站點管理員的E-mail地址,當產生錯誤時(如指定的網頁找不到),伺服器返回給客戶端的
錯誤信息中將包含該郵件地址,以告訴用戶該向誰報告錯誤;
#DocumentRoot 目錄路徑名 //設置Web伺服器站點根目錄;
DocumentRoot /usr/local/apache2/htdocs
#ErrorDocument 錯誤號 所要顯示的網頁 //定義當遇到錯誤時,伺服器將給客戶端什麼樣的回應,通常是顯示預設置的一個錯誤頁面;
grep ErrorDocument /etc/httpd/conf/httpd.conf //httpd.conf中一些對不同錯誤的響應信息;
#DirectoryIndex index.php index.htm index.html default.htm //設置站點主頁文件的搜索順序;
#user nobody //設置伺服器以哪種(nobody)用戶身份來響應客戶端的請求;
#Group # -1 //設置伺服器以哪種(nobody)用戶身份來響應客戶端的請求;nobody用戶許可權較小。
#AddDefaultCharset GB2312 //指定默認的字元集;
#TimeOut //設置連接請求超時的時間(秒),超時將斷開;
#KeepAlive //用於啟用持續的連接或者禁用;KeepAlive On|Off
#MaxKeepAliveRequests //設置在一個持續連接期間允許的最大HTTP請求數目;
#KeepAliveTimeout //設置在關閉TCP連接之前,等待後續請示求的秒數;一旦接受請求建立了TCP連接後則開始計時;
#PidFile logs/httpd.pid //指定存放httpd主(父)進程號的文件名;
日誌配置命令:
#ErrorLog //指定伺服器存放錯誤日誌文件的位置和文件名;
#LogLevel //設置記錄在錯誤日誌中的信息的詳細程序;
emerg 緊急,系統將無法使用;
alert 必須立即採取措施;
crit 致命情況;
crror 錯誤情況;
warm 警告;
info 普通信息;
notice 一般重要情況;
debug 出錯級別信息;
http://127.0.0.1 //測試Apache是否正常運行
Test Page
This page is used to test the proper operation of the Apache Web server after it has been installed. If you can read this page, it means that the Apache Web server installed at this site is working properly.
#rpm -q httpd
#rpm -Uvh http-2.0.40-21.11.i386.rpm
目錄說明:
/etc/httpd/conf //Apache伺服器的配置文件httpd.conf
/etc/rc.d/init.d/ //Apache伺服器啟動腳本安裝,httpd
/var/www/html //Web站點根目錄;
/usr/bin //Apache軟體包提供的可執行程序安裝在該目錄下。
/etc/httpd/logs //日誌文件
htdocs //默認Web站點的根目錄,可通過配置文件httpd.conf進行設置或更改;
cgi-bin //CGI腳本目錄;
bin //apachectl啟動腳本會自動設置在某些操作系統下,正常運行httpd所需的環境變數;
httpd守擴進程被調用後做的第一件事就是讀取httpd.conf,並根據其配置項來配置當前Web伺服器;
httpd.conf 分為三部分(section),
第一部分為全局環境設置,主要用於設置ServerRoot、主進程號的保存文件、
對進程的控制、伺服器偵聽的IP地址、埠、要裝載的DSO模塊
第二部分是伺服器的主要配置指一位置;
第三部分用於設置和創建虛擬主機;
Listen 80 //Web伺服器綁定在80埠;
DocumentRoot //設置Web站點的根目錄等;
訪問控制指令:
<Directory /usr/local/*/htdoes> //<Directory>使指定的目錄及其子目錄有效;不可嵌套。目錄名可使用「*」或「?」通配符,
<Files ~「\.ht"> //作用於指定的文件,則不管該文件實際存在子哪個目錄,允許所有主機訪問位於任何目錄下的.ht開的文件
Order allow,deny //指定allow和deny語句,哪一個被執行;允許、禁止訪問主機。
Allow from all //允許所有主機訪問;也可以是IP地址。
<Files>
</Directory>
<Location /assistant> //針對URL地址進行訪問限制,不是文件系統;
Order deny,allow //
Deny from all
Allow from 61.186.160.105
</Location>
Order deny,allow //若主機沒有被特別指出拒絕訪問,則該資源被允許訪問。
Order allow,deny //若主機沒有被特別指出允許訪問,則該主要將被拒絕訪問該資源。
Order mntual-failure //只有那些在allow語句中被指定,同時又沒有出現在deny語句的主機,才允許訪問。若主機在兩條指
令中都沒有出現,則將被拒絕訪問;
*、? //*代表任意個字元,?代表一個任意的字元;
<DirectoryMatch> //指定目錄名時,可直接使用正則表達式;<Directory>若要使用正則表達式,則需要在正則表達式前加「~"
<FilesMatch> //可直接使用正則表達式來通配多個文件;
AccessFileName .htaccess //.htaccess分布式配置文件,在該文件中也可放置一些配置指令,以作用於該文件所在的目錄以及
其下的所有子目錄。搜尋.htaccess文件會降低系統性能;
<Directory />
AllowOverride None //禁止系統查找.htaccess文件;
Options FollowSymLinks //Options:控制在特定目錄中將使用哪些伺服器特性;
</Directory>
Options命令可用的選項:
None 不啟用任何額處特性;
All 除MultiViews之外的所有特性,默認設置;
ExecCGI 允許執行CGI腳本;
FollowSymLinks 伺服器允許在此目錄中使用符號連接。在<Location>段中無效
Includes 允許伺服器端包含SSI(Server-side includes)
IncludesN()EXEC 允許伺服器端包含,但禁用#exec和#exec CGI命令。但仍可以從ScriptAltase目錄使用#include虛擬CGI腳本;
Indexes 如果一個映射目錄的URL被請求,而此目錄中又沒有DirectoryIndex(如:index.html),那麼伺服器返回一個
格式化後的目錄列表;
MultiViews 允許內容協商的多重視圖;
SymLinksIfOwnerMatch 伺服器僅在符號連接與其目的目錄或文件擁有者具有同樣的用戶ID時,才使用它;
ExecCGI 擁有ExecCGI執行許可權;
prefork.c 控制Apache進程,對於使用prefork多道處理模塊的Apache伺服器;
<IfMole prefork.c>
StartServers 5 //設置伺服器啟動時啟動的子進程的個數;
MinSpareServers 5 //設置伺服器中空閑子進程(即沒有HTTP處理請求的子進程)數目的下限;
MaxSpareServers 10 //設置伺服器中空閑子進程數目的上限。若空閑子進程超過該設置值,則父進程就會
停止多餘的子進程;
MaxClients 150 //設置伺服器允許連接的最大客戶數;
MaxRequestsPerChild 0 //設置子進程所能處理請求的數目上限,0為不受限制;
</IfMole>
access_log //日誌文件用於記錄伺服器處理的所有請求;
CustomLog 指定access_log日誌文件的位置和日誌記錄的格式;
LogFormat 定義日誌的記錄格式;
LogFormat 日誌格式字元串 日誌格式名稱
LogFormat "%h %1 %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined;
LogFormat "%h %1 %u %t \"%r\" %>s %b" common;
LogFormat "%{Referer}i->%U" referer;
LogFormat "%{User-agent}i「 agent;
LogFormat logs/access_log common
LogFormat "%v %h %l %u %t \"%r"\ %>s %b" vhost
CustomLog logs/vhost_log vhost
%a 遠程主機IP地址
%A 本地主機IP地址
%h 遠程主機名
%H 請求協議
%l 遠程登錄名
%u 來自auth 的遠程用戶
%U 請求的URL路徑
%U{User-agent}i 用戶瀏覽器類型
%b 發送的位元組數,不包括HTTP標題
%t 請求的時間
%r HTTP請求的第一行的內容
%s HTTP響應狀態碼,200代表訪問成功,404代表文件未找到,403代表禁止訪問,401代表未授權訪問,400代表錯誤請求。
%m 請求方法
%v 服務於該請求的伺服器的ServerName
%V 伺服器的名字,取決於UseCanonicalName的設置
%{Host}i 返回HTTP請求的主機頭信息,可能含埠號信息
split-logfile </var/www/myweb/vhost_log //當所有虛擬機日誌都記錄在主站點日誌中時,使用此命令將日誌按虛擬主機名分組,拆分成一個個獨立的日
志文件,第個日誌文件採用"虛擬主機名.log「形式命名,其中包含了該虛擬主機所產生的日誌記錄;
容器與訪問控制指令:容器指令通常用於封裝一組指令,使其在容器條件成立時有效,或者用於改變指令的作用域。
<IfMoe ! mpm_winnt.c> //<IfMoe>用於判斷指定的模塊是否存在,若存在(被靜態地編譯進伺服器,或是被動態裝載進伺服器)則包含於
其中的指令將有效,否則會被忽略。可嵌套使用。
<IfMoe ! mpm_netware.c> //若要使模塊不存在時所包含的指令有效,只需在模塊名前加一個「!」即可,
User nobody
Group # -1
</IfMoe>
</IfMoe>
基於域名虛擬主機:
例:假設當前伺服器的IP地址為192.168.3.120,現要在該伺服器創建兩個基於域名的虛擬主機,使用埠為標準的80,其域名分別為www.myweb1.com和www.myweb2.com,站點根目錄分別為/var/www/myweb1和/var/www/myweb2,日誌文件分別放在/var/vhlogs/myweb1和/var/vhlogs/myweb2目錄下面,Apache伺服器原來的主站點採用域名www.myweb.com進行訪問。
#vi /etc/hosts //使用/etc/hosts進行域名注冊;
192.168.3.120 www.myweb1.com www.myweb2.com www.myweb.com
#ping www.myweb1.com //檢測域名解析是否正常;
#ping www.myweb2.com
#ping www.myweb.com
#mkdir -p /var/www/myweb1
#mkdir -p /var/www/myweb2
#mkdir -p /var/vhlogs/myweb1
#mkdir -p /var/vhlogs/myweb2
#vi /etc/httpd/conf/httpd.conf
Listen 80 //設置Listen指令偵聽的埠
NameVirtualHost 192.168.3.120 //基於域名的虛擬主機,如果對多個地址使用了多個基於域名的虛擬主機
則對每個地址均要使用此指令:NameVirtualHost IP地址:埠
NameVirtualHost * 當IP地址無法確定時,使用「*」通配任意的IP地址
<VirtualHost 192.168.3.120> //定義一個虛擬主機,VirtualHost的參數必須與NameVirtualHost後面所使用的參數保持一致。
ServerName www.myweb.com //當一個請求到時,伺服器會首先檢查它是否使用了一個能和NameVirtualHost相匹配的IP地址。如果匹配,就會
DocumentRoot /usr/local/apache/htdoes //就會查找每個與這個IP地址相對應的<VirtualHost>配置段,並嘗試找出一個ServerName或ServerAlias配置相
ServerAdmin [email protected] //與請求的主機名(域名)相同的,若找到,則使用該虛擬主機的配置,並響應其訪問請求。否則將使用符合這個
</VirtualHost> //IP地址的第一個列出的虛擬主機。在最前面的虛擬主機成為默認虛擬主機。
<VirtualHost 192.168.3.120>
ServerName www.myweb1.com
DocumentRoot /var/www/myweb1
DirectoryIndex index.php index.php3 index.html index.htm default.html default.html
ServerAdmin [email protected]
ErrorLog /var/vhlogs/myweb/error_log
TransferLog /var/vhlogs/myweb1/access_log
</VirtualHost>
<VritualHost 192.168.3.200>
ServerName www.myweb2.com
DocumenRoot /var/www/myweb2
DirectoryIndex index.php index.php3 index.htm index.html default.htm default.html
ServerAdmin [email protected]
ErrorLog /var/vhlogs/myweb2/error_log
TranferLog /var/vhlogs/myweb2/access_log
</VirtualHost>
<Directory /var/www> //對Web站點目錄設置訪問控制;
Options FllowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>
Apachectl –S //查查虛擬主機配置是否正確;
Aparhectl restart //重啟Apache伺服器配置生效;
例:
NameVirtualHost 192.168.168.10 //伺服器配有兩塊網卡,IP:內網192.168.168.10,外網61.186.160.104,在Internet網中,企業域名
NameVirtualHost 61.186.160.104 //www.example.com指向外網IP地址,在企業內網的DNS伺服器中,指向內網IP地址;現要求為來自內網
<VirtualHost 192.168.168.10 61.186.160.104> //外網的請求提供同樣的Web服務。(httpd.conf中設置)
DocumentRoot /www/server1
ServerName www.example.com
</Virtual>
例:
Listen 80 //伺服器:192.168.168.154,伺服器上創建兩個基於域名(主機名)的虛擬主機,域名:www.myweb3.com和www.
Listen 8080 //myweb4.com,每個虛擬主機的80埠和8080埠,分別服務一個Web站點,其站點根目錄分別為
// /var/www/myweb3-80、/var/www/myweb3-8080、/var/www/myweb4-80、/var/www/myweb4-8080。
NameVirtualHost 192.168.168.154:80 //www.myweb3.com的80埠作為默認Web站點。
NameVirtualHost 192.168.168.154:8080
<VirtualHost 192.168.168.154:80>
ServerName www.myweb3.com
DocumentRoot /var/www/myweb3-80
<VirtualHost>
<VirtualHost 192.168.168.154:8080>
ServerName www.myweb3.com
DocumentRoot /var/www/myweb3-8080
</VirtualHost>
<VirtualHost 192.168.168.154:80>
ServerName www.myweb4.com
DocumentRoot /var/www/myweb4-80
</VirtualHost>
<VirtualHost 192.168.168.154:8080>
ServerName www.myweb4.com
DocumentRoot /var/www/myweb4-8080
</VirtualHost>
基於IP地址虛擬主機:
#cd /etc/sysconfig/network-scripts //伺服器有兩張網卡eth0、eth1,eth0:192.168.167.157,
#cp ifctg-eth1 ifcfg-eth1:0 //eth1:192.168.167.156.eth0網卡用作了基於主機名的虛擬主機,
#vi ifcfg-eth1:0 //eth1通過IP別名方式,為其綁定多個IP地址,用於提供基於IP地址
DEVICE=eth1:0 //的虛擬主機。eth1綁定的第一張虛擬網卡的設備名為eth1:0,對應的
IPADDR=192.168.167.157 //配置文件為ifcfg-eth1:0,通過修改配置文件中的設備名和IP地址,
#ifdown eth1 //即可實現IP地址的綁定。
#ifup eth1:0
#ifup eth1
#ping 192.168.167.157
#ping 192.168.167.156
#vi /etc/hosts //192.168.167.156:www.example2.com,192.168.167.157:
192.168.167.157 www.example3.com //www.example3.com,試為其創建基於IP地址的虛擬主機,埠使用80
#mkdir -p /var/www/example2 //目錄分別為/var/www/example2、/var/www/example3,為這兩個域再增
#mkdir -p /var/www/example3 //8080埠,使其也能在8080埠發布另外的Web站點。Web站點根目錄分
///var/www/example2-8080、/var/www/example3-8080
#vi httpd.conf
Listen 80
Listen 8080
<VirtualHost 192.168.167.156:80>
ServerName www.example2.com
DocumentRoot /var/www/example2
</VirtualHost>
<VirtualHost 192.168.167.156:8080>
ServerName www.example2.com
DocumentRoot /var/www/example2-8080
</VirtualHost>
<VirtualHost 192.168.167.157:80>
ServerName www.exaple3.com
DocumentRoot /var/www/example3
</VirtualHost>
<VirtualHost 192.168.167.157:8080>
ServerName www.exaple3.com
DocumentRoot /var/www/example3-8080
</VirtualHost>
❹ 誰能給我推薦一套穩定,支持多用戶、Linux平台的郵件伺服器
幾年以前,Linux環境下可以選擇的可以免費郵件伺服器軟體只有Sendmail,但是由於Sendmail的缺陷,一些開發者先後開發了若干種其他的郵件伺服器軟體。當前,運行在Linux環境下免費的郵件伺服器,或者稱為MTA(Mail Transfer Agent)有若干種選擇,比較常見的有Sendmail、Qmail、Postfix、exim及Zmailer等等。本文希望通過對幾種影響相對來說比較大的主流Linux環境下的MTA的特點進行闡述,並對其優缺點一一分析比較,使用戶在選擇Linux環境下的免費MTA時有一個選擇的依據。
Postfix
Postfix是一個由IBM資助下由Wietse Venema 負責開發的自由軟體工程的一個產物,其目的是為用戶提供除sendmail之外的郵件伺服器選擇。Postfix力圖做到快速、易於管理、提供盡可能的安全性 ,同時盡量做到和sendmail郵件伺服器保持兼容性以滿足用戶的使用習慣。起初,Postfix是以VMailer這個名字發布的,後來由於商標上的原因改名為Postfix。
主要設計目標
Postfix工程的目標是實現一個郵件伺服器,提供給用戶除sendmail以外的選擇。其設計目標包括:
性能。 Postfix要比同類的伺服器產品速度快三倍以上,一個安裝Postfix的台式機一天可以收發百萬封信件。Postfix設計中採用了web伺服器的的設計技巧以減少進程創建開銷,並且採用了其他的一些文件訪問優化技術以提高效率,但同時保證了軟體的可靠性。
兼容性。Postfix設計時考慮了保持Sendmail的兼容性問題,以使移植變的更加容易。Postfix支持/var[/spool]/mail, /etc/aliases, NIS, 及 ~/.forward等文件。然而Postfix為保證管理的簡單性,所以沒有支持配置文件sendmail.cf。
安全和健壯性。Postfix設計上實現了程序在過量負載情況下仍然保證程序的可靠性。當出現本地文件系統沒有可用空間或沒有可用內存的情況時,Postfix就會自動放棄,而不是重試使情況變的更糟。
靈活性。Postfix結構上由十多個小的子模塊組成,每個子模塊完成特定的任務,如通過SMTP協議接收一個消息,發送一個消息,本地傳遞一個消息,重寫一個地址等等。當出現特定的需求時,可以用新版本的模塊來替代老的模塊,而不需要更新整個程序。而且它也很容易實現關閉某個功能。
安全性。Postfix使用多層防護措施防範攻數孝擊者來保護本地系統,幾乎每一個Postfix守含畢者護進程都能運行在固定低許可權的chroot之下,在網路和安全敏感的本地投遞程序之間沒有直接的路徑—一個攻擊者必須首先突破若干個其他的程序,才有可能訪問本地系統。Postfix甚至不絕對信任自己的隊列文件或IPC消息中的內容以防止被欺騙。Postfix在輸出⑺駝嚀峁┑南�⒅�盎崾紫裙�訟�ⅰ6�襊ostfix程序沒有set-uid。
Postfix的一些特點
支持多傳輸域:sendmai支持在Internet, DECnet, X.400及UUCP之間轉發消息。 Postfix則靈活的設計為無須虛擬域(vistual domai)或別名來實現這種轉發。但是在早期的發布里僅僅支持STMP和有限度地支持UUCP,但對於我國用戶來說,多傳輸域的支持沒有什麼意義。
虛擬域:在大多數通用情況下,增加對一個虛擬域的支持僅僅需要改變一個Postfix查找信息表。其他的郵件伺服器則通常需要多個級別的別名或重定向來獲得這樣的效果。
UCE控制(UCE,unsolicited commercial email): Postfix能限制哪個主機允許通過自身轉發郵件,並且支持限定什麼郵件允許接進。Postfix實現通談薯常的控制功能:黑名單列表、RBL查找、HELO/發送者DNS核實。基於內容過濾當前沒有實現。
表查看: Postfix沒有實現地址重寫語言,而是使用了一種擴展的表查看來實現地址重寫功能。表可以是本地 dbm或 db文件等格式。
Postfix體系結構及與Sendmail的比較
Postfix是基於半駐留,互操作的進程的體系結構,每個進程完成特定的任務,沒有任何特定的進程衍生關系(父子關系)。而且,獨立的進程來完成不同的功能相對於「單塊」程序具有更好的隔離性。此外,這種實現方式具有這樣的優點:每個服務如地址重寫等都能被任何一個Postfix部件所使用,無須進程創建等開銷,而僅僅需要重寫一個地址,當然並不是只有postfix採用這種方式。
Postfix是按照這種方式實現的:一個駐留主伺服器根據命令運行Postfix守護進程,守護進程完成發送或接收網路郵件消息,在本地遞交郵件等等功能。守護進程的數目由配置參數來決定的,並且根據配置決定守護進程運行的次數(re-used times),當空閑時 間到達配置參數指定的限度時,自動消亡。這種方法明顯地降低了進程創建開銷,但是單個進程之間仍然保持了良好的隔離性。
Postfix的設計目標就是成為Sendmail的替代者。由於這個原因,Postfix系統的很多部分,如本地投遞程序等,可以很容易地通過編輯修改類似inetd的配置文件來替代。
Postfix的核心是由十多個半駐留程序實現的。為了保證機密性的原因,這些Postfix進程之間通過Unix的socket或受保護的目錄之下的FIFO進行通信。即使使用這種方法來保證機密性,Postfix進程並不盲目信任其通過這種方式接收到的數據。
Postfix進程之間傳遞的數據量是有限制的。在很多情況下,Postfix進程之間交換的數據信息只有隊列文件名和接收者列表,或某些狀態信息。一旦一個郵件消息被保存進入文件,其將在其中保存到被一個郵件投遞程序讀出。
Postfix採用一些通常的措施來避免丟失信息:在收到確認以前通過調用flush和fsync()保存所有的數據到磁碟中。檢查所有的系統調用的返回結果來避免錯誤狀況。
大多數構建郵件伺服器者都會選擇sendmail,公平的來講sendmail是一個不錯的MTA(Mail Transfer Agent),最初開發時Eric Allman的設計考慮主要放在了郵件傳遞的成功性。不幸的是,Sendmai開發時沒有太多的考慮Internet環境下可能遇到的安全性問題。Sendmail在大多數系統上只能以根用戶身份運行,這就意味著任何漏洞都可能導致非常嚴重的後果,除了這些問題之外,在高負載的情況Sendmail運行情況不是很好。
安全
Postfix則並一定要以root的身份運行,而只需要一個主(master)程序以root身份運行,其生成進程來處理接入、發出及本地郵件投遞工作。通過使用一系列模塊部件,每個任務由一個單獨的程序來運行(這樣使審計變的容易一些)。例如發出郵件被卸載到一個隊列目錄,在這里「pcikup」程序取到該郵件然後將郵件傳遞給「cleanup」程序,其再將郵件傳遞給「trivial-rewrite」,其負責處理郵件頭,最後若郵件目的是別的系統則將郵件傳遞給「smtp」程序。而且相對於Sendmail來說Postfix也更容易設置chroot『ed環境。只要簡單地通過編輯master.cf(一般位於/etc/postfix內)文件即可實現,並且Postfix將運行chroot『ed,以限定在其定義的隊列目錄之下(通常位於/var/spool/postfix),同樣可以在master.cf中對Postfix的單一模塊設置進程限制。用戶可以限制Postfix以哪個用戶的身份運行,一般來說是以「postfix」用戶(概念上該用戶和Apache的nobody類似)運行,該用戶可以訪問特定的隊列目錄。Postfix其他的主要優點是起配置文件的清晰易懂性。
與Sendmail的比較 如sendmail之類的郵件系統是按照一個單塊的結構設計實現的,該「單塊」程序實現所有的功能。當然這種結構有利於在系統的不同部分之間共享數據。但是這種結構容易出現一些致命的錯誤。而如qmail的郵件系統上使用一種分層次的結構,按照固定得順序運行不同功能的子模塊進程,執行完畢之後就將其釋放。這種方法有良好的「絕緣」性,但是增加了進程創建開銷和進程間通信開銷。但是通過合理的規劃子模塊進程的運行順序可以將開銷保持在可以接受的范圍內。
使用其他的MTA替代Sendmail是一件非常麻煩的事情,用戶往往又要花大量的時 間去熟悉新的MTA的配置和使用。而使用Postfix,你可以利用很多以有的配置文件。如(access, aliases, virtusertable等等),只需要簡單的在master.cf中定義一下即可。此外,Postfix在行為上也很象Sendmail,用戶可以使用sendmail命令來啟動Postfix。
當然,使用一個軟體來替代另外一個軟體需要解決特定的問題。部分原因是因為Postfix的安全特性,在配置Postfix時可能會遇到一些問題。最典型的問題是向root用戶發送郵件。Postfix一般不提高自身的許可權(向root用戶發送郵件所必須的)來投遞郵件。用戶需要在別名文件中為root定義別名,如:root: someuser。這同樣會對若干個郵件列表模塊發生影響,特別是SmartList。一般來說實現郵件列表最好使用Majordomo,它易於配置。
Sendmail一個很突出的問題就是可擴展性和性能問題。例如用戶若希望每天重新啟動Sendmail來實現自動更新配置文件(如為虛擬主機重定向郵件)就會出現問題。Sendmail生成新的進程來處理發送和接收郵件,這些進程會一直存在直到傳輸結束,之後Sendmail才能退出,這樣你的腳本程序將不能正確的重起Sendmail。而對於Postfix,用戶則只需要發出命令postfix reload即可,Postfix將會重新載入其配置文件。
另外,對於有數以萬計的用戶的郵件伺服器來說,使用文件來存儲如匹配用戶發出郵件地址(例如bob發出的信的發信人修改為[email protected])。對於大量用戶來講,該文件就會變的很巨大,從而影響系統的運行效率。而Postfix則可以和一個資料庫後台集成起來(當前只支持MySQL)來存放其配置信息,資料庫方式要比文件方式在可擴展性方面強大很多。
遵從IBM的開放源代碼版權許可證,用戶可以自由地分發該軟體,進行二次開發。其唯一的限制就是必須將對Postfix做的修改返回給IBM公司。因為IBM資助了Wietse的開發。
與Qmail的比較
Qmail的缺點就是配置方式和Sendmail不一致,不容易維護。而且Qmail的版權許可證含義非常模糊,甚至沒有和軟體一起發布。應用作者的話:若你希望分發自己修改版本的Qmail,你必須得到我的許可。
Qmail qmail是有Dan Bernstein開發的可以自由下載的MTA,其第一個beta版本0.70.7發布於1996年1月24日,1997年2月發布了1.0版,當前版本是1.03。
Qmail的特點
安全性 為了驗證Qmail的安全性,Qmail的支持者甚至出資$1000懸賞尋找Qmail的安全漏洞,一年以後,該獎金沒有被領取,而被捐獻給自由軟體基金會。目前,Qmail的作者也出資$500來尋求Qmail的安全漏洞。
速度mail在一個中等規模的系統可以投遞大約百萬封郵件,甚至在一台486一天上能處理超過10萬封郵件,起支持並行投遞。Qmail支持郵件的並行投遞,同時可以投遞大約20封郵件。目前郵件投遞的瓶頸在於SMTP協議,通過STMP向另外一台互聯網主機投遞一封電子郵件大約需要花費10多秒鍾。Qmail的作者提出了QMTP(Quick Mail Transfer Protocol)來加速郵件的投遞,並且在Qmail中得到支持。Qmail的設計目標是在一台16M的機器上最終達到每天可以投遞大約百萬級數目的郵件。
可靠性:為了保證可靠性,Qmail只有在郵件被正確地寫入到磁碟才返回處理成功的結果,這樣即使在磁碟寫入中發生系統崩潰或斷電等情況,也可以保證郵件不被丟失,而是重新投遞。
特別簡單的虛擬域管理,甚至有一個第三方開發的稱為vpopmail的add-on來支持虛擬POP域。使用這個軟體包,POP3用戶不需要具有系統的正式帳戶。
使用ezmlm支持用戶自控制的郵件列表功能。
郵件用戶和系統帳戶隔離,為用戶提供郵件帳戶不需要為其設置系統帳戶,從而增加了安全性。
Sendmail vs Qmail
首先:sendmail是發展歷史悠久的MTA,當前的版本是8.10.2。當然,Sendmail在可移植性、穩定性及確保沒有bug方面有一定的保證。但是Internet上有很多帖子都是關於如果攻擊Sendmail,這對於管理員來說是一個噩夢。Sendmail在發展過程中產生了一批經驗豐富的Sendmail管理員,並且Sendmail有大量完整的文檔資料,除了Sendmail的寶典:O『Reilly『s sendmail book written by Bryan Costales with Eric Allman以外,網路上有大量的tutorial、FAQ和其他的資源。這些大量的文檔對於很好的利用Sendmail的各種特色功能是非常重要的。但是Sendmai當前來說是一個成熟的MTA。
當然,Sendmail具有一些缺點,其特色功能過多而導致配置文件的復雜性。當然,通過使用m4宏使配置文件的生成變的容易很多。但是,要掌握所有的配置選項是一個很不容易的事情。Sendmail在過去的版本中出現過很多安全漏洞,所以使管理員不得不趕快升級版本。而且Sendmail的流行性也使其成為攻擊的目標,這有好處也有壞處:這意味著安全漏洞可以很快地被發現,但是同樣使Sendmail更加穩定和安全。另外一個問題是Sendmail一般預設配置都是具有最小的安全特性,從而使Sendmail往往容易被攻擊。如果使用Sendmail,應該確保明白每個打開的選項的含義和影響。一旦你理解了Sendmail的工作原理,就Sendmail的安裝和維護就變的非常容易了。通過Sendmail的配置文件,用戶實現完成一切可以想像得到的需求。
Qmail是一個選擇,其在設計實現中特別考慮了安全問題。如果你需要一個快速的解決方案如,一個安全的郵件網關,則Qmail是一個很好的選擇。Qmail和Sendmail的配置文件完全不同。而對於Qmail,其有自己的配置文件,配置目錄中包含了5-30個不同的文件,各個文件實現對不同部分的配置(如虛擬域或虛擬主機等)。這些配置說明都在man中有很好的文檔,但是Qmail的代碼結構不是很好。
Qmail要比Sendmail小很多,其缺乏一些現今郵件伺服器所具有的特色功能。如不象Sendmail,qmail不對郵件信封的發送者的域名進行驗證,以確保域名的正確性。自身不提供對RBL的支持,而需要add-on來實現。,而Sendmail支持RBL。同樣Qmail不能拒絕接收目的接收人不存在信件,而是先將郵件接收下來,然後返回查無此用戶的的郵件。Qmail最大的問題就出在發送郵件給多個接收者的處理上。若發送一個很大的郵件給同一個域中的多個用戶,Sendmail將只向目的郵件伺服器發送一個郵件拷貝。而Qmail將並行地連接多次,每次都發送一個拷貝給一個用戶。若用戶日常要發送大郵件給多個用戶,使用Qmail將浪費很多帶寬。可以這么認為:Sendmail優化節省帶寬資源,Qmail優化節省時 間。若用戶系統有很好的帶寬,Qmail將具有更好的性能,而如果用戶系統的帶寬資源有限,並且要發送很多郵件列表信息,則Sendmail效率更高一些。Qmail不支持.forward(.forward在很多情況下對用戶很有用處);不使用/var/spool/mail,而是將郵件存放在用戶home目錄。下面是一些使用Qmail不容易完成的工作,要使用Qmail完成這些工作,可能需要用戶自己動手實現或者使用第三方提供的不夠可靠的模塊。
Qmail的源代碼相對於Sendmail來說要更加容易理解,這對於希望深入到內部了解MTA機制的人員來說是一個優點。Qmail在安全性方面也要穩定一些。Qmail有很好的技術支持,但是沒有象Sendmail那樣被廣泛地應用和大量的管理員用戶群。Qmail的安裝不象Sendmail那樣自動化,需要手工步驟。而且Qmail的文檔不如Sendmail那樣完整和豐富。
Qmail的add-ons比Sendmail要少一些。一般來說對於經驗稍微少一些的管理員,選擇Qmail相對要好一些。Qmail要簡單一些,而且其特色功能能滿足一般用戶的需求。Sendmail類似於office套件,80%的功能往往都不被使用。這就使Qmail在一些場合可能被更受歡迎一些,其具有一些Sendmail所沒有的更流行和實用的特色功能,如mail具有內置的pop3支持。Qmail同樣支持如主機或用戶的偽裝、虛擬域等等。Qmail的簡單性也使配置相對容易一些。
Qmail被認為相對於Sendmail更加安全和高效,運行Qmail的一台pentium機器一天可以處理大約200,0000條消息。
Qmail相對於其他的MTA要簡單很多,主要體現在1)其他的MTA的郵件轉發、郵件別名和郵件列表都是採用相互獨立的機制,而qmail採用一種簡單的轉發(forwarding)機制來允許用戶處理自己的郵件列表(2)其他的MTA都提供快速而不安全的方式及慢的隊列方式的郵件投遞機制;而qmail發送是由新郵件的出現而觸發的,所以其投遞只有一種模式:快速的隊列方式(3)其他的MTA實際上包括一個特定版本的inetd來監控MTA的平均負載,而qmail設計了內部機制來限制系統負載,所以qmail-smtpd能安全地從系統的inet來運行
sendmail有很多的商業支持,而且由於大量的用戶群,在互聯網上有大量的潛在技術支持。而Qmail只有很有限的技術支持。有家公司inter7.com提供對Qmail的支持,該公司同樣提供了免費的add-ons,包括一個基於web的管理工具-QmailAdmin及一個通過vpopmail的對虛擬域的支持,甚至具有一個基於web的客戶借介面—SqWebMail。
Qmail還具有一些其他的缺憾。如它不是完全遵從標准,它不支持DSN,作者認為DSN是一個即將消亡的技術,而Qmail的VERP可以完成同樣的工作,而又不象DSN依賴於其他主機的支持。Qmail另外一個問題是其不遵從支持7bit系統標准,而每次都發送8bit。若郵件接收一方不能處理這種情況,就會出現郵件亂碼的情況。
從安全性來講,Sendmail要比Qmail差一些,Sendmail在發展中出現過很多很著名的安全漏洞;而Qmail相對要短小精悍,但是仍然提供了基本的STMP功能。而Qmail的代碼注釋要少一些。Qmail的一個很好的特色是其支持一種可選的基於目錄的郵件存儲格式,而不是使用一個很大的文件來存儲用戶所有的郵件。若用戶的郵件伺服器進行很多的POP3服務,則這種郵件存儲格式可以提高效率。但是遺憾的是Pine自身並不支持這種存儲格式,如果需要可以使用一些補丁來達到這個目的。
Qmail的優點是:每個用戶都可以創建郵件列表而無須具有根用戶的許可權,如用戶foo可以創建名為foo-slashdot, foo-linux,foo-chickens 的郵件列表,為了提供更好的功能,有一個叫ezmlm(EZ Mailing List Maker)的工具可以支持自動注冊和注銷、索引等Majordomo所具有的各種功能,但是都是CLI驅動的,只需要編輯很少的文件。Qmail非常適合在小型系統下工作,一般只支持較少的用戶或用來管理郵件列表。Qmail速度快並且簡單mail是當你希望安全切容易配置的最佳的選擇;Qmail可以在2個小時內搞定配置,而Sendmail可能在兩天內都搞不定。
rocketmail internic 等都使用qmail來構建
ZMailer
ZMailer是一個高性能、多進程的Unix系統郵件程序。 [ a.k.a. MTA per X.400 parlance ],其可以從下面的伺服器ftp://ftp.funet.fi/pub/unix/mail/zmailer/ 自由下載。其也是按照單塊模式設計的。如Hotmail等郵件系統就是用Zmailer構建的。
Exim Exim是由Cambridge 大學開發的遵從GPL的MTA,其風格上類似與Smail 3,但是比Smail 3更加完善。當前最新版本是3.15。其主站點為http://www.exim.org/。其最大的特點就是配置簡單性,但是其安全性不如Qmail及Postfix。
下面是對幾種MTA的特點的比較,綜合的來講,Qmail和Postfix都是很不錯的MTA,選擇的標准往往是個人的喜好問題,Postfix發展歷史要比Qmail遲一些。
MTA 成熟性 安全性 特色 性能 Sendmail兼容性 模塊化設計 qmail medium high high high addons yes Sendmail high low high low x no Postfix low high high high yes yes exim medium low high medium yes no
當然除了這里介紹的幾種MTA以外,還有 Smail, Post.Office,the Sun Internet Mail Server (SIMS), MMDF, CommuniGate,PMDF, Netscape Messaging Server,Obtuse smtpd/smtpfwdd,Intermail,MD Switch等其他商業或者免費的MTA可以選擇。
幾年以前,Linux環境下可以選擇的可以免費郵件伺服器軟體只有Sendmail,但是由於Sendmail的缺陷,一些開發者先後開發了若干種其他的郵件伺服器軟體。當前,運行在Linux環境下免費的郵件伺服器,或者稱為MTA(Mail Transfer Agent)有若干種選擇,比較常見的有Sendmail、Qmail、Postfix、exim及Zmailer等等。本文希望通過對幾種影響相對來說比較大的主流Linux環境下的MTA的特點進行闡述,並對其優缺點一一分析比較,使用戶在選擇Linux環境下的免費MTA時有一個選擇的依據。
Postfix
Postfix是一個由IBM資助下由Wietse Venema 負責開發的自由軟體工程的一個產物,其目的是為用戶提供除sendmail之外的郵件伺服器選擇。Postfix力圖做到快速、易於管理、提供盡可能的安全性 ,同時盡量做到和sendmail郵件伺服器保持兼容性以滿足用戶的使用習慣。起初,Postfix是以VMailer這個名字發布的,後來由於商標上的原因改名為Postfix。
主要設計目標
Postfix工程的目標是實現一個郵件伺服器,提供給用戶除sendmail以外的選擇。其設計目標包括:
性能。 Postfix要比同類的伺服器產品速度快三倍以上,一個安裝Postfix的台式機一天可以收發百萬封信件。Postfix設計中採用了web伺服器的的設計技巧以減少進程創建開銷,並且採用了其他的一些文件訪問優化技術以提高效率,但同時保證了軟體的可靠性。
兼容性。Postfix設計時考慮了保持Sendmail的兼容性問題,以使移植變的更加容易。Postfix支持/var[/spool]/mail, /etc/aliases, NIS, 及 ~/.forward等文件。然而Postfix為保證管理的簡單性,所以沒有支持配置文件sendmail.cf。
安全和健壯性。Postfix設計上實現了程序在過量負載情況下仍然保證程序的可靠性。當出現本地文件系統沒有可用空間或沒有可用內存的情況時,Postfix就會自動放棄,而不是重試使情況變的更糟。
靈活性。Postfix結構上由十多個小的子模塊組成,每個子模塊完成特定的任務,如通過SMTP協議接收一個消息,發送一個消息,本地傳遞一個消息,重寫一個地址等等。當出現特定的需求時,可以用新版本的模塊來替代老的模塊,而不需要更新整個程序。而且它也很容易實現關閉某個功能。
安全性。Postfix使用多層防護措施防範攻擊者來保護本地系統,幾乎每一個Postfix守護進程都能運行在固定低許可權的chroot之下,在網路和安全敏感的本地投遞程序之間沒有直接的路徑—一個攻擊者必須首先突破若干個其他的程序,才有可能訪問本地系統。Postfix甚至不絕對信任自己的隊列文件或IPC消息中的內容以防止被欺騙。Postfix在輸出⑺駝嚀峁┑南�⒅�盎崾紫裙�訟�ⅰ6�襊ostfix程序沒有set-uid。
Postfix的一些特點
支持多傳輸域:sendmai支持在Internet, DECnet, X.400及UUCP之間轉發消息。 Postfix則靈活的設計為無須虛擬域(vistual domai)或別名來實現這種轉發。但是在早期的發布里僅僅支持STMP和有限度地支持UUCP,但對於我國用戶來說,多傳輸域的支持沒有什麼意義。
虛擬域:在大多數通用情況下,增加對一個虛擬域的支持僅僅需要改變一個Postfix查找信息表。其他的郵件伺服器則通常需要多個級別的別名或重定向來獲得這樣的效果。
UCE控制(UCE,unsolicited commercial email): Postfix能限制哪個主機允許通過自身轉發郵件,並且支持限定什麼郵件允許接進。Postfix實現通常的控制功能:黑名單列表、RBL查找、HELO/發送者DNS核實。基於內容過濾當前沒有實現。
表查看: Postfix沒有實現地址重寫語言,而是使用了一種擴展的表查看來實現地址重寫功能。表可以是本地 dbm或 db文件等格式。
❺ OST模式和tcp/ip模式的優缺點比較
一、ISO/OSI參考模型 TCP/IP協議模型 所對應PDU(協議數據單元) 。
應用層 ……………應用層 …………數據
表示層 ……………應用層 …………數據
會話層 ……………應用層 …………數據
傳輸層 ……………傳輸層 …………段
網路層…………… 互聯網層……… 包
數據鏈路層 ………網路介面層 ……幀
物理層 ……………網路介面層 ……比特流
二、ISO/OSI參考模型與TCP/IP協議模型
相同點:1、都有應用層、傳輸層、網路層。 2、都是下層服務上層。
不同點:1、層數不同。 2、模型與協議出現的次序不同,TCP/IP先有協議,後有模型(出 現早),ISO/OSI先有模型,後有協議(出現晚)。
三、首先要了解OSI七層模型各層的功能。
第七層:應用層御悔櫻 數據 用戶介面,提供用戶程序「介面」。
第六層:表示層 數據 數據的表現形式,特定功能的實現,如數據加密。
第五層:會話層 數據 允許不同機器上的用戶之間建立會話關系,如WINDOWS
第四層:傳輸層 段 實現網路不同主機上用戶進程之間的數據通信,可靠
與不可靠的傳輸,傳輸層的錯誤檢測,流量控制等。
第三層:網路層 包 提供邏輯地址(IP)、選路,數據從源端到目的端的
傳輸
第二層:數據鏈路層 幀 將上層數據封裝成幀,用MAC地址訪問媒介,錯誤檢測
與修正。
第一層:物理層 比特流 設備之間比特流的傳輸,物理介面,電氣特性等。
四、下面是對OSI七層模型各層功能的詳細解釋:
OSI七層模型 OSI 七層模型稱為開放式系統互鎮叢聯參考模型 OSI 七層模型是一種框架性的設計方法前胡 。
1、OSI 七層模型通過七個層次化的結構模型使不同的系統不同的網路之間實現可靠的通訊,因此其最主要的功能使就是幫助不同類型的主機實現數據傳輸 。
2、物理層 : O S I 模型的最低層或第一層,該層包括物理連網媒介,如電纜連線連接器。物理層的協議產生並檢測電壓以便發送和接收攜帶數據的信號。在桌面P C 上插入網路介面卡,就建立了計算機連網的基礎。換言之,提供了一個物理層。盡管物理層不提供糾錯服務,但它能夠設定數據傳輸速率並監測數據出錯率。網路物理問題,如電線斷開,將影響物理層。
3、數據鏈路層: O S I 模型的第二層,它控制網路層與物理層之間的通信。它的主要功能是如何在不可靠的物理線路上進行數據的可靠傳遞。為了保證傳輸,從網路層接收到的數據被分割成特定的可被物理層傳輸的幀。幀是用來移動數據的結構包,它不僅包括原始數據,還包括發送方和接收方的網路地址以及糾錯和控制信息。其中的地址確定了幀將發送到何處,而糾錯和控制信息則確保幀無差錯到達。
數據鏈路層的功能獨立於網路和它的節點和所採用的物理層類型,它也不關心是否正在運行 Wo r d 、E x c e l 或使用I n t e r n e t 。有一些連接設備,如交換機,由於它們要對幀解碼並使用幀信息將數據發送到正確的接收方,所以它們是工作在數據鏈路層的。
網路層: O S I 模型的第三層,其主要功能是將網路地址翻譯成對應的物理地址,並決定如何將數據從發送方路由到接收方。
4、、網路層通過綜合考慮發送優先權、網路擁塞程度、服務質量以及可選路由的花費來決定從一個網路中節點A 到另一個網路中節點B 的最佳路徑。由於網路層處理路由,而路由器因為即連接網路各段,並智能指導數據傳送,屬於網路層。在網路中,「路由」是基於編址方案、使用模式以及可達性來指引數據的發送。
5、傳輸層: O S I 模型中最重要的一層。傳輸協議同時進行流量控制或是基於接收方可接收數據的快慢程度規定適當的發送速率。除此之外,傳輸層按照網路能處理的最大尺寸將較長的數據包進行強制分割。例如,乙太網無法接收大於1 5 0 0 位元組的數據包。發送方節點的傳輸層將數據分割成較小的數據片,同時對每一數據片安排一序列號,以便數據到達接收方節點的傳輸層時,能以正確的順序重組。該過程即被稱為排序。
工作在傳輸層的一種服務是 T C P / I P 協議套中的T C P (傳輸控制協議),另一項傳輸層服務是I P X / S P X 協議集的S P X (序列包交換)。
6、會話層: 負責在網路中的兩節點之間建立和維持通信。 會話層的功能包括:建立通信鏈接,保持會話過程通信鏈接的暢通,同步兩個節點之間的對 話,決定通信是否被中斷以及通信中斷時決定從何處重新發送。
可能常常聽到有人把會話層稱作網路通信的「交通警察」。當通過撥號向 I S P (網際網路服務提供商)請求連接到網際網路時,I S P 伺服器上的會話層向你與P C 客戶機上的會話層進行協商連接。若電話線偶然從牆上插孔脫落時,終端機上的會話層將檢測到連接中斷並重新發起連接。會話層通過決定節點通信的優先順序和通信時間的長短來設置通信期限
7、表示層: 應用程序和網路之間的翻譯官,在表示層,數據將按照網路能理解的方案進行格式化;這種格式化也因所使用網路的類型不同而不同。
表示層管理數據的解密與加密,如系統口令的處理。例如:在 Internet上查詢你銀行賬戶,使用的即是一種安全連接。你的賬戶數據在發送前被加密,在網路的另一端,表示層將對接收到的數據解密。除此之外,表示層協議還對圖片和文件格式信息進行解碼和編碼。
8、應用層: 負責對軟體提供介面以使程序能使用網路服務。術語「應用層」並不是指運行在網路上的某個特別應用程序 ,應用層提供的服務包括文件傳輸、文件管理以及電子郵件的信息處理。
❻ 網速很快但是打開網頁卻很慢是什麼原因
網速不慢打開網頁的速度很慢原因:
1.網頁本事響應速度慢;
2.電腦中毒,導致打開網頁緩慢;
3.瀏覽器設置出現問題;
4.瀏覽器緩存沒有清理;
解決辦法:
1.打開360安鬧弊全衛士,選擇人工服務。
註:如果一種方案未能解決,建議嘗試多種方案。
❼ MicrosoftOfficeOutlook伺服器無法打開如何解決
想要使用MicrosoftOfficeOutlook出現無法打開伺服器,你們都知道操作的方法慧讓桐嗎?下文就為你們帶來了。
當我們出現圖片的提示錯誤,說明ost文件壞了,雖然有個scanpst文滑冊件可以嘗試修復,但如果你ost文件有好幾個G,那修復起來是個浪費時間的事情。而且不知道是否可以成功。而微軟的365郵箱是存在雲上的,聯網後自動下載。少了很多麻煩。
我們先點開前坦始按鈕,找到控制面板,選擇以小圖標排列,然後找到Mail這個控制項,彈出圖片中的界面。點擊「顯示配置文件」
接著我們在彈出的這個窗口中,可以看到原來配置的文件,一般顯示是OUTLOOK,現在我們點擊下面的刪除按鈕,刪除掉舊的配置文件,再點擊添加按鈕,在窗口中輸入我們自定義的配置文件名稱,這個名稱你想怎麼設置都可以,無所謂。系統會再次彈出類似我們第一次配置郵箱的界面,輸入我們的賬號密碼,連接配置。正常後退出。這時候就可以正常打開outlook了。
依照上文為各位講述的MicrosoftOfficeOutlook(微軟郵箱)出現無法打開伺服器的詳細處理方法,你們是不是都有所了解了呀!
MicrosoftOfficeOutlook|