编译 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 …"//这里添加的是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阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容