“安全”のために
Tomcatを理解し、構築し、動作させる
アメニクス
x-lab チーム
2007/10/11
Tomcatを自動的に起動するには?
■ 手動での起動は管理しづらいから
インストールしたままのTomcatには、起動用のスクリプトなどは用意されておらず、このままでは毎回手動で起動しなくてはなりません。毎回手動で起動するのは、担当者により気分でオプションが変わったり、コマンドを間違えたりする可能性も考えられ、管理も煩雑になります。
そこで、Tomcatを起動するための専用スクリプトを作成しましょう。
■ Apache Commons DaemonでTomcatをデーモン化
その前に、プロセスの管理を容易にするために、Apacheのトップレベルプロジェクトの1つのCommonsプロジェクトに含まれているDaemonコンポーネントを利用して、Tomcatをデーモン(自動プロセス)化します。
注意! |
Commons Daemonをビルドするためには、サーバコンポーネントのビルド環境が必要となります。autoconf、makeなどのビルド用ツール(コマンド)を実行できる環境をあらかじめご用意ください。 |
Commons-DaemonプロジェクトのファイルはインストールしたTomcatの配下にある「/bin」ディレクトリ内に「jsvc.tar.gz」として格納されています。
まず、このファイルを一時的に/tmpなどの一時ディレクトリへ移動します。
mv -f /opt/tomcat6/bin/jsvc.tar.gz /tmp/ |
ファイルを移動したら先ほどの一時ディレクトリへ移動してファイルを解凍します。
cd /tmp |
ファイルを解凍すると、「jsvc-src」というディレクトリが作成されます。その「jsvc-src」のディレクトリへ移動します。
cd jsvc-src |
ディレクトリを移動したらautoconfを利用してconfigureスクリプトを作成します。
autoconf |
configureスクリプトを作成したら、configureスクリプトを実行します。
sh configure |
configureが完了したら、ビルドに取り掛かります。
make |
ビルド後には「jsvc」というファイルが作成されます。作成されたjsvcの所有権をtomcatへと変更し、tomcatのインストールされているディレクトリ以下のbinディレクトリへと移動します。
chown tomcat. jsvc |
後は、ビルドに利用したディレクトリとファイルを削除して、ビルドは完了です。
rm -rf /tmp/jsvc-src/ /tmp/jsvc.tar.gz |
これで、Tomcatをデーモン化して動作させることができるようになりました。
■ 自動起動させるためのスクリプトを作成
それでは、今度は自動起動させるためのスクリプトを作成します。エディタを用いて「/etc/rc.d/init.d/」以下にjsvcという名前の起動スクリプトを作成します。
vi /etc/rc.d/init.d/jsvc |
スクリプトの中身は以下のとおりです。
#!/bin/sh |
注意! |
起動スクリプトはjsvc.tar.gzを解凍した後のjsvc-src/native/Tomcat5.shを参考にしています。 |
スクリプトの作成が終わったら、ファイルに実行権限を与えます。
chmod +x /etc/init.d/jsvc |
スクリプトに実行権限を与えたら、最後にchkconfigを実行して起動時のON/OFF設定を行って終了です。
chkconfig jsvc on |
以上で、Tomcatの自動実行の設定が完了しました。これで、サーバを再起動したときに自動的にTomcatが起動するようになります。
TomcatとApacheを連携させるmod_proxy_ajp
■ 8080番ポートと80番ポートの謎
Tomcatには、簡易Webサーバとしての機能も有しているため、デフォルトの状態では8080番ポートを利用して通常のHTMLページを含んださまざまなWebページの表示ができます。しかし、インターネットを利用していてもWebページ閲覧中に8080番ポートへと転送されるようなケースには巡り合うことはありません。
ということは、Tomcatを80番ポートに変更してサーバを運用しているのでしょうか? 恐らくほとんどどのケースはこれに当てはまりません。
TomcatのWebサーバ機能は簡易機能しか有しておらず、専用のWebサーバに比べると機能やパフォーマンスの面で劣ります。それでは、どのようにして80番ポートだけでWebサーバとTomcatの両方を利用しているのでしょうか?
■ TomcatとWebサーバを連携させて解決
Tomcatは、ほかのWebサーバと連携する機能が充実しているため、Webサーバと連携させて利用できるようになっています。この連携の仕組みを利用することでWebページの表示パフォーマンスの改善やさまざまな制御を行っているのです。
特に、WebサーバのApacheとは同じ団体が管理していることもあり親和性に優れています。バージョンによって異なるいくつかの連携の方法がありますが、今回は「CentOS 5.0」をOSとして利用しているため、最新のApache 2.2系列での連携方法を取り上げます。
いままでのApache 2.0系列やApache 1.3系列では、Tomcatとの連携にmod_jkと呼ばれるコネクタモジュールを必要としていました。Apache 2.2系列では、いままでのバージョンとは異なり、Apacheの基本コンポーネントとして連携用の機能を備えているため、モジュールを追加する必要がなくなりました。
編集部注:Apache 2.2について詳しく知りたい読者は、Linux Square の記事「Apache 2.2でWebサイトをパフォーマンスアップ!」Apache 2.0については、同じく「Apache 2.0の新機能とその実力」をご参照ください。
■ mod_proxy_ajpを利用するには?
通常、TomcatとApacheの通信は“AJPコネクタ”という機能を利用して実現しています。Apache 2.2系列では、mod_proxy_ajpと呼ばれるモジュールを利用することで簡単にTomcatとの連携を実現しています。
Apacheの設定ファイル(httpd.confなど)において以下の2つのモジュールを読み込ませることでこの機能を利用できるようになります。
LoadModule proxy_module modules/mod_proxy.so |
CentOS 5.0では、初期状態でこれらの設定ファイルは読み込まれるようになっているので、特に変更の必要はありません。
それでは、実際に「/tomcat」というディレクトリにアクセスする場合と通常のTomcatのトップページへアクセスする場合と同じ設定を行ってみましょう。
そのためには、エディタを用いてApacheの設定ファイル(httpd.confなど)へ以下の行を追加します。
ProxyPass /tomcat/ ajp://localhost:8009/ |
CentOS 5.0では、ajpの設定は専用のファイル「/etc/httpd/conf.d/proxy_ajp.conf」が存在しているので、このファイルにまとめて書くのが好ましいでしょう。
vi /etc/httpd/conf.d/proxy_ajp.conf |
注意! |
Tomcatが通常利用するポートは8080番ポートですが、AJPコネクタを利用した通信には8009番ポートを利用する点に注意してください。 |
この設定を行いApacheの再起動を行えば、以下のようなページへのアクセスが可能となります。
図3 Tomcatのサンプルページ |
以上で、ApacheとTomcatの連携設定は完了です。いよいよ次ページではセットアップした環境でサーブレット/JSPを表示させます。
1-2-3 |
INDEX | ||
第1回 “安全”のためにTomcatを理解し、構築し、動作させる | ||
Page1 いまさら聞けないTomcat CentOS 5.0に最新Tomcatをセットアップ |
||
Page2 Tomcatを自動的に起動するには? TomcatとApacheを連携させるmod_proxy_ajp |
||
Page3 「Hello World!」を表示してみよう Tomcat 6の新機能と運用に関する設定 |
Java Solution全記事一覧 |
- Webアプリにおけるサーバとクライアントの常識 (2008/9/1)
Webアプリの常識として、サーバとは何か? クライアントとは何か? そして、その関係性をあらためて教えましょう - Webの上のポジョをステートフルにつなぐJBoss Seam (2008/8/28)
アノテーションでDIやO/RマッピングのXML地獄から解放してくれたり、双方向DIやEJBの簡素化など利点がいっぱい - 例外とキー操作、ゲームの「判定」、コンテキストを知る (2008/8/21)
携帯電話のキー操作やゲームの「当たり判定」に加え、例外やコンテキストなどJava開発全般に通じる文法の基礎も解説 - 最新ExcelフォーマットをJavaで操作するための基礎 (2008/8/18)
Office Open XMLフォーマットのExcelデータをDOM操作用のJava標準APIで作成・参照・更新・削除してみよう
|
|
スポンサーからのお知らせ
- - PR -
お勧め求人情報
**先週の人気講座ランキング**
〜eラーニング編〜
◆ | New! それはスペックで、導入が目的ではない 導入の「先」を見据えた、ITIL運用とは? |
◆ | New! 見れば必ず気に入る“机の上”PCサーバ 小さくて静か。ユーザー目線で考えた自信作 |
◆ | New! あなたの会社の将来は本当に大丈夫? 屋台骨を支えるIT人材、育成できてますか? |
◆ | New! いま、SaaSエンジニアがおもしろい! 〜エンジニア・キャリア進化論(第10回)〜 |
◆ | New! このご時勢、数年後の計画は分からない 迷った時のミッドレンジストレージはコレ |
◆ | New! 複数のストレージを“1つ”にできる、 ストレージ管理の「魔法の箱」を徹底解剖 |
◆ | New! シンプル・簡単 iSCSI仮想化ストレージ ITインフラ全体の“正しい仮想化”実現! |
◆ | New! ソフトウェアで、できることとは? ビジネス直結「リカバリ・マネジメント」 |
◆ | New!
そのサーバに統合して安心ですか? 「現実的なサーバ統合」の3つの要件とは |
◆ | New! ――品質は上げてコストは半減―― ロボットが見せるPC管理の新しい形 |
◆ | New! WebLogicとCoherenceが融合した グリッド型アプリケーションサーバを実現 |
◆ | New! 「偽装」も「疑わしい動き」も逃さない 1つのエージェントで徹底的にPCを守る! |
◆ | New! もはや、プライベートのツールではない! 企業・自治体も導入するSNSの効果とは? |
◆ | New!
「リポート機能は“すごい”のひとこと」 ある保険会社の“DB監査製品”導入事例 |
◆ | New!
新しい技術の導入 ⇒ また最初からやり直し の必要がなくなる「普遍性のあるノウハウ」 |
◆ | New! ユーザー任せのパスワード管理は危険! 法整備対策に有効な高効果・低コスト製品 |
◆ | New! 『フリーでやってみたいけど……』 そんなエンジニアの不安をすべて解決! |
◆ | 「だれも見たことがない、10年後の 『ソフトウェア産業』を一緒に創りたい」 |
◆ | 「ウチはUTMなんかいらない」ってホント? エンタープライズ市場でも選ばれる理由 |
◆ | 物理も仮想も効率的に運用・管理したい! 問題と解決策はこちら≫≫ |
◆ | 【工事進行基準】対策をチャンスに! プロジェクト「見える化」で効率アップ! |
◆ | 【工事進行基準】システム業界も導入! 新時代のプロジェクト管理はこれで決まり |
◆ | 看護休暇、時短勤務、育児フレックス……。 各種の支援で「柔軟な働き方が可能な環境」 |
◆ | 『こうあるべし』ではなく、全ての人が 力をフルに発揮できる職場環境を考える |
◆ | 宅急便もサーバも、止めない・止まらない これが、クロネコヤマトのデータセンター |
◆ | 高評価の技術採用で“いいところ取り” 低価格なのに機能は“フル”な次世代UTM |
◆ | “超高速”なのに“低価格”なUTM その性能の高さの秘密とメリットに迫る! |
◆ | 金融業界でのBPM適用<成功ケース>紹介 BPMシステムの導入のための5つのポイント |
◆ | 間違いだらけのセキュリティ対策から脱却 「脅威の見えない化」対抗する2つの特徴 |
◆ | “Windows”も“Linux”も“Solaris”も SAP運用に最適な【x64サーバ】とは? |
◆ | Office製品ともシームレスに連携―― “マイクロソフトだからこそ”のERPとは |
◆ | 転職した理由は「社風が合うと感じたから」 入社2カ月“勝ち組エンジニア”に話を聞く |