[Linux]TomcatとApacheを連携させる

20150510

1つのサーバで複数のWebアプリを動かしたくて、こっちはJava、こっちはWordPressで、となった時、Javaを動かすTomcatとWordPressを動かすApacheが必要になります。

APサーバとしては色々ありますが、私が今回使用したのがTomcatとApacheなのでそういうことで。その他、Tomcat上でPHPを動かすライブラリがあり、それを使用するとWordPressをTomcatに載せることが出来、Apacheが不要となりますが、今回は使用しません。

前提としては、TomcatでDBにMySQLを使用しているJavaアプリが既に動いている状態から、Apacheを導入し、そこでWordPressを動かすという作業のメモになります。

1.Apacheをインストールする

# yum -y install httpd
Complete!

2.httpd.conf修正(Apache設定ファイル)

# vi /etc/httpd/conf/httpd.conf
#
# Use name-based virtual hosting.
#
NameVirtualHost *:80  ←Apacheで動かすWordPress用のホストと、TomcatにAjp連携するホストでそれぞれバーチャルホストを定義する必要が有るのでコメント解除

# バーチャルホスト1追加。Apacheで動かす方
<VirtualHost *:80>
    ServerName     example.net
    ServerAdmin    webmaster@example.net
    DocumentRoot   "/var/www/html"
  ErrorLog /data/apachelog/error.log
  LogLevel warn
  CustomLog /data/apachelog/access-example.log combined
</VirtualHost>

# バーチャルホスト2追加。Tomcatで動かす方
<VirtualHost *:80>
  ServerAdmin webmaster@example2.net
  ServerName example2.net
  <IfModule mod_proxy_ajp.c>
    <Location />
      ProxyPass ajp://localhost:8009/
    </Location>
  </IfModule>
  CustomLog /data/apachelog/example2.net.log combined env=nolog
</VirtualHost>

# GZIP圧縮を有効にする定義追加
<Location />
    SetOutputFilter DEFLATE
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
    SetEnvIfNoCase Request_URI\.(?:gif|jpe?g|png)$ no-gzip dont-vary
    Header append Vary User-Agent env=!dont-vary
</Location>

3.server.xml修正(Tomcat設定ファイル)

# vi /data/tomcat/apache-tomcat-x.x.xx/conf/server.xml

# ポート8080のコネクタを削除(今後はApacheからAJPによりポート8009で飛んでくるようになるので不要)
    <!--
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               URIEncoding="UTF-8" useBodyEncodingForURI="true" compression="on"  />
    -->

# ポート8009のコネクタ設定変更。圧縮を有効に
<Connector port="8009" maxThreads="5120" minSpareThreads="50" maxSpareThreads="2560" URIEncoding="UTF-8" useBodyEncodingForURI="true" compression="on"
               connectionTimeout="20000" protocol="AJP/1.3" redirectPort="8443" />

4.iptablesの修正(ファイアウォール設定ファイル)

# vi /etc/sysconfig/iptables
#-A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080  ←既存の80ポートアクセスを8080へリダイレクトしTomcatへ渡している場合、設定削除する。
# service iptables restart

5.PHPインストール

# yum -y install php
拡張モジュールインストール
# yum -y install php-mbstring.x86_64 php-mysql.x86_64
# yum -y install php-gd.x86_64 php-xml.x86_64 php-xmlrpc.x86_64 php-soap.x86_64 php-pear.noarch php-pecl-apc.x86_64 php-pecl-memcache.x86_64

6.php.ini修正(PHP設定ファイル)

# vi /etc/php.ini
date.timezone = "Asia/Tokyo"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.substitute_character = none;
mbstring.func_overload = 0
mbstring.strict_detection = Off
mbstring.http_output_conv_mimetype=

7.WordPressインストール

公式サイトでダウンロードする

http://ja.wordpress.org/

ダウンロードしたファイルをLinuxサーバの先ほどhttpd.confにWordPress用として記述したバーチャルホストのドキュメントルートに配置し、展開する
今回設定しているドキュメントルートは      DocumentRoot   "/var/www/html"

# pwd
/var/www/html
# ll
合計 7180
-rw-rw-r-- 1 xxx xxx 7348325  5月 10 00:00 2015 wordpress-4.2.2-ja.zip

# unzip wordpress-4.2.2-ja.zip
すると、/var/www/html/wordpress 配下に展開されるので、それらを/var/www/html 配下に移動する

8.WordPress用DB作成

MySQLにログイン
# mysql -u xxx -pxxx
mysql > create database wordpress;  ←データベース名はお好みで
Query OK, 1 row affected (0.25 sec)
mysql > grant all privileges on wordpress.* to wordpress@localhost identified by 'password'; ←パスワードはお好みで
Query OK, 0 rows affected (0.18 sec)

9.WordPress初期設定から動作確認

先ほどhttpd.confの修正で、Apacheで動かす方のバーチャルホストに記述したドメイン名でブラウザからアクセスしてみる
今回設定しているドメイン名は  ServerName example.net 

アクセスして下記画面が表示されればOK
WS000002

次の画面で、データベース名、ユーザ名、パスワード、データベースのホスト名、テーブル接頭辞を設定する
WS000003

送信ボタン押下で下記画面が表示されればOK
WS000004

インストール実行ボタン押下から、サイトのタイトル、ユーザー名、パスワード、メールアドレス、プライバシーを設定
WS000005

インストール完了で下記画面
WS000006

ログインしてみると、デフォルトのテーマで初期投稿が行われているWordPressサイトが見られます。あとは好みのテーマに変更して、ちょこちょこ改造してみたり色々あれやこれややればOK!
WS000007

10.Tomcat側のJavaアプリの動作確認

先ほどのhttpd.confの修正でTomcat側のバーチャルホストとして設定したドメインにアクセスし、画面が表示されればOK

以上で、既存TomcatのみのAPから、ApacheとTomcat連携による複数APの設定が完了しました。

変更前は以下の流れ

[サーバにHTTPリクエスト]→[Tomcatが受け取りJavaアプリ表示]

変更後は以下の流れ

[サーバにHTTPリクエスト]→[Apacheが受け取る]→example1.net(今回Apache側バーチャルホストに設定)の場合→[ApacheにインストールしたWordPressアプリ表示]
└→example2.net(今回Tomcat側バーチャルホストに設定)の場合→[Tomcatにリクエストが渡され、既存Javaアプリ表示]

以上です


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>