[CentOS] ApacheとTomcatの連携


Devlopment note / Linux    作成日付 : 2019/10/29 07:28:33   修正日付 : 2019/10/29 07:37:07

こんにちは。明月です。


前述でCentOSでapacheとtomcatをインストールしました。

先にtomcatの場合は独立でウェブサーバで運用できますが、なぜ別で「apache」をインストールして「tomcat」を連携するのかは「tomcat」は確かにウェブサーバの機能がありますが、「apache」よりロードバランシングや仮想機能が落ちています。

最近、バージョンが「9.x」まで上がって性能が以前よりは良くなりましたが、それでも分ける方がよいですね。

筆者の場合はサーバで「java」だけではなく、jsp、phpなど混在してプログラミングするタイプなので、「apache」の「virtual host」機能をよく使うので、「tomcat」のサーバの一つだけではなく、様々な「tomcat」かつ一つの「apache」を紐付いて使っています。


それで、「apache」と「tomcat」を連携しましょう。

先、「tomcat」にはhttpポートを設定してブラウザと通信するHTTPプロトコル領域があります。または、「ajp」プロトコルという「apache」と通信するポートがあります。

「apache」と「tomcat」を連携するようにはこの「ajp」プロトコルを利用しましょう。


「apache」側で「ajp」プロトコルを使うようには「mod_jk」がインストールされなければならないです。

mok_jk - https://tomcat.apache.org/download-connectors.cgi

wget http://ftp.tsukuba.wide.ad.jp/software/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.46-src.tar.gz
yum install gcc gcc-c++ httpd-devel #依存性ライブラリ
tar zxvf tomcat-connectors-1.2.46-src.tar.gz

圧縮を解凍したらこれからコンパイルをしなべきです。「native」フォルダにいきましょう。

cd tomcat-connectors-1.2.46-src
cd native/
./configure --with-apxs=/usr/bin/apxs

make
make install

「/etc/httpd/modules」フォルダで「mod_jk.so」ファイルがあれば、コンパイル成功です。

そして「httpd.conf」に行って下記とおりに設定しましょう。

<IfModule mod_jk.c>
  JkWorkersFile conf/workers.properties
  JkShmFile run/mod_jk.shm
  JkLogFile logs/mod_jk.log
  JkLogLevel info
  JkLogStampFormat "[%y %m %d %H:%M:%S] "
</IfModule>

その後、「workers.properties」を作成しましょう。筆者の場合は「jenkins」とウェブサーバがあるので2つで設定しました。

worker.list=devhousehold,devtistoryblog,jenkins
 
worker.devhousehold.port=18010
worker.devhousehold.host=dev.household.nowonbun.com
worker.devhousehold.type=ajp13
worker.devhousehold.lbfactor=1
 
worker.devtistoryblog.port=18010
worker.devtistoryblog.host=dev.tistoryblog.nowonbun.com
worker.devtistoryblog.type=ajp13
worker.devtistoryblog.lbfactor=1
 
worker.jenkins.port=18009
worker.jenkins.host=jenkins.nowonbun.com
worker.jenkins.type=ajp13
worker.jenkins.lbfactor=1

また「httpd.conf」を下記とおりに追加しましょう。

<VirtualHost *:80>
  DocumentRoot "/var/www/html"
</VirtualHost>
<VirtualHost *:80>
  DocumentRoot "/home/program/httpd"
  ServerName dev.nowonbun.com
  <Directory "/home/program/httpd">
    AllowOverride none
    Require all granted
  </Directory>
</VirtualHost>
<VirtualHost *:80>
  JkMount /* jenkins
  ServerName jenkins.nowonbun.com
</VirtualHost>
<VirtualHost *:80>
  JkMount /* devhousehold
  ServerName dev.household.nowonbun.com
</VirtualHost>
<VirtualHost *:80>
  JkMount /* devtistoryblog
  ServerName dev.tistoryblog.nowonbun.com
</VirtualHost>

そしてそれぞれのディレクトリに「apache」権限を与えます。

chown -R apache:apache /home/program/httpd

最新投稿