Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
Tomcatのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Tomcat
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:ウェブサーバー]] [[de:Apache Tomcat]] [[en:Tomcat]] Tomcat は Apache ソフトウェア財団によって開発されているオープンソースの Java [[wikipedia:Java_Servlet#Servlet_containers|Servlet コンテナ]]です。 {{Note|Tomcat には現在2つの安定ブランチが存在します: [http://tomcat.apache.org/download-70.cgi 7], [https://tomcat.apache.org/download-80.cgi 8]。新しいバージョンしか動作しないということはなく、[http://tomcat.apache.org/whichversion.html#Apache_Tomcat_Versions 各ブランチはそれぞれ "Servlet" と "JSP" の Java 標準仕様を実装] しています。Arch Linux では全てのバージョンが公式にサポートされています: {{Pkg|tomcat7}}, {{Pkg|tomcat8}}。使用したいウェブアプリケーションの要件にあわせて必要なバージョンは変わります。Tomcat を試してみたいだけであまり時間を割きたくない場合、tomcat7 を試してみると良いでしょう。この wiki ページでは tomcat7 について記述していますが、大体の内容は tomcat6 や tomcat8 でも同じです。}} == インストール == {{Pkg|tomcat7}} または {{Pkg|tomcat8}} のどちらかをインストールしてください。 Tomcat を本番環境にデプロイするときは、{{Pkg|tomcat-native}} をインストールすることも考慮してください。Tomcat のネイティブライブラリは Apache Portable Runtime (APR) ライブラリのネットワーク接続 (ソケット) と RNG 実装を使用するようにサーバーを設定します。ネイティブの32・64ビットのコードを使うことでパフォーマンスが改善されるので、速度が重要な本番環境でしばしば使われています。デフォルトの Tomcat に設定を加える必要はありません。詳しくは [http://tomcat.apache.org/native-doc/ 公式の Tomcat ドキュメント] を参照。 tomcat-native を使用すると {{Ic|catalina.err}} の以下の警告が消えます: INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path [...] === ファイルシステム階層 === {| class="wikitable" ! パス名 !! 目的 |- |{{ic|/usr/share/tomcat7}} || スクリプトや他のディレクトリのリンクが存在する Tomcat のメインフォルダ。 |- |{{ic|/usr/share/java/tomcat7}} || Tomcat の Java ライブラリ (jar)。 |- |{{ic|/etc/tomcat7}} || 設定ファイル。例: {{ic|tomcat-users.xml}} (管理ツールを使用するユーザーやロールを定義), {{ic|server.xml}} (Tomcat のメイン設定ファイル), {{ic|catalina.policy}} (セキュリティポリシーの設定ファイル)。 |- |{{ic|/var/log/tomcat7}} || ログファイル。{{Ic|systemd}} からは処理されません ([[#ログ]]を参照)。 |- |{{ic|/var/lib/tomcat7/webapps}} || Tomcat がウェブアプリケーションをデプロイするフォルダ。 |- |{{ic|/var/tmp/tomcat7}} || Tomcat がウェブアプリのデータを保存するフォルダ。 |} == 初期設定 == マネージャウェブアプリや管理者ウェブアプリを使用するには次のファイルを編集する必要があります: {{ic|/etc/tomcat7/tomcat-users.xml}}。 XML 宣言の "role and user" をアンコメントして、必要に応じてロール {{Ic|tomcat}}, {{Ic|admin-{gui,script} }}, {{Ic|manager-{gui,script,jmx,status} }} を有効にしてください ([http://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html#Configuring_Manager_Application_Access Configuring Manager Application Access] を参照)。簡単に説明すると、{{Ic|tomcat}} は tomcat を実行するのに必須のロールで、{{Ic|manager-*}} はウェブアプリケーションを管理することができるロール、{{Ic|admin-*}} は Tomcat サーバーに関する全ての権限を持つ管理者です。 上記のロールとユーザー名、パスワードを定義すると以下のようになります ([CHANGE_ME] は適当なパスワードに置き換えてください): {{hc|/etc/tomcat7/tomcat-users.xml|2= <?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="tomcat"/> <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <role rolename="admin-gui"/> <role rolename="admin-script"/> <user username="tomcat" password="'''[CHANGE_ME]'''" roles="tomcat"/> <user username="manager" password="'''[CHANGE_ME]'''" roles="manager-gui,manager-script,manager-jmx,manager-status"/> <user username="admin" password="'''[CHANGE_ME]'''" roles="admin-gui"/> </tomcat-users> }} 上記のファイルに修正を加えたら、都度、Tomcat を再起動する必要があります。 ロールについては [http://blog.techstacks.com/2010/07/new-manager-roles-in-tomcat-7-are-wonderful.html このブロク記事] に詳しい説明があります。 IDE と統合するために設定ファイルの読み込み権限を設定するには、tomcat グループ (使用しているバージョンによって tomcat7 または tomcat8 となります) にユーザーを追加してください: # gpasswd -a <user> tomcat<number> == Tomcat の起動・停止 == {{ic|tomcat7}} (または {{ic|tomcat8}}) サービスを[[起動]]してください。 Tomcat を起動したら、次のページを開いて動作していることを確認します: [http://localhost:8080 http://localhost:8080]。素敵な Tomcat のローカルホームページが表示されたら、Servlet コンテナが問題なく立ち上がっています。起動スクリプトが上手く動作しなかった場合、ブラウザには Java のエラーだけが表示されます。[[Systemd#Journal|systemd の journalctl]] を使って起動ログを確認してください。Tomcat のログに書かれている問題の答えは全て Google にあります。 {{Note|セキュリティを確保するために、Arch Linux の Tomcat パッケージは Apache の [http://commons.apache.org/daemon/ common-daemons] の [http://commons.apache.org/daemon/jsvc.html jsvc] バイナリを使っています。Tomcat の {{Ic|systemd}} サービスは Apache のバイナリを root 権限で実行しますが、Tomcat は非特権ユーザーで起動されます (Arch Linux の場合 {{Ic|tomcat7:tomcat7}})。これによって、悪意のあるウェブアプリケーションによる攻撃コードの実行を防ぐことができます。また、必要な場合、1024番ポートが使われます。{{ic|/etc/conf.d/tomcat7}} に {{Ic|CATALINA_OPTS}} 環境変数で指定することができるオプションについては {{Ic|man jsvc}} を参照してください。}} === 手動で操作する方法 === 上流のスクリプトを使って Tomcat を直接制御することもできます: /usr/share/tomcat/bin/{startup.sh,shutdown.sh,..} アプリケーションや Tomcat をデバッグするときは上記のコマンドが役に立ちますが、一番最初に Tomcat を起動するときには systemd を使ってください。パーミッションが間違って設定されてウェブアプリが実行できなくなる可能性があります。また、上記のスクリプトを使用するには多少の設定が必要になります。上のノートに書かれている jsvc のセキュリティ機構が使えなくなることにも注意してください。 == ウェブアプリケーションのデプロイと管理 == Tomcat 7 には5つのウェブアプリケーションがバンドルされています (場合によっては localhost をサーバーの FQDN に変えてください): * デフォルトホームページ: [http://localhost:8080/ http://localhost:8080/] * Tomcat 7 のローカルドキュメント: [http://localhost:8080/docs/ http://localhost:8080/docs/] * Servlets と JSP のサンプル: [http://localhost:8080/examples/ http://localhost:8080/examples/] * バーチャルホストを管理するホストマネージャ: [http://localhost:8080/host-manager http://localhost:8080/host-manager/] * ウェブアプリケーションを管理するマネージャ: [http://localhost:8080/manager/html http://localhost:8080/manager/html/] === GUI を使用する === マネージャウェブアプリ [http://localhost:8080/manager/html http://localhost:8080/manager/html] を使用するのが一番簡単な方法です。{{ic|tomcat-users.xml}} で {{Ic|manager}} に定義したユーザー名・パスワードを使ってください。ログインしたら、既に5つのウェブアプリケーションがデプロイされていることが確認できます。"Deploy" エリアからアプリケーションを追加して "Applications" エリアでアプリケーションを停止・起動・削除します。 === CLI を使用する === WAR ファイルをアプリケーションディレクトリにコピーする方法もあります: {{ic|/usr/share/tomcat7/webapps}}。その場合、以下のように適切なホストで {{Ic|autoDeploy}} オプションが設定されていることを確認してください: {{hc|/etc/tomcat7/server.xml|2= ... <Host name="localhost" appBase="webapps" unpackWARs="true" '''autoDeploy="true"'''> ... }} === webapps フォルダ以外にあるファイルをホスト === {{ic|Context}} を作成することで、プロジェクトを webapps フォルダ以外に配置することができます。{{ic|/etc/tomcat<number>/Catalina/localhost/}} を開いてコンテキストを作成してください。コンテキストはシンプルな xml ファイルで、tomcat が参照するべきディレクトリを指定します。ファイルの基本的なフォーマットは以下のようになっています: {{hc|/etc/tomcat7/Catalina/localhost/whatShouldFollowLocalhost.xml|2= <Context path="/whatSholdFollwLocalhost" docBase="/where/your/project/is/" reloadable="true"/> }} 実際の例は以下です。ユーザーの {{ic|/home}} フォルダにプロジェクトを配置しています: {{hc|/etc/tomcat7/Catalina/localhost/myProject.xml|2= <Context path="/myProject" docBase="/home/archie/code/jsp/myProject" reloadable="true"/> }} 上記のように設定すると {{ic|/home/archie/code/jsp/myProject/}} にプロジェクトのファイルを置くことができ、ウェブブラウザでプロジェクトを確認したいときは[http://localhost:8080/myProject http://localhost:8080/myProject] を開きます。tomcat がファイルをロードできない場合、おそらくパーミッションに問題があります。{{ic|chmod o+x /home/archie/code/jsp/myProject}} を実行してください。 == ログ == 公式の Arch Linux パッケージの Tomcat は [[Systemd#Journal|systemd の journalctl]] で起動ログを記録します。{{ic|/var/log/tomcat7/catalina.err}} や {{ic|/var/log/tomcat7/catalina.out}} ファイルは使われません。{{ic|/etc/tomcat7/server.xml}} で {{Ic|Valve}} と定義されている、アクセスログやビジネスログなどのログはデフォルトのまま {{ic|/var/log/tomcat7/}} に記録されます。 上流のようにログを保存したい場合、systemd ファイル {{ic|/lib/systemd/system/tomcat7.service}} を {{ic|/etc/systemd/system/tomcat7.service}} にコピーして、ログファイルの絶対パスを指定する {{ic|SYSLOG}} を変更してください。 == Tips and tricks == 基本的な設定はバーチャルホストのウェブアプリケーションで行うことができます: http://localhost:8080/host-manager/html 。{{ic|tomcat-users.xml}} で設定したユーザー名とパスワードを使ってください。他のオプションについては {{ic|/etc/tomcat7}} の設定ファイル (特に {{ic|server.xml}}) で変更できます。詳しくは [http://tomcat.apache.org/tomcat-7.0-doc/index.html Tomcat 7 の公式ドキュメント] を参照。 === 前のバージョンの Tomcat からの移行 === 上に書いてあるように、Tomcat 8 によって Tomcat 7 が使えなくなることはありません。2つとも Servlet/JSP 標準の実装です。まず、あなたが使用したいアプリケーションがどのバージョンの Servlet/JSP を必要するのかによって Tomcat の [http://tomcat.apache.org/whichversion.html#Apache_Tomcat_Versions 使用するバージョン] を選択する必要があります。バージョンの移行が必要なときは、公式ウェブサイトに [http://tomcat.apache.org/migration.html 移行を行う手順] が書かれています。 === 別の JRE/JDK で Tomcat を使用する === 推奨されている JRE/JDK をインストールしない場合、Tomcat の {{Ic|systemd}} サービスファイルで {{ic|TOMCAT_JAVA_HOME}} 変数を設定してください。 [[Systemd#ユニットファイルの編集]]に書かれているように、カスタム設定で変数を上書きすることができます: # {{ic|/etc/systemd/system/tomcat7.service.d}} ディレクトリを作成 # 作成したディレクトリの中に以下の内容で {{ic|start.conf}} ファイルを保存 (Oracle の JDK パッケージ {{AUR|jdk}} を使用する場合、{{ic|/usr/lib/jvm/java-8-jdk}} としてください): [Service] Environment=TOMCAT_JAVA_HOME=/usr/lib/jvm/java-8-openjdk もしくは、サービスファイル {{ic|/usr/lib/systemd/system/tomcat7.service}} を {{ic|/etc/systemd/system/}} にコピーして次の行を: Environment=TOMCAT_JAVA_HOME=/usr/lib/jvm/java-7-openjdk 以下のように置き換えてください (例: Oracle JDK): Environment=TOMCAT_JAVA_HOME=/opt/java === セキュリティ設定 === このページはあくまで Tomcat の上でウェブアプリケーションを動かすために必要な最低限の設定について説明しています。Tomcat の管理に関する総合的なガイドではありません。必要な情報は Tomcat の公式サイトで収集できます。[http://oreilly.com/java/archive/tomcat-tips.html O'Reilly のページ] や [http://www.unidata.ucar.edu/projects/THREDDS/tech/reference/TomcatSecurity.html 大気研究大学連合のページ] も参照すると良いでしょう。セキュリティのヒント: * Tomcat 環境は常にセキュリティフィックスが適用された最新状態にしてください。 * 不必要な {{Ic|examples}}, {{Ic|docs}}, {{Ic|ROOT}} ({{Ic|manager}} ウェブアプリの "_") などのデフォルトアプリケーションは削除してください。セキュリティホールになってしまう可能性があります。{{Ic|manager}} を使ってください。 セキュリティを高めたい場合、host-manager と manager ウェブアプリケーションも削除します。ただし、後者はウェブアプリケーションのデプロイに役立ちます。 * WAR の自動デプロイオプションは無効化してください。{{ic|/usr/share/java/webapps}} ディレクトリに WAR ファイルをコピーする権限が盗まれても勝手に実行されなくなります。{{ic|server.xml}} を編集して {{Ic|autoDeploy}} を {{Ic|false}} に設定: {{hc|/etc/tomcat7/server.xml|2= ... <Host name="localhost" appBase="webapps" unpackWARs="true" '''autoDeploy="false"'''> ... }} * Tomcat のデフォルトエラーページを変更することで Tomcat のバージョンの漏洩を防げます。デフォルトで Tomcat がどのような表示をするのか確認するには、[http://localhost:8080/I_dont_exist http://localhost:8080/I_dont_exist] など適当なページを開いてみてください。ページの末尾に Tomcat のバージョンが記載されていることが確認できます。 変更するには、以下の JAR を編集してください ({{Ic|vim}} などのエディタは zip を直接編集できます): /usr/share/tomcat7/lib/catalina.jar そして以下のファイルを編集します: {{hc|org/apache/catalina/util/ServerInfo.properties|2= ... server.info= server.number= server.built= ... }} * {{ic|server.xml}} の使用していない {{Ic|connectors}} を無効化してください。 * Keep restricted access to {{ic|/etc/tomcat7/server.xml}}. Only {{Ic|tomcat}} user and/or {{Ic|root}} should be able to read and write this. * Keep {{Ic|jsvc}} usage. Do not use upstream startup scripts unless particular reason as explained in the security note above. * Use strong different passwords for each user in {{Ic|tomcat-users.xml}}, give roles to users who really need them and even disable usernames/roles you do not use/need. 以下のようにスクリプトを使うことで {{ic|tomcat-users.xml}} のパスワードを暗号化できます: /usr/share/tomcat7/bin/digest.sh -a SHA NEW_PASSWORD 以下のように出力されます: NEW_PASSWORD:b7bbb48a5b7749f1f908eb3c0c021200c72738ce ハッシュ化された部分を {{ic|tomcat-users.xml}} に貼り付けて平文のパスワードを置き換えてください。そして {{ic|server.xml}} に以下を追加: {{hc|/etc/tomcat7/server.xml|2= <Host ... <Realm ... '''className="org.apache.catalina.realm.MemoryRealm" digest="SHA"''' ... /> ... /> }} Note that this may not be relevant because only root and/or tomcat is supposed to have read/write access to that file. If an intruder manages to gain root access then he would not need such passwords to mess with your applications/data anyway. Be sure to keep restricted RW access to that file! * Always know what you are deploying
このページで使用されているテンプレート:
テンプレート:AUR
(
ソースを閲覧
)
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
Tomcat
に戻る。
検索
検索
Tomcatのソースを表示
話題を追加