程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> Apache模塊開發實例

Apache模塊開發實例

編輯:PHP基礎知識
 

Apache模塊開發入門還是非常簡單的,只需簡單的幾步驟就可以DIY出自己的helloworld,本文測試系統為Ubuntu 12.04,在該系統下只需安裝好apache和apache2-threaded-dev這兩個包就可以了。然後直接使用apxs2編譯和安裝模塊。

一、安裝apache及其開發包

1、安裝apache過程請參考:

Ubuntu VPS安裝Apache+PHP+MySQL指南

2、安裝apache2-threaded-dev

sudo apt-get install apache2-threaded-dev

默認安裝路徑為:/usr/bin/apxs2。

二、打造helloworld模塊

1、程序源代碼如下

拷貝另存為mod_helloworld.c。

    #include "httpd.h"  
    #include "http_config.h"  
    #include "http_protocol.h"  
    #include "ap_config.h"  
     
    /* The sample content handler */ 
    static int helloworld_handler(request_rec *r)  
    {  
        if (strcmp(r->handler, "helloworld")) {  
            return DECLINED;  
        }  
        r->content_type = "text/html";        
     
        if (!r->header_only)  
            ap_rputs("The sample page from mod_helloworld.c\n", r);  
        return OK;  
    }  
     
    static void helloworld_hooks(apr_pool_t *p)  
    {  
        ap_hook_handler(helloworld_handler, NULL, NULL, APR_HOOK_MIDDLE);  
    }
   
    /* Dispatch list for API hooks */ 
    module AP_MODULE_DECLARE_DATA helloworld_module = {  
        STANDARD20_MODULE_STUFF, //用於編譯後的模塊產生版本信息  
        NULL,                  /* 創建目錄配置結構*/ 
        NULL,                  /* 合並目錄配置結構 */ 
        NULL,                  /* 創建主機配置結構 */ 
        NULL,                  /* 合並主機配置結構 */ 
        NULL,                  /* 為模塊配置相關指令       */ 
        helloworld_hooks  /* 注冊模塊的鉤子函數                      */ 
    };   

其中,request_rec是個復雜結構體,其表示一個http請求,從這個結構體中可以獲得浏覽器連接的各種信息。

參考:

/*request_rec 下變量
char *hostname;//域名 localhost
char *args;    //域名參數(?號以後的內容)a=123
char *filename;//文件路徑 /var/www/test
const char *content_encoding;
...       
*/

2、編譯和安裝

編譯:

apxs2 -c mod_helloworld.c

安裝:

apxs2 -i mod_helloworld.la

或,一句話命令:

  • apxs2 -iac mod_helloworld.c

執行完成後,helloworld模塊被安裝到:/usr/lib/apache2/modules,這裡可能會報告權限錯誤,請確保有管理員權限方可執行安裝模塊動作。

3、創建conf配置文件

在/etc/apache2/mods-available下面創建helloworld.conf文件(頁可能是在/etc/apache2/apache2.conf,根據實際選擇),內容如下:

    LoadModule helloworld_module /usr/lib/apache2/modules/mod_helloworld.so
    <Location /helloworld>
            SetHandler helloworld
    </Location>

然後,為helloworld.conf創建一個快捷方式並放到/etc/apache2/mods-enabled下面:

ln -s /etc/apache2/mods-available/helloworld.load /etc/apache2/mods-enabled/helloworld.load

所以,模塊目錄在:/usr/lib/apache2/modules

當前生效模塊目錄在:/etc/apache2/mods-available

4、重啟apache

service apache2 restart

重啟apache後,在浏覽器中輸入”localhost/hellworld”,浏覽器顯示:

The sample page from mod_helloworld.c  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved