日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

apache的动态编译和静态编译

發(fā)布時(shí)間:2025/3/21 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 apache的动态编译和静态编译 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

靜態(tài):

在使用./configure 編譯的時(shí)候,如果不指定某個(gè)模塊為動(dòng)態(tài),即沒(méi)有使用:enable-mods-shared=module或者enable-module=shared 這個(gè)2個(gè)中的一個(gè),那么所有的默認(rèn)模塊為靜態(tài)。 那么何謂靜態(tài)?? 其實(shí)就是編譯的時(shí)候所有的模塊自己編譯進(jìn) httpd 這個(gè)文件中(我們啟動(dòng)可以使用這個(gè)執(zhí)行文件,如: ./httpd & ) ,啟動(dòng)的時(shí)候這些模塊就已經(jīng)加載進(jìn)來(lái)了,也就是可以使用了, 通常為:<ifmodule> </ifmodule> 來(lái)配置。所以大家看到的配置都是 <ifmodule? module.c>? ,很顯然,module.c這個(gè)東西已經(jīng)存在 httpd這個(gè)文件中了。

動(dòng)態(tài):

就是編譯的時(shí)候,使用enable-module=shared 或者enable-modules-shared=module 來(lái)動(dòng)態(tài)編譯。? 那么什么是動(dòng)態(tài)?? 靜態(tài)是直接編譯進(jìn)httpd中, 那么動(dòng)態(tài)顯然就不編譯進(jìn)去了,也就是你啟動(dòng)的時(shí)候根本不會(huì)加載這個(gè)模塊, 而是給你一個(gè)module.so 文件,你一定要使用 loadmodule 這個(gè)語(yǔ)法來(lái)加載,這個(gè)模塊才有效。

那么區(qū)別就出來(lái)了:靜態(tài)的模塊通常是<ifmodule></ifmodule> 來(lái)配置, 動(dòng)態(tài)使用loadmoule來(lái)加載,然后再配置。

至于性能方面我沒(méi)怎么關(guān)注, 官方說(shuō)靜態(tài)的比動(dòng)態(tài)的在性能方面多5%左右。

動(dòng)態(tài)相對(duì)方便一點(diǎn), 如果你編譯完后,發(fā)現(xiàn)有些需要的模塊你沒(méi)編譯進(jìn)去(默認(rèn)編譯多少模塊呢?你用./configure –help | grep disable查看, 會(huì)讓你去disable表示默認(rèn)會(huì)編譯進(jìn)去,否者disable有什么用呢?)你可以動(dòng)態(tài)的加載, 只要你有module.so文件。

首先看看編譯apache的選項(xiàng)含義

對(duì)于apache 1.3.x

??? ./configure –prefix=/usr/local/apache –enable-module=so –enable-module=most? –enable-shared=max –enable-module=rewrite

對(duì)于apache 2.0.x

??? ./configure –prefix=/usr/local/apache2 –enable-modules=most –enable-mods-shared=all –enable-so –enable-rewrite

對(duì)于apache 2.2.0

??? ./configure –prefix=/usr/local/apache2 –enable-mods-shared=all –enable-so –enable-rewrite

舉例一:編譯一個(gè)apache2.2.8版本

??? ./configure –prefix=/usr/local/apache –enable-so –enable-mods-shared=most –enable-rewrite –enable-forward

說(shuō)明:

so模塊用來(lái)提供 DSO 支持的 apache 核心模塊.

–enable-so 選項(xiàng):讓 Apache 可以支持DSO模式,注意,這里采用的是 Apache2.0 的語(yǔ)法。如果你的Apache 是1.3版本,應(yīng)改為–enable-module=so

–enable-mods-shared=most選項(xiàng):

告訴編譯器將所有標(biāo)準(zhǔn)模塊都動(dòng)態(tài)編譯為DSO模塊。

如果用的是 Apache1.3, 改為–enable-shared=max就可以。

