windowsapache編譯
⑴ Apache可移植運行庫apr在windows下怎麼編譯
如果是開發者則使用此選項,--with-included-apr利於連接apache的代碼或者是調試apache,其消除了由於版本或者編譯中跟APR或者APR-util代碼產生的不匹配; 如果從子版本編譯apache,要先運行buildconf(需要Python,GNU autoconf和libtool)
⑵ 在windows下如何給apache打升級補丁
Apache是什麼:
Apache是世界使用排名第一的Web伺服器軟體。它可以運行在幾乎所有廣泛使用的計算機平台上,由於其跨平台和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。它快速、可靠並且可通過簡單的API擴充,將Perl/Python等解釋器編譯到伺服器中。
其它比較著名的伺服器:
lighttpd 讀 lighty 德國
negix [ engine x ] 俄羅斯 高並發是一個高性能的 HTTP 和 反向代理 伺服器
方法/步驟
Apache下載:
在網路搜索 Apache下載,進入官網下載地址
打開ApacheHaus之後你會發現這里有許多的windows版的Apache版本
這里簡單的介紹一下:x86代表32位,x64代表64位。根據自己安裝的系統選擇
關於vc9與vc11,這里的選擇要跟php對應才能穩定的運行。(按照PHP官方提供的資源來看,PHP 5.5以後的版本官方只提供了VC11版本的產品程序,PHP5.3/5.4版還有VC9版本的產品程序)
注意建立好自己的文件存放方式,方便以後管理
下載完畢後解壓,將解壓的 Apache24文件夾復制到自己的項目目錄裡面。你的項目根目錄為E:/wamp/Apache24/htdocs即DocumentRoot的定義。如果想放到其他目錄下,需要修改httpd.conf,包括ServerRoot、DocumentRoot、Directories,ScriptAlias。需要改為你的Apache目錄的地址。
因為這里我們下載的是官方源碼包,所以需要把Apache服務安裝到我們的計算機上面
開啟控制台:win+R 輸入cmd
命令行下進入到apache下面的bin目錄,輸入
httpd -k install 把apache安裝成windows後台服務。
所有基本的命令都可以在Apache官網上找到,下面是一些常用的命令
最後使用ApacheMonitor來管理apache伺服器
訪問測試是否成功
⑶ 跪求..在windows系統下怎樣使用apache
Apache http://httpd.apache.org/
最流行的HTTP伺服器軟體之一。快速、可靠、可通過簡單的API擴展,Perl/Python解釋器可被編譯到伺服器中,完全免費,完全源代碼開放。
我下載的是for Windows版本,目前最新版本是:2.0.54
PHP http://www.php.net/
PHP 是一種 HTML 內嵌式的語言。而PHP獨特的語法混合了 C、Java、Perl 以及 PHP 式的新語法。它可以比 CGI 或者 Perl 更快速的執行動態網頁。
我下載的是for Windows版本,目前最新版本是:5.0.4
Mysql http://www.mysql.com/
是一個多線程的,結構化查詢語言(SQL)資料庫伺服器。SQL 在世界上是最流行的資料庫語言。MySQL 的執行性能非常高,運行速度非常快,並非常容易使用。
我下載的是for Windows版本,目前最新版本是:5.0.4 Beta
phpMyAdmin http://www.phpmyadmin.net/
phpMyAdmin 是一個用PHP編寫的,可以通過互聯網控制和操作MySQL。通過phpMyAdmin可以完全對資料庫進行操作。
我下載的是for Windows版本,目前最新版本是:2.6.2-pl1
安裝apache和PHP
下面是我的安裝記錄:
選擇80埠,將apache安裝在 e:\apache下。
配置apache里的httpd.conf文件(conf目錄下)
找到 DocumentRoot "E:/apache/Apache2/htdocs" 將其改為WEB目錄E:/htdocs
找到 DirectoryIndex index.html index.html.var 在後面加入 index.htm index.php default.php default.html
選擇模塊化模式安裝
找到 #LoadMole ssl_mole moles/mod_ssl.so 這行,在此行後加入一行
LoadMole php5_mole e:/php/php5apache2.dll
找到 AddType application/x-gzip .gz .tgz 這行,在此行後加入一行
AddType application/x-httpd-php .php
將php-5.0.4-Win32.zip里內容解壓到e:\php里,找到php.ini-recommended,重命名為php.ini並拷貝到windows目錄下。
NTFS上記得給伺服器開PHP.ini的讀許可權。
查找extension_dir後面的改為"e:/php/ext"
查找Windows Extensions,把下面有一排的;extension=php_***.dll的分號去掉,就是支持組件了。我把 extension=php_gd2.dll extension=php_mbstring.dll extension=php_mysql.dll 的分號去掉了。
php5默認不支持mysql了,所以要為他添加支持,除了extension=php_mysql.dll去分號之外,在php目錄里有個libmysql.dll文件,把它復制到系統的system32文件夾下,復制php.ini到windows目錄下。
此時PHP環境基本已經配置成功
在WEB根目錄里建一個名為test.php的文件內容如下
<? echo phpinfo(); ?>
重新啟動apache服務,用瀏覽器打開 http://localhost/test.php
如果可以看到php配置輸出信息就成功了
安裝mysql
將mysql安裝到指定目錄,然後安裝程序會引導你一步步配置。不過奇怪的是最後任務欄沒有出現Mysql的圖標。
修改mysql資料庫的root密碼
用cmd進入命今行模式輸入如下命令: ( 注: d:\mysql 為mysql安裝目錄)
cd d:\mysql\bin
mysqladmin -u root -p password 123456
回車出現
Enter password: ( 注:這是叫你輸入原密碼. 剛安裝時密碼為空,所以直接回車即可)
此時mysql 中賬號 root 的密碼 被改為 123456 安裝完畢
配置php.ini並測試mysql
找到extension_dir = "./" 改為 extension_dir = "e:/php/ext"
找到
;extension=php_mysql.dll
將';'去掉改為
extension=php_mysql.dll
找到
;session.save_path = "/tmp"
將';'去掉 設置你保存session的目錄,如
session.save_path = "e:/php/session_temp"
重啟apache服務
在Web根目錄下建立testdb.php文件內容如下:
<?php
$link=mysql_connect('localhost','root','123456');
if(!$link) echo "fail";
else echo "success";
mysql_close();
?>
用瀏覽器打開http://localhost/testdb.php 如果輸出success就OK了
phpmyadmin的安裝配置
將phpMyAdmin-V2.6.2-pl1.zip解壓到WEB根目錄中去,重命名文件夾為phpmyadmin或其它
打開phpmyadmin 目錄中的 config.inc.php
找到
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '123456';
分別填上用戶名和密碼
⑷ 如何使用APACHE在windows上>
在windows上使用APACHE的方法如下:
1、進入apache官網http://httpd.apache.org/,下載穩定版的httpd 2.2.29為例,點擊download。

