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 には現在3つの安定ブランチが存在します: [http://tomcat.apache.org/download-60.cgi 6], [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|tomcat6}}, {{Pkg|tomcat7}}, {{Pkg|tomcat8}}。使用したいウェブアプリケーションの要件にあわせて必要なバージョンは変わります。Tomcat を試してみたいだけであまり時間を割きたくない場合、tomcat7 を試してみると良いでしょう。この wiki ページでは tomcat7 について記述していますが、大体の内容は tomcat6 や tomcat8 でも同じです。}} == インストール == {{Pkg|tomcat6}}, {{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 グループ (使用しているバージョンによって tomcat6, tomcat7, tomcat8 となります) にユーザーを追加してください: gpasswd -a <user> tomcat<number> == Tomcat の起動・停止 == 次のコマンドで Tomcat を起動できます: # systemctl start tomcat7 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 フォルダ以外にあるファイルをホスト === If you want to keep your project outside the webapps folder this is possible by creating a {{ic|Context}}. Go to {{ic|/etc/tomcat<number>/Catalina/localhost/}} and create your context. A context is a simple xml file which specifies where tomcat should look for the project. The basic format of the file is {{hc|/etc/tomcat7/Catalina/localhost/whatShouldFollowLocalhost.xml|2= <Context path="/whatSholdFollwLocalhost" docBase="/where/your/project/is/" reloadable="true"/> }} A working example is as follows. This assumes that the project is hosted somewhere in the users /home-folder. {{hc|/etc/tomcat7/Catalina/localhost/myProject.xml|2= <Context path="/myProject" docBase="/home/archie/code/jsp/myProject" reloadable="true"/> }} The files can now be hosted in {{ic|/home/archie/code/jsp/myProject/}}. To see the project in your webbrowser, go to [http://localhost:8080/myProject http://localhost:8080/myProject]. If tomcat is unable to load the files, it might be an issue with permissions. {{ic|chmod o+x /home/archie/code/jsp/myProject}} should fix the issue. == ログ == 公式の 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 == Basic configuration can be made through the virtual host manager web application: http://localhost:8080/host-manager/html. Provide the username/password you set in {{ic|tomcat-users.xml}}. Other options are tweaked in configuration files in {{ic|/etc/tomcat7}}, the most important being {{ic|server.xml}}. Using these files is out of the scope of this 101 wiki page. Please have a look at the [http://tomcat.apache.org/tomcat-7.0-doc/index.html official Tomcat 7 documentation] for more details. === 前のバージョンの Tomcat からの移行 === As said in the introduction, '''Tomcat 7 does not deprecate Tomcat 6'''. They are all three, implementations of Servlet/JSP standards. Hence you must first determine [http://tomcat.apache.org/whichversion.html#Apache_Tomcat_Versions which version] of Tomcat you need depending on the versions of Servlet/JSP your application uses. If you need to migrate, the official website gives [http://tomcat.apache.org/migration.html instructions on how to handle such a process]. === 別の 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 === セキュリティ設定 === This page gives the bare minimum to get your first web application to run on Tomcat. It is not intended to be the definitive guide to administering Tomcat (it is a job of its own). The official Tomcat website will provide all necessary official matter. One could also refer to [http://oreilly.com/java/archive/tomcat-tips.html this O'Reilly page] and this [http://www.unidata.ucar.edu/projects/THREDDS/tech/reference/TomcatSecurity.html last one]. Still, here are some security tips to get you started: * Keep your Tomcat installation up to date to get the latest fixes to security issues * Remove unwanted default applications such as {{Ic|examples}}, {{Ic|docs}}, default home page {{Ic|ROOT}} ("_" in the {{Ic|manager}} webapp). This prevents potential security holes to be exploited. Use the {{Ic|manager}} for that. For more security you could even remove the host-manager and manager web applications. Keep in mind that the later is useful to deploy web applications. * Disable the WAR auto-deploy option. This would prevent someone who gained restricted access to the server to copy a WAR into the {{ic|/usr/share/java/webapps}} directory to get it running. Edit {{ic|server.xml}} and set the {{Ic|autoDeploy}} to {{Ic|false}}: {{hc|/etc/tomcat7/server.xml|2= ... <Host name="localhost" appBase="webapps" unpackWARs="true" '''autoDeploy="false"'''> ... }} * Anonymize Tomcat's default error page to prevent potential attackers to retrieve Tomcat's version. To see what Tomcat says by default, just visit an nonexistent page such as [http://localhost:8080/I_dont_exist http://localhost:8080/I_dont_exist]. You get a 404 error page with Tomcat's version at the bottom. To anonymize this, edit/open the following JAR (Editors like {{Ic|vim}} can edit zips directly) /usr/share/tomcat7/lib/catalina.jar And edit the following file {{hc|org/apache/catalina/util/ServerInfo.properties|2= ... server.info= server.number= server.built= ... }} * Disable unused {{Ic|connectors}} in {{ic|server.xml}} * 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. One can even crypt {{ic|tomcat-users.xml}} passwords using the following upstream script: /usr/share/tomcat7/bin/digest.sh -a SHA NEW_PASSWORD This will output something like: NEW_PASSWORD:b7bbb48a5b7749f1f908eb3c0c021200c72738ce Paste the hashed part in place of the clear password in {{ic|tomcat-users.xml}} and add the following to {{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
(
ソースを閲覧
)
テンプレート:META Box
(
ソースを閲覧
)
テンプレート:META Box Blue
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
Tomcat
に戻る。
検索
検索
Tomcatのソースを表示
話題を追加