WINDOWS 平臺APACHE模塊開發環境搭建

WINDOWS 平臺APACHE模塊開發環境搭建

1.windows下安裝apache

下載地址:http://apache.dataguru.cn//httpd/binaries/win32/

 注意:一定要custom全部安裝,否則就不會有includelib

本文選擇安裝XAMPPXAMPPApache+MySQL+PHP+PERL)是一個功能強大的建站集成軟件包,該軟件的下載與安裝很簡單,在安裝過程中,會選擇下載的工具包,Apache爲必選項,其餘根據開發環境爲可選項,當然全部下載也沒問題。使用該集成包的好處在於不用配置php環境,推薦新手安裝。

2.安裝apxs

下載地址:http://www.apachelounge.com/download/apxs_win32.zip

下載後,解壓到任意盤下均可(最好放在根目錄下,方便添加環境變量);

 

打開命令提示符,定位到apxs的安裝目錄下例如:D:\xampp\apxs執行命令

perl Configure.pl --with-apache2=\Path\to\Apache2 --with-apache-prog=httpd.exe

其中\Path\to\Apache2需要替換爲Apache的實際安裝路徑,示例輸下圖一所示,示例輸出如下圖二所示:

 

圖一

 

圖二

上圖提示‘perl’不是內部或外部命令,因爲我們將要使用的apxs包要用到perl解析編譯,所以,我們還需要安裝perl。

安裝完apxs工具後,需要手動將apxs加入到系統環境變量中,添加完之後將目錄切換到Apache安裝目錄下的bin文件夾,在命令窗口輸入apxs命令,若出現如下圖三的幫助信息,則表明apxs的環境配置完成:(若提示“apxs不是內部或外部命令,也不是可運行的程序”,可檢查環境變量是否添加成功)


圖三

3.安裝Perl

下載地址:http://www.activestate.com/activeperl/

Perl的安裝比較簡單,直接安裝就行,只是在完成的最後一步需要注意勾選將Perl添加到環境變量的選項,如下圖四所示:

 

圖四

 

安裝完成後,再次執行上述命令:

perl Configure.pl --with-apache2=\Path\to\Apache2 --with-apache-prog=httpd.exe

若成功生成圖五中框選的三個.bat文件,則表明安裝成功


圖五

4.使用apxs

    搭建完以上環境之後,就可以在apache中生成自己的模塊了,apxs編譯時還需用到C/C++編譯器,一般有兩種選擇,一種是使用VC(Visual Studio)自帶的編譯器,還有一種就是自行安裝,比如minGW等。

對使用VS編譯的,可嘗試修改apache下的build目錄中config_vars.mk配置文件,操作如下:(本人在修改該配置文件的時候,發現CCLD均爲空,可能與VS的版本有關,這時只需要在其後添加cl.exe和 link.exe,然後去掉gcc-E即可)

 

注意:若未修改此項,則編譯會報:’/nologo’不是內部或外部命令。

1)運行Visual Studio 2012 命令提示(打開方式請看本文最後一張貼圖)

2)運行apxs -g -n helloworld(helloworld爲模塊名),會生成一個叫helloworld的目錄和模板代碼

3)進入helloworld目錄,編輯mod_helloworld.c(這就是我們要開發的模塊代碼)

4)運行apxs -c -i -a mod_helloworld.c libapr-1.lib libaprutil-1.lib libapriconv-1.lib libhttpd.lib,生成mod_helloworld.so,這時我們可以到APACHE下的模塊路徑(\Apache\modules)中查看自己添加的模塊,若沒找到剛添加的mod_helloworld.so文件,則將該模塊拷貝到\…\modules目錄下。

5)修改Apache的配置文件,路徑:Apache\conf\httpd.conf,在末尾加上如下內容:(這一步非常關鍵,沒有修改配置文件,會使添加的模塊不起作用,通常apache會自動生成下面的第一行語句,這時只需添加下面的三行語句即可,若沒有自動生成,則要注意LoadModule後面需要添加mod_helloworld.so的絕對路徑

 

當然,如果我們安裝的是XAMPP時,可以直接在XAMPP的操作界面中,點擊”Config”按鈕,然後選擇”Apachehttpd.conf”,就可以修改apache的配置文件。

6)啓動apache服務器,在瀏覽器的地址欄輸入localhost:端口號/helloworld,就可以看到我們返回的內容了。其中的端口號爲配置apache的端口號,默認爲80,若使用80端口無法啓動apache服務器,則表面80端口被佔用,這時需要修改apache的端口號,可在apache\conf\httpd.conf中修改。將配置文檔中的所有80端口都改爲一個未佔用的端口即可。

 

注意1:若在執行上述步驟四時出現如圖六錯誤,則表面沒有使用VS本機工具命令提示,windows操作系統上的cmd窗口是不識別cl.exe命令的。


圖六

注意2:在進行apache開發時,apache內部是不支持printf打印消息的,若想打印消息日誌,需要自定義宏進行消息打印。

注意3: 當apache開啓的時候,彈出應用程序終止對話框,此時可查看httpd.conf中加載的模塊。若so文件中沒有此加載模塊,而配置文件中包含該加載模塊,則會導致apache開啓失敗。

注意4apache加載的自定義模塊都是互相干擾的。

在我們添加helloworld模塊的時候,會在httpd.conf中添加這樣一行命令<Location /helloworld>,其實我們添加的自定義模塊就是通過”/helloworld”來確定是否被訪問的,即我們要訪問mod_helloworld.so模塊時,只需在瀏覽器中輸入localhost:端口號/helloworld/就行,helloworld後面可以輸入任何你需要請求的URL;但是當我們添加了另外一個模塊,並設置<Location /helloworld/test>時,這時如果輸入localhost:端口號/helloworld/testapache就會調用我們的第二個模塊,而並非第一個。

注意5:每一次修改完apache的配置文件或者重新編譯生成.so文件後,都必須重啓apache服務器纔會生效。

注意6:使用apxs編譯多個.c文件時,必須將生成so文件對應的.c文件放在最前面,其他的.c文件放置無先後順序。例如:要生成一個helloworld.so的模塊,若apache中定義的鉤子,容器等函數在helloworld.c文件中,則helloworld.c文件必須放在第一位。


圖七

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章