⑸ 編譯安裝apache 怎麼關閉 gzip
先來了解一下GZIP ,gzip是GNU zip的縮寫,它是一個GNU自由軟體的文件壓縮程序,也經常用來表示gzip這種文件格式。軟體的作者是Jean-loup Gailly和Mark Adler。1992年10月31日第一次公開發布,版本號是0.1,目前的穩定版本是1.2.4。
gzip可以級大的加速網站.有時壓縮比率高到80%,近來測試了一下,最少都有40%以上,還是相當不錯的.在Apache2之後的版本,模塊名不叫gzip,而叫mod_deflate
1、Apache啟用gzip
如果要開啟gzip的話,一定要打開下面二個模塊.
LoadMole headers_mole moles/mod_headers.so
LoadMole deflate_mole moles/mod_deflate.so
設置壓縮比率,取值范圍在 1(最低) 到 9(最高)之間,不建議設置太高,雖然有很高的壓縮率,但是佔用更多的CPU資源.
DeflateCompressionLevel 3
AddOutputFilter DEFLATE html xml php js css
<Location />
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4/.0[678] no-gzip
BrowserMatch /bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI //.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary #對代理的設置
</Location>
測試數據對css
Original Size: 44 KB
Gzipped Size: 10 KB
Data Savings: 77.27%
測試數據js
Original Size: 6 KB
Gzipped Size: 2 KB
Data Savings: 66.67%
測試數據php
Original Size: 62 KB
Gzipped Size: 15 KB
Data Savings: 75.81%
上面只是隨機拿的幾個數據,看的出來,使用了gzip壓縮後文件小多了.
另外講一下,有關squid對gzip的處理
在squid中,對同一個URL只保留一份緩存。對於如果不同browser(是否支持壓縮)如果頻繁交替訪問,例如:對某個cache住的目標,一個 http/1.0請求可能會導致squid強制更新其緩存。但接下來的另一個http/1.1請求又會導致squid再次更新緩存。這樣那squid緩存 數據就要頻繁更新,這就極大的降低了cache命中率。
不過還好,現實環境中不支持壓縮的browser畢竟是很少的情況,所以對於緩存命中率的降低很有限.
這個神通廣大的模塊就是mod_gzip. 它通過用和gzip一樣的壓縮演算法對apache發出的頁面進行壓縮,可能的話可以把頁面壓縮成為原來大小的十份之一。哪,如果10K的頁面只要傳1K這 不就是提速10倍嘛。當然一般網頁只可以達到3-6倍。那也很不錯。對吧。連google這樣一個大的網站都採用這個技術。你還不快跟上?
這樣一個好東東,來來來,我告訴你如何安裝:分3步,1、下載,2、修改配置,3、測試。
安裝, 配置
把mod_gzip放到你的apache的源代碼目錄下,新建一個mod_gzip目錄如果需要補丁(針對1.3.17.la版) 還需運行:
patch mod_gizp.c
按你需要,在配置中選擇動態DSO或靜態編譯進apache系統。如何處理在README中講得很清楚,如-add-mole=mod_gzip.c, make,make install等等。這里不多講。
把下列配置加入httpd.conf尾部。
# MOD_GZIP configuration
mod_gzip_on Yes
mod_gzip_minimum_file_size 1002
mod_gzip_maximum_file_size 0
mod_gzip_maximum_inmem_size 60000
mod_gzip_item_include mime "application/x-httpd-php"
mod_gzip_item_include mime text/*
mod_gzip_item_include mime "httpd/unix-directory"
mod_gzip_dechunk Yes
mod_gzip_temp_dir "/tmp"
mod_gzip_keep_workfiles No
mod_gzip_item_include file ".php3$"
mod_gzip_item_include file ".txt$"
mod_gzip_item_include file ".html$"
mod_gzip_item_exclude file ".css$"
mod_gzip_item_exclude file ".js$"
在保存修改後運行
…/bin/apachectl configtest確保配置修改無誤。
然後用 apachectl restart 指令重起服務。
修改,測試
在宣布做好了之前在測試一下是優秀程序員的習慣。為了盡量不影響你的用戶的瀏覽,我們可以用把新的apache驅動在8080埠上或者用指令控制mod_gzip起作用的目錄,而不是一下子全用mod_gzip.
用法如下:
MOD_GZIP configuration
沒有問題後你就可以讓你的用戶很開心的發現』XX網站現在好快哦。』
Mod_gzip真的很神奇,100K的HTML大 文檔只要12K就可以傳到用戶端了。越先採用這個技術你的用戶對你的網站的高速度印象就越深。不過有所得必有所失,由於解壓是在客戶端進行的,效果和用戶 的瀏覽器有一定關系。
2、IIS啟用gzip
現代的瀏覽器IE6和Firefox都支持客戶端Gzip,也就是說,在伺服器上的網頁,傳輸之前,先使用Gzip壓縮再傳輸給客戶端,客戶端接收之後由瀏覽器解壓顯示,這樣雖然稍微佔用了一些伺服器和客戶端的CPU,但是換來的是更高的帶寬利用率。對於純文本來講,壓縮率是相當可觀的。如果每個用戶節約50%的帶寬,那麼你租用來的那點帶寬就可以服務多一倍的客戶了。
IIS6已經內建了Gzip壓縮的支持,可惜,沒有設置更好的管理界面。所以要打開這個選項,還要費些功夫。
首先,如果你需要壓縮靜態文件(HTML),需要在硬碟上建一個目錄,並給它「IUSR_機器名」這個用戶的寫許可權。如果壓縮動態文件(PHP,asp,aspx)就不需要了,因為它的頁面是每次都動態生成的,壓縮完就放棄。然後在IIS管理器中,「網站」上面右鍵-屬性,不是下面的某個站點,而是整個網站。進入「服務」標簽,選上啟用動態內容壓縮,靜態內容壓縮。
然後選中網站下面那個伺服器擴展,新建一個伺服器擴展。名字無所謂,下面的添加文件的路徑是:
c:/windows/system32/inetsrv/gzip.dll,然後啟用這個擴展。
這時候靜態內容是可以壓縮的,但是對於動態內容,aspx文件卻不在壓縮范圍內。因為默認的可壓縮文件並沒有這個擴展名。而管理界面中你又找不到可以增加擴展名的地方,這時候只能去修改它的配置文件了。
在 c:/windows/system32/inetsrv/下面有個MetaBase.xml文件,可以用記事本打開,找到 IIsCompressionScheme,有三個相同名字的段,分別是deflate,gzip,Parameters,第三段不用管它,前兩段有基本相同的參數,在這兩段的參數HcScriptFileExtensions下面都加上一行aspx,如果你有其它的動態程序要壓縮,也加在這里。 HcDynamicCompressionLevel改成9,(0-10,9是性價比最高的一個)。
1.首先備份 IIS 的配置文件,
復制C:/Windows/system32/inetsrv/metabase.xml到另外的備份文件夾中.
C:/Windows/system32/inetsrv/metabase.xml是 IIS 的核心配置文件,該文件的完整性一但被破壞,IIS 將無法正常運行,嚴重到需要重新安裝系統.
2. 在開始菜單中啟動 Internet 信息服務(IIS)管理器,右鍵點擊「網站」屬性,打開「服務」選項卡,勾選「HTTP 壓縮」的兩個選項。「臨時目錄」和「臨時目錄最大容量」可根據需要自行設置。設置完成後點擊確定。
3. 右鍵點擊「網站」下方的 「Web服務擴展」,添加一個新的Web服務擴展,擴展名填寫為「HTTP Compression」或其他,都可以。「要求的文件」添加:c:/windows/system32/inetsrv/gzip.dll ,並勾選「設置擴展狀態為允許」,完成後點擊確定。
4.下面的步驟有些復雜,如果沒有確定的把握能理解,最好不要嘗試,右鍵點擊「Internet 信息服務的」「本地計算機」屬性,勾選「允許直接編輯配置資料庫」並確定。
5. 在開始菜單中運行 notepad C:/Windows/system32/inetsrv/metabase.xml ,打開metabase.xml 文件,請在任何改動前再次確認該文件已經備份。
6. 搜索並找到 metabase.xml 文件中的<IIsCompressionScheme 片段中的HcScriptFileExtensions,依照原有文件的格式添加你希 望進行 HTTP 壓縮的文件擴展名,靜態文件HcFileExtensions可添加 JS,CSS 等; 動態文件HcScriptFileExtensions可添加"ASPX"」ASMX」,如下:
<IIsCompressionScheme Location =」/LM/W3SVC/Filters/Compression/deflate」
HcCompressionDll=」%windir%/system32/inetsrv/gzip.dll」
HcCreateFlags=」0″
HcDoDynamicCompression=」TRUE」
HcDoOnDemandCompression=」TRUE」
HcDoStaticCompression=」FALSE」
HcDynamicCompressionLevel=」9″
HcFileExtensions=」htm
html
js
css
txt」
HcOnDemandCompLevel=」10″
HcPriority=」1″
HcScriptFileExtensions=」asp
aspx
asmx
dll
exe」
>
</IIsCompressionScheme>
<IIsCompressionScheme Location =」/LM/W3SVC/Filters/Compression/gzip」
HcCompressionDll=」%windir%/system32/inetsrv/gzip.dll」
HcCreateFlags=」1″
HcDoDynamicCompression=」TRUE」
HcDoOnDemandCompression=」TRUE」
HcDoStaticCompression=」TRUE」
HcDynamicCompressionLevel=」9″
HcFileExtensions=」htm
html
js
css
txt」
HcOnDemandCompLevel=」10″
HcPriority=」1″
HcScriptFileExtensions=」asp
aspx
asmx
dll
exe」
>
</IIsCompressionScheme>
注意「Compression/deflate」和「Compression/gzip」兩個片段都需要修改。動態壓縮等級,HcDynamicCompressionLevel建議設置為「9」
7. 保存並關閉 metabase.xml 文件。
8. 重新啟動 IIS 服務,運行「IISReset」或重新啟動 WWW 服務。
9. 其他:
如果你的伺服器上某一個Web站點不希望啟用 IIS 壓縮,請運行以下腳本:
cscript. C:/Inetpub/AdminScripts/adsutil.vbs set w3svc/site#/root/DoStaticCompression False
cscript. C:/Inetpub/AdminScripts/adsutil.vbs set w3svc/site#/root/DoDynamicCompression False
如果想增加啟用 HTTP 壓縮的文件類型,請運行以下腳本:
「」 中為文件擴展名,別忘了把原有的擴展名加上。
靜態文件壓縮:
CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/GZIP/HcFileExtensions 「htm」 「html」 「txt」 「doc」 「ppt」 「xls」
CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcFileExtensions 「htm」 「html」 「txt」 「doc」 「ppt」 「xls」
動態文件壓縮:
CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/GZIP/HcScriptFileExtensions 「asp」 「aspx」 「asmx」 「dll」 「exe」 「php」
CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcScriptFileExtensions 「asp」 「aspx」 「asmx」 「dll」 「exe」 「php」
將site#替換為該 Web 站點的 ID。Web 站點的 ID是什麼到「日誌記錄屬性」中看一下日誌記錄的「日誌文件名」前面的路徑就知道了。
運行以上腳本前務必備份,運行後再次執行「IISReset」使生效.
⑹ 如何優化windows+apache 性能的具體方法
Windows系統下如果優化Apache的性能主要是通過專門針對Windows NT優化的MPM(多路處理模塊)-mpm_winnt.c來優化的,它使用一個單獨的父進程產生一個單獨的子進程,在這個子進程中輪流產生多個線程來處理請求。也就是說mpm_winnt只能啟動父子兩個進程, 不能像linux下那樣同時啟動多個進程。
mpm_winnt主要通過ThreadsPerChild和MaxRequestsPerChild兩個參數來優化Apache。
ThreadsPerChild
這個參數用於設置每個進程的線程數, 子進程在啟動時建立這些線程後就不再建立新的線程了. 一方面因為mpm_winnt不能啟動多個進程, 所以這個數值要足夠大,以便可以處理可能的請求高峰; 另一方面該參數以伺服器的響應速度為準的, 數目太大的反而會變慢。因此需要綜合均衡一個合理的數值。mpm_winnt上的默認值是64, 最大值是1920. 這里建議設置為100-500之間,伺服器性能高的話值大一些,反之值小一些。
MaxRequestsPerChild
該參數表示每個子進程能夠處理的最大請求數, 即同時間內子進程數目.設置為零表示不限制, mpm_winnt上的默認值就是0.
官方參考手冊中不建議設置為0, 主要基於兩點考慮: (1) 可以防止(偶然的)內存泄漏無限進行,從而耗盡內存; (2) 給進程一個有限壽命,從而有助於當伺服器負載減輕的時候減少活動進程的數量。
因此這個參數的值更大程度上取決於伺服器的內存,如果內存比較大的話可以設置為0或很大的數字,否則設置一個小的數值。需要說明的是,如果這個值設置的太小的話會造成Apache頻繁重啟,在日誌文件中會看到如下的文字:Process exiting because it reached MaxRequestsPerChild. Signaling the parent,這樣一來降低了Apache的總體性能。
另外,可以通過查看Apache提供的server-status(狀態報告)來驗證當前所設置數值是否合理,在httpd.conf文件中做如下設置來打開它:
# 首先需要載入mod_status模塊
LoadMole status_mole moles/mod_status.so
# 然後設置訪問的地址
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
# 如果限制某個IP訪問則設置為 Allow from 192.168.1.1
Allow from all
</Location>
綜合來說,因為Windows NT下Apache只能啟動父子兩個進程,因此只能通過增大單個進程的線程數以及單個進程能夠處理的最大請求數來進行優化。其他優化的參數同Linux系統下是一樣的,大家可以加以參考。下面針對上述兩個參數給出一個建議的設置:
<IfMole mpm_winnt.c>
ThreadsPerChild 250
MaxRequestsPerChild 5000
</IfMole>
用上面的方法優化了一下windows+apache+php後,發現響應速度快了很多,一般最多隻延遲3秒左右,但對於美國的主機來說應該是個正常的狀態吧!
⑺ apache的優化
我們在使用Apache作為web伺服器的過程中,只有對Apache伺服器進行適當的優化配置,才能讓Apache發揮出更好的性能;再反過來說,如果Apache的配置非常糟糕,Apache可能無法正常為我們服務。因此,針對我們的應用需求對Apache伺服器的配置進行一定的優化是必不可少的。
硬體和操作系統
毫無疑問,要想讓Apache伺服器發揮出更好的性能,首先必須得保證硬體和操作系統能夠滿足Apache伺服器的負載需要。如果由於硬體和操作系統原因導致Apache的運行性能受到較大的影響,即使對Apache伺服器本身優化配置得再好也無濟於事,「想要馬兒跑得好,又想馬兒不吃草」當然是行不通的。
一般而言,影響web伺服器性能的最大的因素是內存。當內存不足時,操作系統將會使用內存交換機制。內存交換機制,簡而言之,就是將本地磁碟的一部分作為虛擬內存空間供程序使用。web伺服器想要更好地所有用戶服務,則其應該永遠不要使用內存交換機制,否則其性能將會受到較大的影響。不僅如此,由於伺服器使用了內存交換機制所產生的「滯後」,「滯後」的直接後果就是讓用戶感覺網站的訪問速度很慢,此時用戶極有可能會點擊【停止】或者【刷新】,如果用戶不停地點擊【刷新】,將會給伺服器帶來更大的負載,從而進入一個惡性循環。
對於Apache伺服器的內存需求量,我們可以通過操作系統相關命令查看伺服器正常運行時每個為用戶服務的進程(或線程)平均佔用多少的內存,再根據需求或者相關數據得出單個伺服器所要支撐的最大並發負載數,從而計算出Apache伺服器的內存需求量。為Apache伺服器分配的內存最好能夠大於計算得來的需求量。
除此之外,硬體最好能夠保證有足夠快的CPU、足夠快的網卡(足夠的帶寬)、足夠快足夠大的硬碟。這里的「足夠」是指能夠滿足web應用的實際需求。
至於操作系統,最好能夠選擇一個有利於伺服器運行的最新最穩定的版本並安裝好了對應的補丁程序。畢竟,隨著時代的發展,操作系統也在不斷進步。許多操作系統廠商都提供了可以顯著改善性能的TCP協議棧和線程庫。例如,如果你的操作系統支持sendfile()系統調用,Apache 2.x伺服器可以使用sendfile()從而更快地發送靜態內容並且佔用較少的CPU時間。
優化Apache配置
1.盡量使用IP地址代替域名
在Apache的配置文件中,有許多可以針對具體請求來源進行相應操作的配置,例如 allow from 365mini.com表示允許域名為365mini.com的用戶訪問。在這種情況下,如果我們知道該域名或主機名與某個IP地址一一對應,則最好使用具體的IP地址來代替域名。否則Apache伺服器將要進行多次DNS查詢來確定該域名或主機名所對應的IP地址。 注意:可能存在一些例外情況,例如一個IP地址對應多個域名,或者一個域名對應多個IP地址或者對應一個變化的IP地址,此時仍然要使用域名或主機名。一般而言,只有域名或主機名與IP地址具有一一對應關系時,才使用IP地址來代替域名。請根據實際情況作出選擇。 2.啟用FollowSymLinks選項
當Apache處理請求時,如果對應的請求文件所在目錄沒有啟用FollowSymLinks選項,或使用了SymLinksIfOwnerMatch選項,Apache就必須執行額外的系統調用來驗證符號連接的安全性。文件名的每一個組成部分都需要一次額外的調用。因此,如果在安全性允許的情況下,為了得到更加良好的運行性能,應當放棄對符號連接的保護,在所有地方都設置FollowSymLinks,並放棄使用SymLinksIfOwnerMatch。 #啟用FollowSymLinks選項,如果子目錄沒有額外的設置,將會繼承該設置
<Directory />
Options FollowSymLinks
</Directory> 3.禁用AllowOverride
如果Apache的配置文件中允許了AllowOverride指令,則Apache在處理每個請求路徑時,都會嘗試對文件路徑的每一個組成部分都打開該目錄下的.htaccess文件。
例如,當用戶請求訪問伺服器上的/static/test/hello.html,則Apache將會嘗試打開/static/test/.htaccess、/static/.htaccess、/.htaccess三個文件。從而影響伺服器的運行性能。
因此,如果當前用戶擁有Apache配置文件的編輯許可權,建議將.htaccess文件中的配置內容直接寫在Apache對應的配置文件(一般為httpd.conf)中,並禁用AllowOverride。 #禁用AllowOverride
<Directory />
AllowOverride None
</Directory> 當然,如果用戶不具備Apache配置文件的編輯許可權,又希望能夠對站點進行相應的管理設置,就需要管理員允許AllowOverride,以便於用戶編寫自己的.htaccess文件。
4.盡量不使用通配符
在Apache的配置文件中,我們可以指定每個目錄下的默認歡迎頁面,例如: #以內容協商的方式指定歡迎頁面
<Directory />
DirectoryIndex index
</Directory> 使用上述配置後,當訪問當前目錄時,Apache將會在當前目錄下查找名稱形如index.*的文件,並根據客戶端期望響應的類型自動返回一個最匹配的請求文件(即內容協商)。
不過,這樣做將會導致一點性能損失,盡管內容協商的好處大於性能的損失,如果你仍然在意這一點性能損失的話,建議你不要使用上述通配符形式的配置,而是根據自己的需要,指定一個完整的index.*文件列表。 #指定歡迎頁面
<Directory />
DirectoryIndex index.html index.cgi index.pl
</Directory> 使用上述配置後,Apache將按照從左到右的先後順序依次查找上述三個名稱的文件,並響應最先找到的那個文件。
5.選擇適當的多路處理模塊(MPM)
由於多路處理模塊的相關內容較多,請參考下面的修改最大並發連接數。
6.修改Apache的並發連接配置
關於修改Apache的並發連接配置的具體內容,請同樣參考請參考下面的修改最大並發連接數。 Apache是一個跨平台的web伺服器,由於其簡單高效、穩定安全的特性,被廣泛應用於計算機技術的各個領域。現在,Apache憑借其龐大的用戶數,已成為用戶數排名第一的web伺服器。
盡管如此,在實際的生產環境中,我們仍然不可能直接使用默認配置的Apache來充當伺服器。畢竟,為了更充分合理地利用Apache伺服器,我們都應該根據自己的實際需要對Apache的默認配置作出一些必要的調整。而針對Apache的優化配置過程中,修改Apache的最大並發連接數 就顯得尤為重要。
在修改Apache的最大並發連接數 之前,我們需要預先了解一些Apache的相關知識。
眾所周知,Apache是一個跨平台的、採用模塊化設計的伺服器。為了應對不同的平台和不同的環境產生的各種不同的需求,也為了在具體的平台或環境下達到最佳的效果,Apache在web伺服器的基礎功能方面(埠綁定、接收請求等)也同樣採用了模塊化設計,這個Apache的核心模塊就叫做多路處理模塊(Multi-ProcessingMole,簡稱MPM)。
Apache針對不同的操作系統提供了多個不同的MPM模塊,例如:mpm_beos、mpm_event、mpm_netware、mpmt_os2、mpm_prefork、mpm_winnt、mpm_worker。如果條件允許,我們可以根據實際需求將指定的MPM模塊編譯進我們自己的Apache中(Apache的源碼是開放的,允許用戶自行編譯)。不過,如果在編譯時我們沒有選擇,Apache將按照如下表格根據不同的操作系統自行選擇對應的MPM模塊,這也是Apache針對不同平台推薦使用的MPM模塊。 不同操作系統上默認的MPM模塊 操作系統 MPM模塊 描述 Windows mpm_winnt 不用介紹了吧:) Unix/Linux mpm_prefork 不用介紹了吧:) BeOS mpm_beos 由Be公司開發的一種多媒體操作系統,官方版已停止更新。 Netware mpm_netware 由NOVELL公司推出的一種網路操作系統 OS/2 mpmt_os2 一種最初由微軟和IBM共同開發的操作系統,現由IBM單獨開發(微軟放棄OS/2,轉而開發Windows) mpm_event模塊可以看作是mpm_worker模塊的一個變種,不過其具有實驗性質,一般不推薦使用。
當然,Apache在其官方網站上也提供了根據不同操作系統已經編譯好對應MPM模塊的成品Apache。你可以點擊此處進入Apache官方網站下載。
此外,如果我們想要知道某個Apache內部使用的是何種MPM模塊,我們可以以命令行的方式進入Apache安裝目錄in,然後鍵入命令httpd-l,即可查看到當前Apache內部使用的何種MPM模塊。
使用httpd-l命令查看編譯模塊
由於在平常的開發工作中,BeOS、NetWare、OS/2等操作系統並不常見,這里我們主要針對Windows和Unix/Linux操作系統上的MPM模塊進行講解。在Windows和Unix/Linux操作系統上,MPM模塊主要有mpm_winnt、mpm_prefork、mpm_worker三種。
mpm_prefork模塊
mpm_prefork模塊主要應用於Unix/Linux平台的Apache伺服器,其主要工作方式是:當Apache伺服器啟動後,mpm_prefork模塊會預先創建多個子進程(默認為5個),當接收到客戶端的請求後,mpm_prefork模塊再將請求轉交給子進程處理,並且每個子進程同時只能用於處理單個請求。如果當前的請求數將超過預先創建的子進程數時,mpm_prefork模塊就會創建新的子進程來處理額外的請求。Apache總是試圖保持一些備用的或者是空閑的子進程用於迎接即將到來的請求。這樣客戶端的請求就不需要在接收後等候子進程的產生。
由於在mpm_prefork模塊中,每個請求對應一個子進程,因此其佔用的系統資源相對其他兩種模塊而言較多。不過mpm_prefork模塊的優點在於它的每個子進程都會獨立處理對應的單個請求,這樣,如果其中一個請求出現問題就不會影響到其他請求。同時,mpm_prefork模塊可以應用於不具備線程安全的第三方模塊(比如PHP的非線程安全版本),且在不支持線程調試的平台上易於調試。此外,mpm_prefork模塊還具有比mpm_prefork模塊更高的穩定性。
mpm_worker模塊
mpm_worker模塊也主要應用於Unix/Linux平台的Apache伺服器,它可以看作是mpm_prefork模塊的改進版。mpm_worker模塊的工作方式與mpm_prefork模塊類似。不過,由於處理相同請求的情況下,基於進程(例如mpm_prefork)比基於線程的處理方式佔用的系統資源要多。因此,與mpm_prefork模塊不同的是,mpm_worker模塊會讓每個子進程創建固定數量的服務線程和一個監聽線程,並讓每個服務線程來處理客戶端的請求,監聽線程用於監聽接入請求並將其傳遞給服務線程處理和應答。Apache總是試圖維持一個備用或是空閑的服務線程池。這樣,客戶端無須等待新線程或新進程的建立即可得到處理。
與mpm_prefork模塊相比,mpm_worker模塊可以進一步減少系統資源的開銷。再加上它也使用了多進程,每個進程又有多個線程,因此它與完全基於線程的處理方式相比,又增加了一定的穩定性。
mpm_winnt模塊
mpm_winnt模塊是專門針對Windows操作系統而優化設計的MPM模塊。它只創建一個單獨的子進程,並在這個子進程中輪流產生多個線程來處理請求。
修改MPM模塊配置
在對Apache的MPM模塊具備一定了解後,我們就可以針對不同的MPM模塊來修改Apache的最大並發連接數 配置了。
1、啟用MPM模塊配置文件
在Apace安裝目錄/conf/extra目錄中有一個名為httpd-mpm.conf的配置文件。該文件主要用於進行MPM模塊的相關配置。不過,在默認情況下,Apache的MPM模塊配置文件並沒有啟用。因此,我們需要在httpd.conf文件中啟用該配置文件,如下所示: #Server-poolmanagement(MPMspecific)Includeconf/extra/httpd-mpm.conf(去掉該行前面的注釋符號#)2、 修改MPM模塊配置文件中的相關配置
在啟動MPM模塊配置文件後,我們就可以使用文本編輯器打開該配置文件,我們可以看到,在該配置文件中有許多<IfMole>配置節點,只有Apache使用對應MPM模塊時,對應配置才會生效
此時,我們就需要根據當前Apache伺服器所使用的MPM模塊,來修改對應<IfMole>節點下的參數配置。首先,我們來看看mpm_winnt模塊下的默認配置: #由於mpm_winnt模塊只會創建1個子進程,因此這里對單個子進程的參數設置就相當於對整個Apache的參數設置<IfMolempm_winnt_mole>ThreadsPerChild150#推薦設置:小型網站=1000中型網站=1000~2000大型網站=2000~3500MaxRequestsPerChild0#推薦設置:小=10000中或大=20000~100000</IfMole>對應的配置參數作用如下: 參數名稱參數作用ThreadsPerChild 每個子進程的最大並發線程數。MaxRequestsPerChild每個子進程允許處理的請求總數。
(如果累計處理的請求數超過該值,該子進程將會結束(然後根據需要確定是否創建新的子進程),該值設為0表示不限制請求總數(子進程永不結束)。該參數建議設為非零的值,可以帶來以下兩個好處:
1.可以防止程序中可能存在的內存泄漏無限進行下去,從而耗盡內存。
2.給進程一個有限壽命,從而有助於當伺服器負載減輕的時候減少活動進程的數量。
) 注意:在以上涉及到統計請求數量的參數中,對於KeepAlive的連接,只有第一個請求會被計數。
接著,我們再來看看mpm_perfork模塊和mpm_worker模塊下的默認配置: #mpm_perfork模塊<IfMolempm_prefork_mole>StartServers5#推薦設置:小=默認中=20~50大=50~100MinSpareServers5#推薦設置:與StartServers保持一致MaxSpareServers10#推薦設置:小=20中=30~80大=80~120MaxClients150#推薦設置:小=500中=500~1500大型=1500~3000MaxRequestsPerChild0#推薦設置:小=10000中或大=10000~500000(此外,還需額外設置ServerLimit參數,該參數最好與MaxClients的值保持一致。)</IfMole>#mpm_worker模塊<IfMolempm_worker_mole>StartServers2#推薦設置:小=默認中=3~5大=5~10MaxClients150#推薦設置:小=500中=500~1500大型=1500~3000MinSpareThreads25#推薦設置:小=默認中=50~100大=100~200MaxSpareThreads75#推薦設置:小=默認中=80~160大=200~400ThreadsPerChild25#推薦設置:小=默認中=50~100大型=100~200MaxRequestsPerChild0#推薦設置:小=10000中或大=10000~50000(此外,如果MaxClients/ThreadsPerChild大於16,還需額外設置ServerLimit參數,ServerLimit必須大於等於MaxClients/ThreadsPerChild的值。)</IfMole>對應的配置參數作用如下表: 參數名稱參數作用StartServers啟動Apache時創建的子進程數。MinSpareServers處於空閑狀態的最小子進程數。(所謂空閑子進程是指沒有正在處理請求的子進程。如果當前空閑子進程數少於MinSpareServers,那麼Apache將以最大每秒一個的速度產生新的子進程。只有在非常繁忙機器上才需要調整這個參數。此值不宜過大。)MaxSpareServers處於空閑狀態的最大子進程數。(只有在非常繁忙機器上才需要調整這個參數。此值不宜過大。如果你將該指令的值設置為比MinSpareServers小,Apache將會自動將其修改成MinSpareServers+1。)MaxClients允許同時連接的最大請求數量。1、任何超過MaxClients限制的請求都將進入等待隊列,直到達到ListenBacklog指令限制的最大值為止
2、對於非線程型的MPM(也就是mpm_prefork),MaxClients表示可以用於處理客戶端請求的最大子進程數量,默認值是256。要增大這個值,你必須同時增大ServerLimit。
3、對於線程型或者混合型的MPM(也就是mpm_beos或mpm_worker),MaxClients表示可以用於處理客戶端請求的最大線程數量。線程型的mpm_beos的默認值是50。對於混合型的MPM默認值是16(ServerLimit)乘以25(ThreadsPerChild)的結果。因此要將MaxClients增加到超過16個進程才能提供的時候,你必須同時增加ServerLimit的值。 MinSpareThreads處於空閑狀態的最小線程數。
(註:不同的MPM對這個指令的處理是不一樣的:mpm_worker的默認值是75。這個MPM將基於整個伺服器監視空閑線程數。如果伺服器中總的空閑線程數太少,子進程將產生新的空閑線程。mpm_netware的默認值是10。既然這個MPM只運行單獨一個子進程,此MPM當然亦基於整個伺服器監視空閑線程數。mpm_beos和mpmt_os2的工作方式與mpm_netware差不多,mpm_beos的默認值是1;mpmt_os2的默認值是5。) MaxSpareThreads處於空閑狀態的最大線程數。
(註:不同的MPM對這個指令的處理是不一樣的:mpm_worker的默認值是250。這個MPM將基於整個伺服器監視空閑線程數。如果伺服器中總的空閑線程數太多,子進程將殺死多餘的空閑線程。mpm_netware的默認值是100。既然這個MPM只運行單獨一個子進程,此MPM當然亦基於整個伺服器監視空閑線程數。mpm_beos和mpmt_os2的工作方式與mpm_netware差不多,mpm_beos的默認值是50;mpmt_os2的默認值是10。) 備註:ServerLimit表示Apache允許創建的最大進程數。值得注意的是,Apache在編譯時內部有一個硬限制ServerLimit20000(對於mpm_prefork模塊為ServerLimit200000)。你不能超越這個限制。
使用這個指令時要特別當心。如果將ServerLimit設置成一個高出實際需要許多的值,將會有過多的共享內存被分配。如果將ServerLimit和MaxClients設置成超過系統的處理能力,Apache可能無法啟動,或者系統將變得不穩定。 注意:在配置相關參數時,請先保證伺服器具備足夠的硬體性能(例如:CPU、內存等)。如果發現自啟動後,隨著伺服器的運行時間增加,伺服器的內存佔用也隨之增加,可能是程序中出現內存泄露,請向下調整參數MaxRequestsPerChild的值以降低內存泄露帶來的影響,然後盡快找出程序中的問題之所在。

⑻ 怎樣在windows下安裝 apache http server 2.4
http://archive.apache.org/dist/httpd/binaries/win32/
這是windows下的apahce版本,最高只有2.2,如果想要安裝只能自己編譯,linux就有2.4的
⑼ windows和unix下編譯c++有什麼不同
使用的編譯器不同,unix一般使用cc,gcc,acc等。windows一般用msvc,再有buider c++等。
這些編譯器都遵守c++的標准規范,所以大同小異。
但編譯出的結果,只針對編譯器運行的平台,也就是說windows下編譯的程序無法再unix下運行,反之亦然。
⑽ apache 配置編譯參數status_info ,windowsXP下安裝的apache,配置的具體步驟是什麼
./configure --prefix=/usr/local/apache --enable-headers --enable-so --enable-rewrite --with-mpm=prefork --disable-userdir --enable-suexec --with-suexec-caller=www-data --with-suexec-docroot=/ --with-suexec-gidmin=100 --with-suexec-uidmin=100 --with-suexec-logfile=/usr/local/apache/logs/suexec_log --with-suexec-userdir=public_html
