月曜日, 6月 24, 2013

いまさら感いっぱいに tomcat6 x apache2.2 の連携

いまさら感いっぱいにtomcat6 x apache2.2の連携まとめます~←for me。
間違いなどあればご指摘くださいませ!


<概要>

[諸元]
OS : RHEL5.5 64bit
Httpd  : httpd-2.2.24.tar.gz
Tomcat : apache-tomcat-6.0.37.tar.gz
作業フォルダは、自分のhome/tmpで作業しています。

[tomcatについて]
/usr/local/apache-tomcat-6.0.37にインストールし、/usr/local/tomcatとシンボリックリンクを張り、管理を容易にする。

[httpについて]
/usr/local/httpd-2.2.24にインストールし、/usr/local/apache2とシンボリックリンクを張り、管理を容易にする。




<ファイルを配布するサーバーでの作業>

ssh ファイルを配布するサーバーにログイン!
cd ~/保存したいフォルダ
wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/tomcat/tomcat-6/v6.0.37/bin/apache-tomcat-6.0.37.tar.gz
wget http://ftp.riken.jp/net/apache/httpd/httpd-2.2.24.tar.gz
※もし明星大学様、理研様から削除された場合は、他のミラーサイト、またはバージョンが上がっている可能性があるので公式サイトを確認してみてください。l

md5sum apache-tomcat-6.0.37.tar.gz
md5sum httpd-2.2.24.tar.gz

※上記のmd5sumチェックだけど、それぞれ
apache-tomcat-6.0.37.tar.gz ⇒ f90b100cf51ae0a444bef5acd7b6edb2
httpd-2.2.24.tar.gz ⇒ 64a3392018ad60583209a16d728180d3
になればおk。
で、Webサーバーにコピーしまくります。
scp apache-tomcat-6.0.37.tar.gz username@webserver1:~/tmp
scp apache-tomcat-6.0.37.tar.gz username@webserver2:~/tmp
scp apache-tomcat-6.0.37.tar.gz username@webserver3:~/tmp
scp httpd-2.2.24.tar.gz username@webserver1:~/tmp
scp httpd-2.2.24.tar.gz username@webserver2:~/tmp
scp httpd-2.2.24.tar.gz username@webserver3:~/tmp


<tomcatの設定>
※基本的に解凍して、移動するだけ。

ssh username@webserver1
cd ~username/tmp
tar -xzf apache-tomcat-6.0.37.tar.gz
su -
cd ~username/tmp
mv apache-tomcat-6.0.37 /usr/local/
cd /usr/local/
mv ./apache-tomcat-6.0.37/conf/ ./apache-tomcat-6.0.37/conf.org/
mv ./apache-tomcat-6.0.37/webapps/ ./apache-tomcat-6.0.37/webapps.org/
cp -r ./tomcat/conf ./apache-tomcat-6.0.37/
cp -r ./tomcat/webapps ./apache-tomcat-6.0.37/
rm -fr ./apache-tomcat-6.0.37/webapps/examples/
rm -fr ./apache-tomcat-6.0.37/webapps/ROOT/
#chown -R 使用者:使用グループ ./apache-tomcat-6.0.37/

#古いシンボリックリンク(がもしあれば)削除します。
cd /usr/local/
rm tomcat

#シンボリックリンクを張ります。
ln -s apache-tomcat-6.0.37 tomcat

#initなどの起動スクリプトはまた後日。



<httpdの設定>

cd ~username/tmp
tar -xzf httpd-2.2.24.tar.gz
cd httpd-2.2.24

#configureします。proxy以外はデフォで入りますが、数か月経つと忘れるので明示しています。
#モジュールはほぼ静的に入れてますが、DSOも将来の拡張性のために有効にしました。
#なお --with-sslはsslのprefixを指定します(デフォルトは/usr)。別個に/usr/local/opensslに入れたとかならそこを指定するし、yum updateなりopensslをソースから/usrに入れたなら、/usrを指定してください、ね!
./configure \
--prefix=/usr/local/apache2 \
--with-mpm=prefork \
--enable-so \
--enable-rewrite \
--enable-vhost-alias \
--enable-ssl \
--with-ssl=/usr \
--enable-proxy \
--enable-proxy-ajp
make
su -
cd ~username/tmp/httpd-2.2.24
make install

#ajpを使うフォルダを指定し、tomcatとの連携を有効にします。
#http://webserver1/wahaha/で使う場合を想定しています。

vi /usr/local/apache2/conf/extra/httpd-proxy.conf
<Location /wahaha/>
    ProxyPass ajp://localhost:8009/wahaha/
</Location>


#http.confを変更または確認します。
※各種モジュールを静的に入れたため、LoadModuleは使いません。
vi /usr/local/apache2/conf/httpd.conf

以下追加
Include conf/extra/httpd-proxy.conf

tomcatの設定
#それぞれの環境に合わせて変更してください。下はデフォルトをコピペしています。
vi /usr/local/tomcat/conf/server.xml
    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009"
               maxThreads="10000"
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />



<apacheのコンパイルの注意点>

使用するモジュールは静的に組み込みつつ、DSOを有効にし将来の拡張に備えました。

※"--with-ssl=/usr/local/ssl \"は、SSLヘッダーが見つからないエラーを回避するために必須。
---
no SSL-C headers found
configure: error: ...No recognized SSL/TLS toolkit detected

---

※--enable-ssl=shared \はエラーが出るので、静的に組み込む。
---
/usr/bin/ld: /usr/local/ssl/lib/libcrypto.a(x86_64-gcc.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/ssl/lib/libcrypto.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[4]: *** [mod_ssl.la] エラー 1

---




<参考 コンパイル・モジュールの確認>

上記方法でコンパイルしたhttpdの状態やモジュールの詳細をログっときます。

コンパイル時の引数など状態確認(-V)
$ ./httpd -V
Server version: Apache/2.2.24 (Unix)
Server built:   Jun 26 2013 16:29:42
Server's Module Magic Number: xxxxxxxxxxx
Server loaded:  APR 1.4.6, APR-Util 1.4.1
Compiled using: APR 1.4.6, APR-Util 1.4.1
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/usr/local/httpd-2.2.24"
 -D SUEXEC_BIN="/usr/local/httpd-2.2.24/bin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

$

モジュールの確認(-M)
$ ./httpd -M
Loaded Modules:
 core_module (static)
 authn_file_module (static)
 authn_default_module (static)
 authz_host_module (static)
 authz_groupfile_module (static)
 authz_user_module (static)
 authz_default_module (static)
 auth_basic_module (static)
 include_module (static)
 filter_module (static)
 log_config_module (static)
 env_module (static)
 setenvif_module (static)
 version_module (static)
 proxy_module (static)
 proxy_connect_module (static)
 proxy_ftp_module (static)
 proxy_http_module (static)
 proxy_scgi_module (static)
 proxy_ajp_module (static)
 proxy_balancer_module (static)
 ssl_module (static)
 mpm_prefork_module (static)
 http_module (static)
 mime_module (static)
 status_module (static)
 autoindex_module (static)
 asis_module (static)
 cgi_module (static)
 vhost_alias_module (static)
 negotiation_module (static)
 dir_module (static)
 actions_module (static)
 userdir_module (static)
 alias_module (static)
 rewrite_module (static)
 so_module (static)
Syntax OK

$