編譯 apache 和 mod_jk 模塊實現與 Tomcat 協同

  1. 首先下載apache的源碼進行編譯:http://httpd.apache.org/docs/current/install.html

    • 下載apache源碼,configure時

      ./configure --prefix=/opt/apache2.4/
      

      但提示沒有APR,故根據提示下載APR和APR-util:http://apr.apache.org/download.cgi

      但下載的都是源碼包,需要編譯,不過比較簡單:

      //centos里面沒有buildtool需要添加:
      yum groupinstall "Development Tools" 
      yum install pcre-devel -y
      
       ./configure 
         make
         make install
      

      在編譯util的時候需要指定apr路徑:

      ./configure --with-apr=/usr/local/apr/
      

      至此編譯安裝apr相關的兩個軟件完成。

      下面來繼續編譯apache:

      ./configure --prefix=/opt/apache2.4    //注意前面apache2.4后不要帶/。。。
      //等配置完成
      make
      //等編譯完成
      make install
      //完成。
      

      至此,apache編譯安裝完成。

      為方便啟動,可用將bin設置到path中, 方法如下:

      # 在 ~/.bashrc 最后一行添加:
      export PATH="$PATH:your path1:your path2 …"http://這里添加的是apache的bin目錄
      # 然后
      source ~/.bashrc
      

      需要開機啟動的話:在/etc/rc.local里添加腳本的完整路徑,并且不要忘了修改權限:

      比如startupapache.sh腳本,添加到rc.local中,腳本內容如下:

      一定要記住修改新建的腳本本身的權限,卡這里好久

      /xxx/xxx/apachectl start       //此時環境變量還沒初始化,故需要使用絕對路徑!
      

      這個文件就是開啟啟動時執行的。

      不過編譯后的不支持php,需要安裝php支持模塊:

      安裝后在httpd.conf里面加入LoadModule,但是提示php支持模塊線程不安全,需要重新編譯,只有自己編譯php了。。。

      編譯之后再loadModule

      編譯php:

      先卸載掉之前的php所有東西:

      apt-get remove php*
      

      卸載完成后,準備編譯php:

      獲取php源碼:

      http://php.net/downloads.php
      

      下載下來的源碼包。

      接下來踩坑繼續:ls

      遇到沒有libxml2,好吧,安裝。。。提示安裝了最新版

      yum install libxml2-devel
      sudo apt-get install libxml2-dev
      

      然后是沒有xml2-config,好吧,繼續:說是在libxml2-dev包中,好吧,apt-get安裝。

      安裝好了沒問題了。開始編譯。

      //按官方的來:http://php.net/manual/en/install.unix.apache2.php
      //官方說先要編譯安裝apache,之前就做好了。
      cd ../php-NN
      ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql
      //但是貌似在最新的php7上面這個enable不識別,沒有清除干凈的話使用apt-get remove *php*來清除之前殘留,find / -name *php*只會出現源碼包
      make
      make install
      //尼瑪買個256MB的VPS編譯php都內存不夠,擦了!stop掉tomcat和apache重新開始編譯。。\
      但是編譯出來還是出錯,后面查php的bug庫發現由于內存少于512MB時都會出現這個bug,
      //之后是設置php.ini
      cp php.ini-development /usr/local/lib/php.ini
      //再之后是為apache添加php模塊:
      LoadModule php7_module modules/libphp7.so
      
      http://php.net/manual/en/install.unix.apache2.php
      

      安裝官方文檔所說的一步一步來即可編譯并配置好php。

      配置apache的php:

      坑:

      filesmatch是在Directory標簽內的子標簽。。。

      <FilesMatch \.php$>
          SetHandler application/x-httpd-php
      </FilesMatch>
      

      另外就是由于瀏覽器緩存,還以為配置沒成功,結果刷新就好了。

      編譯mod_jk

      http://tomcat.apache.org/connectors-doc/common_howto/quick.html
      

      坑:

      編譯mod_jk時:http://tomcat.apache.org/connectors-doc/

      1. mod_jk。https://tomcat.apache.org/connectors-doc/miscellaneous/faq.html
      2. ./configure --with-apxs=/usr/sbin/apxs http://it.toolbox.com/blogs/lim/compiling-tomcat-connector-mod_jk-on-redhat-6805
      3. make
      4. make install
      5. 現在mod_jk就在apache中了。

配置步驟:

https://www.mulesoft.com/tcat/tomcat-clustering

  • step1:完成mod_jk的編譯和安裝(已完成)

  • step2:在httpd.conf里面配置mod_jk模塊:

      # Load the mod_jk module.  
      LoadModule    jk_module  path/to/mod_jk.so
    
  • step3:配置其他Apache端的配置

    1. 配置worker文件目錄:

      JkWorkersFile /path/to/httpd/conf/workers.properties
      
    2. 配置worker們的共享內存路徑:

        JkShmFile /path/to/log/httpd/mod_jk.shm
      
    3. 配置日志文件:

       JkLogFile  /path/to/log/httpd/mod_jk.log
      
    4. 配置日志級別:

      JkLogLevel    level
      
    5. 配置日志的時間戳格式:

       JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
      
    6. 加載worker(即Tomcat實例,下一步就是配置它):

      JkMount  /examples/* worker1
      //這個配置的意思是:所有example應用的請求都交給對應的worker1
      

    匯總起來就是下面的內容:

      # Load mod_jk module
      # Update this path to match your modules location
      LoadModule    jk_module  modules/mod_jk.so
      # Declare the module for <IfModule directive> (remove this line for Apache 2.x)
      AddModule     mod_jk.c
      # Where to find workers.properties
      # Update this path to match your conf directory location (put workers.properties next to httpd.conf)
      JkWorkersFile /etc/httpd/conf/workers.properties
      # Where to put jk shared memory
      # Update this path to match your local state directory or logs directory
      JkShmFile     /var/log/httpd/mod_jk.shm
      # Where to put jk logs
      # Update this path to match your logs directory location (put mod_jk.log next to access_log)
      JkLogFile     /var/log/httpd/mod_jk.log
      # Set the jk log level [debug/error/info]
      JkLogLevel    info
      # Select the timestamp log format
      JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
      # Send everything for context /examples to worker named worker1 (ajp13)
      JkMount  /examples/* worker1
    

    ?

  • step4:配置workers.properties文件:

    這個文件中就是所有的和HTTPD服務器進行交流的Tomcat實例配置。

    下面來看看workers.properties文件的配置:

     #定義一個真實的worker,如果有多個,以逗號分隔。
      worker.list=worker1
      # Set properties for worker1 (ajp13)
      worker.worker1.type=ajp13
      worker.worker1.host=localhost
      worker.worker1.port=8009
    

    下面就來啟動一下apache和Tomcat試試效果。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,001評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,786評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,986評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,204評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,964評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,354評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,410評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,554評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,106評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,918評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,093評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,648評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,342評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,755評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,009評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,839評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,107評論 2 375

推薦閱讀更多精彩內容