【求助】Apache 的 ./configure 請教



贊助商連結


頁 : 1 [2]

b90220208
2005-05-13, 07:15 PM
...原來layout指的是apache的安裝架構.
感謝您的回應,

當我提到,
在編譯php時,--with-config-file-path=/path/to/apache是作什麼的?
您回答,
--with-config-file-path
這各就是你的 php 的 php.ini 要指定放到哪邊

Q[1].
依您的回答我想接著問,php.ini為何要放到 /path/to/apache 而不是放在/path/to/php呢?
-----------------------------------------------------------------

Q[2].
依您的意思,
要使用APXS安裝某某模組時,是否只需設定參數:
--enable-shared=某某模組名
而無需設定
--enable-module=該模組名??

那麼文件中說明DSO support時所舉之例(我列出如下)為何兩個參數皆有設定呢?
./configure --prefix=/path/to/apache \
--enable-shared=rewrite \
--enable-module=rewrite \

-----------------------------------------------------

Q[3].
以下文件段落內容是否表示只要設定了--enable-shared=任一模組名,則安裝SCRIPT程式會自動設定--enable-module=so,無須我們手動設定的意思嗎?
The usage of any --enable-shared option automatically implies a --enable-module=so option because the bootstrapping module mod_so is always needed for DSO support.
-----------------------------------------------------------------------

Q[4].
您回答中提到的:
只有一各有這各參數(--enable-suexec)
一各沒有這各參數(--enable-module=suexec)
指的是什麼意思呢?
(若--enable-module=suexec表使安裝SUEXEC成STATIC MODULE,
那麼
--enable-suexec又是作什麼的?...這主要是我搞不清楚的地方)

.....感激不盡

贊助商連結


repsol
2005-05-15, 06:31 PM
Q1:
install php 的 prefix 是 /usr/local
--with-config-file-path 的 default 是 PREFIX/lib

--with-config-file-path=PATH
Sets the path in which to look for php.ini, defaults to PREFIX/lib


如果你想要放到其他的路徑,才需要指定這個安裝的參數,然後指定路徑把 php.ini 放到那邊去。
/path/to/apache 或是 /path/to/php 都可以,只是給你參考而已。


Q2:
你說文件中說明
--enable-shared=rewrite \
--enable-module=rewrite

為什麼文件中會用這個例子,你有動手試過嗎??

rewrite 這個 module 是在 apache 的 source 裡面,default 是不 enable 的 module
所以問文件中這兩行的意思是說

enable rewrite 這個 module 然後把 rewrite 這個裝成 shared 的 module

--enable-shared 和 --enable-module 這兩個參數的用法有先了解過了嗎??

文件中這段文
When you later want to extend your Apache installation via third-party modules through the DSO+APXS mechanism make sure that you at least compile with mod_so included, even when no

distributed modules are build as shared objects.

這一段文有提到 Third-party
Third-party 的 module 就類似 mod_gzip,它就有支援 static 和 shared 的 module 安裝方式
http://www.schroepl.net/projekte/mod_gzip/index.htm


Q3:
可以這麼說,問問題之前你可以自己先試過一次,這樣會有比較好的學習效果。

Q4:
沒有 --enable-module=suexec 這個安裝參數

b90220208
2005-05-15, 10:51 PM
Thanks a lot !!!

關於
Q4:沒有 --enable-module=suexec 這個安裝參數

我原來的疑問是:
(1). --enable-module=模組A
(2). --enable-模組B

從字面上來看此二參數設定,感覺好像差不多意思,為何有的模組是使用方式(1)有的模組則是使用方式(2)?.....此二參數的功能應該不太有關係吧?

---------------------------------------------------------------------

還有關於 :
--with-config-file-path=/path/to/apache
您提到預設路徑為 PREFIX/lib,意思是指若編譯安裝php時無作此參數設定,則會以PREFIX/lib為預設值是嗎?
若是,那麼若我改置於/path/to/apache或/path/to/php,
使用上與其預設的路徑又有什麼差別呢?

repsol
2005-05-16, 10:13 AM
Q1:
什麼時候有 --enable-模組B 這各安裝參數 ?? 你在那邊看到的?


Q2:
install php 的 prefix 是 /usr/local
--with-config-file-path 的 default 是 PREFIX/lib

