今回も自分用のメモです。
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
これによりリモートデバッグが可能になった。
VistaでCSE使えましたよ
今回は自分用のメモ的意味合いが強いのですが、
VistaでCSE->MySQL5.0への接続ができました。
というより、今までCSEの起動時に以下のエラーメッセージが

でているせいで使えないものだと思っていたのですが、
普通に動かすことができました。
この辺は知っている人には当たり前なのですが、
私はWeb+DBは素人なので、一応手順を残しておきます。
MYSQLの設定手順
1.mysqlにログインする
$ mysql -u root
2.データベースを構築する
mysql> CREATE DATABASE databasename;
3.データベースユーザーの登録
mysql> GRANT ALL ON databasename.* TO lfll IDENTIFIED BY 'password';
4.FLUSH PRIVILEGES でユーザ情報を反映させる。
mysql> FLUSH PRIVILEGES;
データソース設定手順
1、CSEのダウンロード(1.59から更新されていないみたい・・・)
2、mySQLのHPからMySQL Connector/ODBC 5.1のダウンロード
2、mySQLのHPからMySQL Connector/ODBC 3.51のダウンロード
※私の環境では3.51の方が安定しています。
3、Windowsの設定->コンパネ->管理ツール->データソースを管理者として実行する

4.ユーザーDSNから追加をクリックし、ODBCドライバを選択する。

5.サーバー側で設定した内容を入力する

6.Testを押下してつながることを確認する。

データソースの設定はこれで終わり
次にCSEの設定を行う。
CSE設定手順。
1.CSEでデータベースから接続をクリックする。

2.先ほどデータソースで設定した内容を入力し、OKを押す。
終了。
ODBC接続以外はCSEで接続するのは
できなさそう。
libmysql.dll などをダウンロードしても
古いバージョンしか対応していないので
結局接続できなかったりします。
コメント(0)
2007.06.30
[
Myカテゴリ:SEO
]
VistaでCSE->MySQL5.0への接続ができました。
というより、今までCSEの起動時に以下のエラーメッセージが

でているせいで使えないものだと思っていたのですが、
普通に動かすことができました。
この辺は知っている人には当たり前なのですが、
私はWeb+DBは素人なので、一応手順を残しておきます。
MYSQLの設定手順
1.mysqlにログインする
$ mysql -u root
2.データベースを構築する
mysql> CREATE DATABASE databasename;
3.データベースユーザーの登録
mysql> GRANT ALL ON databasename.* TO lfll IDENTIFIED BY 'password';
4.FLUSH PRIVILEGES でユーザ情報を反映させる。
mysql> FLUSH PRIVILEGES;
データソース設定手順
1、CSEのダウンロード(1.59から更新されていないみたい・・・)
2、mySQLのHPからMySQL Connector/ODBC 3.51のダウンロード
※私の環境では3.51の方が安定しています。
3、Windowsの設定->コンパネ->管理ツール->データソースを管理者として実行する

4.ユーザーDSNから追加をクリックし、ODBCドライバを選択する。

5.サーバー側で設定した内容を入力する

6.Testを押下してつながることを確認する。

データソースの設定はこれで終わり
次にCSEの設定を行う。
CSE設定手順。
1.CSEでデータベースから接続をクリックする。

2.先ほどデータソースで設定した内容を入力し、OKを押す。
終了。
ODBC接続以外はCSEで接続するのは
できなさそう。
libmysql.dll などをダウンロードしても
古いバージョンしか対応していないので
結局接続できなかったりします。
Template Designed By
ぐらいんだぁ
ぐらいんだぁ