投稿

6月, 2019の投稿を表示しています

Tomcatの設定6:例外エラー発生時の独自エラー画面の方法

Tomcatで運用する場合で、いくつか考慮した方が良い設定・情報を記載します。 GeneXusが予期しない例外エラーについてはJavaのエラーがそのまま表示されます。 ※予期しない例外とは、プログラムエラーやミドルウェアのエラーなどです。 GeneXusの画面やプロシージャでError_Handlerが設定してあれば、「DBからの例外エラー」はある程度対処することが出来ますが、プログラムミスによる例外エラーや、TomcatからのメモリオーバーフローなどはそのままJavaのエラー画面が出ることになります。 error_handler コマンド http://wiki.genexus.jp/hwiki.aspx?error_handler+コマンド, Javaのエラー画面をそのまま表示することはセキュリティ的にも避けたほうが良く、その対処は、TomcatのErrorPage設定で行います。 ※詳細のサーバー情報をユーザーに見せないように防止することが望ましい Tomcat\webapps\<アプリケーションディレクトリ>\WEB-INF\web.xml 記述場所は<web-app> ~ </web-app>の間 <error-page> <error-code>505</error-code> <location>/error_page.html</location> </error-page> <error-page> <exception-type>java.lang.Exception</exception-type> <location>/error_page.html</location> </error-page> この設定で、例外エラーが発生した場合にはerror_page.htmlに遷移します。 遷移先をGeneXusの画面にするのはやめておいた方が良いです。 DB接続でエラーになったのに、GeneXusの画面を実行したら、さらにDB接続でエラーになってしまいますので。

Tomcatの設定5:メモリ調整と起動モード

イメージ
Tomcatで運用する場合で、いくつか考慮した方が良い設定・情報を記載します。 Tomcatのデフォルトでは初期メモリが128MB、最大が256MBとなっています。 市販のパソコンでもメモリは4GBや8GBは有りますので、初期値は非常に小さいです。 Linuxの場合は、Tomcatの起動オプションで、設定してください。 WindowsのTomcatの場合は設定コンソールから設定します。 サーバーのスペックや構成に合わせて必ず調整した方が良いものは以下の内容になります。 1.メモリ(ヒープ領域) -Xms :Initial memory pool -Xmx :Maximum memory pool Tomcat起動時に初期メモリが確保され、不足したら拡張を繰り返す形となります。(最大値まで) 個人的にはどうせ拡張するのであれば、初期メモリの時点である程度確保しておいた方が良いと考えてます。 その方が拡張の際の処理動作コストも軽減されますので。 どの位の設定が良いのかは一概には言えず、 私の経験則からの例ですが、総メモリが8GBで、TomcatとPostgreSQLが同居したサーバーの場合であれば、初期2GB、最大3GB位の設定にしますね。 2.起動モード Tomcatには起動モードが2種類あり、「クライアントモード」と「サーバモード」があります。 <クライアントモード> 起動時間を短縮し、メモリサイズを縮小するように調整されている。 起動時に「-client」オプションを付けて実行する。 <サーバーモード> プログラム実行速度が最大になるように設計されている。 起動時に「-server」オプションを付けて実行する。 運用時にはサーバーモードで動作させるようにしましょう。 3.メモリ(Permanent領域) -XX:PermSize ・・・ Permanent 領域の初期値 こちらは運用中の影響ではなく、Tomcatが起動できるかどうかという設定です。 プログラムが大量にある場合、Tomcat起動時にロードしきれずにエラーになったり、 起動が遅かったりしますので、その際には拡張した方が良いです。 サーバーモードの初期値は64MBです。 システムの規模がそこそ

Tomcatの設定4:セキュリティ関連の調整

イメージ
Tomcatで運用する場合で、いくつか考慮した方が良い設定・情報を記載します。 セキュリティ関連は常々追加されていますので、これだけ実施すれば大丈夫。ということはありません。 定期的に脆弱性情報をチェックして、バージョンアップや設定追加を行っていくことを踏まえた 運用計画と運用体制を考えていくのが現実的な方法でしょう。 JVN iPedia https://jvndb.jvn.jp/ IPA(独立行政法人 情報処理推進機構) 重要なセキュリティ情報一覧 https://www.ipa.go.jp/security/announce/alert.html 1.不要なアプリケーションディレクトリの削除 TomcatをそのままインストールするとTomcat\webappsにdocsやexamplesなどが入ります。 運用には不要ですので削除しましょう。 managerはTomcatの管理コンソールです。 運用には便利ですが、使わないのであれば削除しましょう。 もし使う場合はIDとパスワードを変更することを忘れずに。 2.HTTPヘッダー情報から不要な情報を削除 HTTPレスポンスには色々な情報が載っており、こちらを対策することがセキュリティ確保に有益ということです。 セキュリティ診断などを行うと必ずチェックされる部分です。 ◆サーバーの製品情報、バージョン情報が含まれないようにする 何も対応をしていないと、HTTPレスポンスヘッダーに  Server: Apache-Coyote/1.1 というサーバー製品とバージョン情報が出てきます。 これを削除するにはTomcat\conf\server.xmlを修正します。 <Connector port="8080" protocol="HTTP/1.1"     server="hoge-hoge"     connectionTimeout="20000"     redirectPort="8443" /> こちらの対応を行うと、server=""に設定した内容が表示される形となります。

Tomcatの設定3:8080ポート以外で動作させる

Tomcatで運用する場合で、いくつか考慮した方が良い設定・情報を記載します。 Tomcatのデフォルトではポート8080で動作します。 URLがhttp://localhost:8080/xxxxx/servlet/xxxxxという形になりますね。 こちらをポート80(http)で動作するようにすると、 URLからポートの記述を省略することができます。 http://localhost:8080/xxxxx/servlet/xxxxx ↓↓↓ http://localhost/xxxxx/servlet/xxxxx http://localhost:80/xxxxx/servlet/xxxxx と同じ 同じように、SSLを使ってhttpsにする場合はTomcatのデフォルトは8443ですが、 443(https)ポートで動作するようにすると、こちらも省略できます。 https://localhost:8443/xxxxx/servlet/xxxxx ↓↓↓ https://localhost/xxxxx/servlet/xxxxx https://localhost:443/xxxxx/servlet/xxxxx と同じ <設定方法> ※Apacheと連携する場合はApacheが80ポートで動作しますので、 以下の設定方法は、”Tomcatのみ”で動作させる場合の設定方法となります。 Tomcat\conf\server.xmlを修正します。 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> ↓↓↓ <Connector port=" 80 " protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 以上です。 SSL(https)を設定済みの場合は8443と記載の個所を443に変