プロフィール

けい

Author:けい
公開したWebサービス・アプリ一覧はこちら

※2014年12月、私が個人で開発したWebサービス・アプリへの
累計アクセス数は8億を超えました。
負荷対策頑張ります。日々精進していきます!!


■■■ 業務経歴 ■■■
社会人1年目:携帯電話開発。画面周りを1年間
2年目 :海外向け携帯電話ミドルウェア開発
     ブラウザとプロトコルスタック周り
2年目後半~:携帯電話の通信専用チップ開発
3年目:カーナビ。画面周りの開発
3年目後半~:BDビデオカメラ
     組み込みLinux カーネルと
     ドライバの開発。
4年目12月:プロジェクト途中で退社
~ここまではC、またはC++で開発~

~ここからJavaがメインの開発~
4年目1月:Web系の会社に転職
       ~4ヶ月間の研修
5年目5月:製造業向け生産管理システム開発
6年目9月:証券会社向けシステム開発
7年目10月~携帯電話向けコミックサイトの運用・開発
8年目12月:プロジェクト途中で退社

~ここからPHPがメインの開発~
8年目1月~仲介手数料が無料の不動産屋の社内SEに転職
交渉しほぼ完全に裁量労働が可能な立場になる。
業務内容はシステム全般ですが、
最近はSEO対策の作業が多いです。
現在14年目 まだ、しばらくはこの会社に居るつもりです。

あと、全ての記事がリンクフリーです。

最近の記事

過去ログ

全ての記事を表示する

全ての記事を表示する

カテゴリー

FC2カウンター

RSSフィード

debianでtomcatとapacheの連携

今回も自分用のメモです。
debianでtomcatとapacheを連携させて見ました。
別にTomcatだけでも良かったのですが、
何度やってもTomcatが80番ポートで動いてくれず、
だったらモアベターと呼ばれている連携でもやるかと言う感じです。
バージョンはapacheは2.2tomcatは5.5です。

以下のコマンドでproxy_ajpを有効にする。
# a2enmod proxy_ajp
Enabling proxy as a dependency
Module proxy installed; run /etc/init.d/apache2 force-reload to enable.
Module proxy_ajp installed; run /etc/init.d/apache2 force-reload to enable.

apacheからtomcatのマウント先のURLを指定する。
/etc/apache2/sites-avilable/defaultに以下を追加。

-------------------------ここから-------------------------
<Location />
ProxyPass ajp://localhost:8009/
allow from all
</Location>
-------------------------ここまで-------------------------

上記のように記載すると、http://ServerName としてアクセスした
アクセスは全てTomcatに渡される。
->これでは連携させる意味が無い。
速度を上げるためには静的データは
Apache側に持たせるべきなので、以下のように記載する。


-------------------------ここから-------------------------
<Location /do>
ProxyPass ajp://localhost:8009/
allow from all
</Location>
-------------------------ここまで-------------------------

こうしておくと、http://ServerName でのアクセスはapacheが行い、
http://ServerName/do/ 以下のアクセスのみ
Tomcatが管理することになる。


ここでapache2を再起動すると
httpd: apr_sockaddr_info_get() failed for bar.foo.com
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName


というエラーメッセージのようなものが出た。
これはホストの名前が決まっていないことが原因だ。
別に名前が無くても動作するらしいが、気持ち悪いので、httpd.confに
名前を追加する。
-------------------------ここから-------------------------
ServerName bar.foo.com
-------------------------ここまで-------------------------

ちなみにここで追加した名前は、
/etc/hosts, /etc/hostname
にも書いてある必要がある。


セキュリティ
動作的にはこれでOKなのだがセキュリティの対策を
施す必要がある。


Tomcat Managerが8180番で動いているのは
セキュリティ的に良くないので停止する。
すでに連携後は80番でアクセス可能なので、
8180番は不要なのだ。
/etc/tomcat5.5/server.xml から以下の行をコメントアウトする。

<!-- Define a non-SSL HTTP/1.1 Connector on port 8180 -->
<!-- Connector port="8180" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" -->




また、以下のtomcat managerがどこからでもアクセス可能に
なっているのは危険なので、以下のファイルを変更する。
/var/lib/tomcat5.5/conf/Catalina/localhost/manager.xml

<!--
Context configuration file for the Tomcat Manager Web App
-->

<Context path="/manager" docBase="/usr/share/tomcat5.5/server/webapps/manager"
debug="0" privileged="true">

<!-- Link to the user database we will get roles from -->
<ResourceLink name="users" global="UserDatabase"
type="org.apache.catalina.UserDatabase"/>

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1"/>
</Context>

これにより、TomcatがインストールされているPC以外からは
アクセスできなくなった。
さらに以下のファイルに記載されている
adminのパスワードをより強固なものにすれば完璧?かな。
他にもあったら教えてください。

/var/lib/tomcat5.5/conf/tomcat-users.xml


/* 2008年3月8日追記 */
デプロイの方法。Debianの場合、Security Managerが動いているとデプロイができない場合がある。
その場合には /etc/init.d/tomcat5.5 のファイルを以下のように編集する。
TOMCAT5_SECURITY=no

/* 2008年3月16日追記 */
リモートデバッグのやり方
開発しているうちに開発環境と、本番環境の間で生じる微妙な挙動の違いを追うのがおっくうになってしまった。
そんなときにリモートデバッグというものがあることを知った。
リモートデバッグを使用すれば、WindowsのEclipse上でLinux上で動いているサービスのデバッグが
比較的簡単に行えるらしい。
ということでやってみた。

とは言っても、Debianならば結構簡単で、/etc/init.d/tomcat5.5 を以下のように編集するだけである。
以下の行を追加
DEBUG_OPT="jpda start"

150行目付近にある以下の行を変更。
変更前
su -p -s /bin/sh $TOMCAT5_USER \
-c "\"$DAEMON\" start $STARTUP_OPTS" \
>> "$CATALINA_BASE/logs/catalina.out" 2>&1

変更後
su -p -s /bin/sh $TOMCAT5_USER \
-c "\"$DAEMON\" $DEBUG_OPT start $STARTUP_OPTS" \
>> "$CATALINA_BASE/logs/catalina.out" 2>&1

この変更により、(デフォルトである)8000番ポートでのリモードデバッグが有効になる。
さらにポート番号などの変更を加えたいのならば、/usr/share/tomcat5.5/bin/catalina.sh も編集する必要がある。


メモリ使用量の増やし方
デフォルトの設定ではメモリ使用量は最大128MBとなっているが、
リモートデバッグなんかをやっていると結構簡単にメモリが足りなくなってしまう。
その場合には同じく、/etc/init.d/tomcat5.5 のCATALINA_OPTSを変更すると良い。

変更前
CATALINA_OPTS="-Djava.awt.headless=true -Xmx128M"

変更後
CATALINA_OPTS="-Djava.awt.headless=true -Xms256m -Xmx256m"

以上。

※2009/09/15 追記
2009/09/15現在リモートデバッグを行う方法が変わっているようなのでメモ。
/etc/init.d/tomcat5.5 に以下の記載を追加。
# addition 2009/09/15 for debug
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
# addition end

これによりリモートデバッグが可能になった。

スポンサーサイト
コメント(0)   2007.06.30    [ Myカテゴリ:時事・駄文 ]

コメントの投稿













管理者にだけ表示を許可する

Template Designed By
ぐらいんだぁ