–enable-rewrite選項(xiàng):支持地址重寫(xiě)功能,使用1.3版本的朋友請(qǐng)將它改為–enable-module=rewrite

–enable-module=most

用most可以將一些不常用的,不在缺省常用模塊中的模塊編譯進(jìn)來(lái).

–enable-mods-shared=all意思是動(dòng)態(tài)加載所有模塊,如果去掉-shared話(huà),是靜態(tài)加載所有模塊.

舉例二:

執(zhí)行

??? ./configure –prefix=/server/apache/ –enable-deflate=shared –enable-headers=shared –enable-rewrite=shared –enable-mods-shared=most

–enable-mods-shared=all意思是動(dòng)態(tài)加載所有模塊,如果去掉-shared話(huà),是靜態(tài)加載所有模塊。

–enable-mods-shared=most則是動(dòng)態(tài)編譯大部分常用的模塊,當(dāng)然,也可以有選擇的加載一些模塊,most意思是只包含通常用的模塊,并且以動(dòng)態(tài)加載模式加載. 記住apache1.xx和apache2.xx的模塊編譯寫(xiě)法是不一樣的.

下面我來(lái)說(shuō)說(shuō)上面幾種模塊的作用:

deflate模塊作用為讓服務(wù)器實(shí)現(xiàn)gzip功能,可以大大降低服務(wù)器的帶寬消耗。(為什么這么說(shuō),我來(lái)說(shuō)給你聽(tīng),比如一個(gè)大小為700KB的網(wǎng)頁(yè),但是通過(guò)壓縮功能,我們把壓縮到70KB,然后吧壓縮到的70KB傳到WEB客戶(hù)端,實(shí)際上這不就是降低帶寬的消耗嗎?)但是卻有個(gè)致命的缺點(diǎn),那是以消耗服務(wù)器的CPU,內(nèi)存資源為代價(jià)的。

注:

apache1.xx版本中這個(gè)模塊名叫mod_gzip模塊,在apache2.xx中才被deflate模塊所替代。

headers功能如上,跟deflate配套使用。

rewrite這個(gè)模塊的作用很重要,防盜鏈幾乎全靠它了。

為了有什么這么一條,我前面還要加載那3個(gè)模塊呢,其實(shí)也沒(méi)什么,當(dāng)時(shí)只是擔(dān)心那3個(gè)模塊不在“通用”范疇內(nèi),所有手動(dòng)添加了。就加著吧,反正沒(méi)任何問(wèn)題。

這里我來(lái)解釋下什么叫動(dòng)態(tài)加載和靜態(tài)加載?

說(shuō)簡(jiǎn)單,并用打比喻的方式來(lái)解釋。

好比有兩個(gè)人a和m
a代表apache,m代表module
要想讓a使用m的東西
一個(gè)方法是把m的東西都放到a那里去,a使用的時(shí)候就是現(xiàn)成的了
就是所謂的靜態(tài)編譯

還有一個(gè)方法,
就是告訴a, m的住址,當(dāng)a要使用m的東西的時(shí)候,a去找m,然后使用
不過(guò),這種方法要注意的一個(gè)問(wèn)題就是:m必須要有實(shí)際的住址,
否則a會(huì)找不到m而產(chǎn)生錯(cuò)誤的,我此文開(kāi)始提到的 apachectl startssl產(chǎn)生
的錯(cuò)誤就是這個(gè)原因,應(yīng)該再編譯好ssl才可以的.
這種方法也就是apache 的動(dòng)態(tài)(DSO)編譯了.

作者:南非螞蟻

注:本文的—prefix里面的符號(hào)是兩個(gè)短桿啊,有Linux基礎(chǔ)的童鞋都知道的。這應(yīng)該是WordPress的Bug,老是把后臺(tái)的兩個(gè)短桿在前臺(tái)顯示成一個(gè)長(zhǎng)桿了

轉(zhuǎn)載于:https://www.cnblogs.com/xuxyblog/p/4305338.html

總結(jié)

以上是生活随笔為你收集整理的apache的动态编译和静态编译的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。