--with-config-file-path=PATH
Sets the path in which to look for php.ini, defaults to PREFIX/lib


如果你想要放到其他的路徑,才需要指定這個安裝的參數,然後指定路徑把 php.ini 放到那邊去。
/path/to/apache 或是 /path/to/php 都可以,只是給你參考而已。


我不知道我之前這樣的回答,你哪邊看不懂??

b90220208
2005-05-16, 01:48 PM
sorry,我之前搞錯了!!...sorry!

我將php與apache的參數搞在一起了(我是初學者,最近[初次]一連看了許多php,mysql,apache的文件,所以才搞混了).
這個參數主要是出現在安裝編譯php時用的,舉例如下:
./configure --enable-mbstring --with-mysql

可否再請教在作php套件的 ./configure 時,enable與with各是何作用?

------------------------------------------------------------------------

至於apache的 --with-config-file-path=PATH,我只是想問將php.ini放置於不同之處有何差別,該不會只是個人習慣問題這麼單純吧?

-------------------------------------------------------------------

關於apache的安裝編譯參數: --enable-***
例如 --enable-suexec

由之前的討論我已知***非模組名,所以我想問的是***通常是什麼東東才會被設計成以如此的參數型式來加入或者說擴充apache的功能的?

為何不能以模組的形式來讓user選擇(--enable-module=模組名)?.....ps.我的問法可能很白痴還請見諒,我只是想大概知道一下概念而已.

b90220208
2005-05-18, 10:16 AM
上偏疑問已有小領悟了,
再請教:

1.
既然每個 distribution (RedHat, Fedora, Debian...) 等的 PHP config 檔可能都預設放在不同的位置,
若我安裝編譯php時沒有作 --with-config-file-path 的動作,程式是否會以預設值取代,若會,則該預設路徑會依不同 linux distribution 而不同嗎...還是統一路徑 : /usr/local/lib 呢?


2.
還有就是在安裝編譯 apache 時的參數選項: --enable-suexec ,您的意思是說這通常是偏功能面的,且非內建於套件堛漯F西的慣例,那麼以本立的 suexec 來說,其設計者為何不以 module 的方式來支援 apache ,讓user可如一般標準內建模組一樣,以 --enable-module 來啟用呢?
ps. 我寫的可能很白痴,其實我只是想問當研發人員要讓 apache 有特定功能時,如何決定要以 module 或者如 suexec 的方式來支援 apache 呢?


3.
在 apache 文件中的安裝 php 有提到:
首先 copy libphp3.a 到 ../apache_1.3.X/src/modules/php3/ 目錄下,然後執行如下:
----------------------------------------------------------------------------------
$ cd ../apache_1.3.X
$ ./configure --prefix=/path/to/apache --activate-module=src/modules/php3/libphp3.a
$ make
$ make install
----------------------------------------------------------------------------------
3-1.
文件說這是選擇性的,請教這一段主要是作什麼用的(功能)....會這樣問是因:
文件中說這是"選擇性"的,且不是只要執行:
$ cd /path/to/php-3.0 source
$ .configure --with-apache=/path/to/apache source 就已經將 php 以 apache 的 static module 安裝了嗎?

3-2.
libphp3.a ,請問.a通常是屬於何種用途的檔案?


4.
請教 --add-module 與 --activate-module 有何不同?
我看了文件中的說明,其二者皆提到是用來引入 third-party module ,
唯一的不同只有:
--add-module 會自動完成模組的 activated 與 enabled
--activate-module 則只是 enabled third-party module

哪一個會牽動到在 httpd.conf 中的 LoadModule 與 AddModule 的加入 ?


5.
httpd.conf 中的 LoadModule 與 AddModule 各為何意義?
何者為啟用與停用模組時需用到的?


6.
最後一個問題,由於我非資訊領域學生,請教 library 是什麼? (概念)

b90220208
2005-05-21, 11:24 AM
上偏疑問已有小領悟了,
但有些細節仍不太清楚:

Q1.
因為./configure有以下看來很像的參數選項,且其文件的解釋也不是很易懂,我列出如下:
------------------------------------------------------------------------------------------------------------------
(1). --add-module=FILE --> The added module(simple third-party) is automatically "activated" and "enabled" .
(2). --activate-module=FILE --> The module(complex third-party,例如:mod_php3,mod_perl) is automatically "enabled" .
(3). --enable-module=NAME --> to "enable" a already distributed module from the Apache src/Configuration.tmpl file.
------------------------------------------------------------------------------------------------------------------

第三項我較了解,就是將src/Configuration.tmpl裡頭"預設"被註解掉的模組給安裝編譯起來.

1-1.
但是,第一與第二項,我只知道是針對: 非官方認定的標準內建的模組,但他解釋的"activated","enabled"(我用紅色標註的)又有何差別啊?

1-2.
文件中皆有提到這句話: add an entry for an existing module object or library file into the configuration file on-the-fly.
意思是說會即時地在 src/configuration 檔案中加上對應模組的 AddModule 一行嗎?



Q2.
至於httpd.conf 中的 LoadModule 與 AddModule,依您的解釋,
是不是表示針對某特定模組時,在 httpd.conf 中可以有 AddModule 而無 LoadModule 反之則不行...對嗎?



Q3.
我已知:
只要有做 --enable-module 就會自動在 httpd.conf 中加上對應模組的 LoadModule 與 AddModule .
我想問的是:
若作了以下兩項,那麼在 httpd.conf 中相對應模組的 LoadModule 與 AddModule 也會被自動加上嗎?
--add-module
--activate-module

cpthk
2005-05-26, 01:46 AM
有人能解釋DSO是什麼意思嗎?
--enable-shared 和 --enable-module 差別在哪呢?

b90220208
2005-05-26, 01:00 PM
DSO [動態共享物件,Dynamic Shared Object]
--------------------------------------------------------------------------------------------------------------
Apache Web Server自1.3版起,開始支援新的DSO模組並提供Apache extension(APXS)的DSO建立工具。

DSO的模組與Apache核心兩者是完全獨立的,以PHP的支援為例,換句話說,PHP是在Apache編譯完成之後,如有需要才另外以模組的方式被動態載入,因此,PHP不需要嵌入Apache的核心當中。

另外,使用DSO所帶來的最大好處,便是提供模組維護與更新的極大便利性。在以往,如要更新PHP或其他Apache相關Module,都要連同Apache再從新編譯一次,過程費時又費力。如今,有了DSO的支援,一切都變的很美好,要更新PHP,只要將PHP重新Make ;Make Install即可,Apache並不需要重新編譯,如此可省去許多Apache方面的重新編譯步驟,如果使用在大型複雜的Apache伺服器中,更能體會其中所帶來的效率與方便。

所以使用DSO的模式來安裝 PHP,是因為這種安裝方式具有容易維護與升級的重要優點。比方說,假設你一開始安裝 PHP 的時候,只加入了PHP 的資料庫相關模組。幾天以後你決定再加裝 PHP 的編碼功能相關模組,這時候你只需要在你的系統命令列輸入 make clean 指令,然後輸入新的 PHP 設定選項,然後再輸入 make 與 make install 指令,接下來系統就會產生一個新的 PHP 動態共享物件,並且安裝到 Apache 伺服器所指定的適當目錄位置去了。接下來你要做的只是重新啟動 Apache 伺服器就行了,你不需要把 Apache 伺服器整個重新編譯過。反之,當日後重新編譯 Apache 時,亦不需要重新的編譯 PHP .

EX:

[首次安裝時:]
$ cd apache
$ .configure --perfix=/path/to/apache \
--enable-shared=max
$ make
$ make install

$ cd php
$ ./configure --with-apxs=/path/to/apache/bin/apxs
$ make
$ make install


[日後想要將PHP重新編譯以加入某些功能支援時:]
$ cd php
$ ./configure --with-apxs=/path/to/apache/bin/apxs \
--with-iconv --enable-mbstring --with-mysql
$ make
$ make install

最後再重新啟動apache!

--------------------------------------------------------------------------------------------------------------




--enable-shared 是讓模組能以DSO方式安裝編譯,但須該模組有支援,如PHP...
--enable-module 則是引許APACHE預設為不安裝的內建標準模組的安裝


以上是我所查到並整理過的資訊,若有誤還請前輩指正...
PS. 為什麼都沒人肯理我上一篇所問的問題啊...