「Tomcat」の版間の差分
(ページの作成:「Category:ウェブサーバー de:Apache Tomcat en:Tomcat Tomcat は Apache ソフトウェア財団によって開発されているオープンソースの...」) |
|||
98行目: | 98行目: | ||
=== webapps フォルダ以外にあるファイルをホスト === |
=== webapps フォルダ以外にあるファイルをホスト === |
||
+ | {{ic|Context}} を作成することで、プロジェクトを webapps フォルダ以外に配置することができます。{{ic|/etc/tomcat<number>/Catalina/localhost/}} を開いてコンテキストを作成してください。コンテキストはシンプルな xml ファイルで、tomcat が参照するべきディレクトリを指定します。ファイルの基本的なフォーマットは以下のようになっています: |
||
− | 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= |
{{hc|/etc/tomcat7/Catalina/localhost/whatShouldFollowLocalhost.xml|2= |
||
<Context path="/whatSholdFollwLocalhost" docBase="/where/your/project/is/" reloadable="true"/> |
<Context path="/whatSholdFollwLocalhost" docBase="/where/your/project/is/" reloadable="true"/> |
||
}} |
}} |
||
+ | 実際の例は以下です。ユーザーの {{ic|/home}} フォルダにプロジェクトを配置しています: |
||
− | 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= |
{{hc|/etc/tomcat7/Catalina/localhost/myProject.xml|2= |
||
<Context path="/myProject" docBase="/home/archie/code/jsp/myProject" reloadable="true"/> |
<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}} を実行してください。 |
||
− | 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. |
||
== ログ == |
== ログ == |
||
117行目: | 115行目: | ||
== Tips and tricks == |
== 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 からの移行 === |
||
− | + | 上に書いてあるように、Tomcat 7 によって Tomcat 6 が使えなくなることはありません。3つとも 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 を使用する === |
2016年6月17日 (金) 22:38時点における版
Tomcat は Apache ソフトウェア財団によって開発されているオープンソースの Java Servlet コンテナです。
目次
インストール
tomcat6, tomcat7, tomcat8 のどれかをインストールしてください。
Tomcat を本番環境にデプロイするときは、tomcat-native をインストールすることも考慮してください。Tomcat のネイティブライブラリは Apache Portable Runtime (APR) ライブラリのネットワーク接続 (ソケット) と RNG 実装を使用するようにサーバーを設定します。ネイティブの32・64ビットのコードを使うことでパフォーマンスが改善されるので、速度が重要な本番環境でしばしば使われています。デフォルトの Tomcat に設定を加える必要はありません。詳しくは 公式の Tomcat ドキュメント を参照。
tomcat-native を使用すると 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 [...]
ファイルシステム階層
パス名 | 目的 |
---|---|
/usr/share/tomcat7 |
スクリプトや他のディレクトリのリンクが存在する Tomcat のメインフォルダ。 |
/usr/share/java/tomcat7 |
Tomcat の Java ライブラリ (jar)。 |
/etc/tomcat7 |
設定ファイル。例: tomcat-users.xml (管理ツールを使用するユーザーやロールを定義), server.xml (Tomcat のメイン設定ファイル), catalina.policy (セキュリティポリシーの設定ファイル)。
|
/var/log/tomcat7 |
ログファイル。systemd からは処理されません (#ログを参照)。
|
/var/lib/tomcat7/webapps |
Tomcat がウェブアプリケーションをデプロイするフォルダ。 |
/var/tmp/tomcat7 |
Tomcat がウェブアプリのデータを保存するフォルダ。 |
初期設定
マネージャウェブアプリや管理者ウェブアプリを使用するには次のファイルを編集する必要があります: /etc/tomcat7/tomcat-users.xml
。
XML 宣言の "role and user" をアンコメントして、必要に応じてロール tomcat
, {{Ic|admin-{gui,script} }}, {{Ic|manager-{gui,script,jmx,status} }} を有効にしてください (Configuring Manager Application Access を参照)。簡単に説明すると、tomcat
は tomcat を実行するのに必須のロールで、manager-*
はウェブアプリケーションを管理することができるロール、admin-*
は Tomcat サーバーに関する全ての権限を持つ管理者です。
上記のロールとユーザー名、パスワードを定義すると以下のようになります ([CHANGE_ME] は適当なパスワードに置き換えてください):
/etc/tomcat7/tomcat-users.xml
<?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 を再起動する必要があります。
ロールについては このブロク記事 に詳しい説明があります。
IDE と統合するために設定ファイルの読み込み権限を設定するには、tomcat グループ (使用しているバージョンによって tomcat6, tomcat7, tomcat8 となります) にユーザーを追加してください:
gpasswd -a <user> tomcat<number>
Tomcat の起動・停止
次のコマンドで Tomcat を起動できます:
# systemctl start tomcat7
Tomcat を起動したら、次のページを開いて動作していることを確認します: http://localhost:8080。素敵な Tomcat のローカルホームページが表示されたら、Servlet コンテナが問題なく立ち上がっています。起動スクリプトが上手く動作しなかった場合、ブラウザには Java のエラーだけが表示されます。systemd の journalctl を使って起動ログを確認してください。Tomcat のログに書かれている問題の答えは全て Google にあります。
手動で操作する方法
上流のスクリプトを使って Tomcat を直接制御することもできます:
/usr/share/tomcat/bin/{startup.sh,shutdown.sh,..}
アプリケーションや Tomcat をデバッグするときは上記のコマンドが役に立ちますが、一番最初に Tomcat を起動するときには systemd を使ってください。パーミッションが間違って設定されてウェブアプリが実行できなくなる可能性があります。また、上記のスクリプトを使用するには多少の設定が必要になります。上のノートに書かれている jsvc のセキュリティ機構が使えなくなることにも注意してください。
ウェブアプリケーションのデプロイと管理
Tomcat 7 には5つのウェブアプリケーションがバンドルされています (場合によっては localhost をサーバーの FQDN に変えてください):
- デフォルトホームページ: http://localhost:8080/
- Tomcat 7 のローカルドキュメント: http://localhost:8080/docs/
- Servlets と JSP のサンプル: http://localhost:8080/examples/
- バーチャルホストを管理するホストマネージャ: http://localhost:8080/host-manager/
- ウェブアプリケーションを管理するマネージャ: http://localhost:8080/manager/html/
GUI を使用する
マネージャウェブアプリ http://localhost:8080/manager/html を使用するのが一番簡単な方法です。tomcat-users.xml
で manager
に定義したユーザー名・パスワードを使ってください。ログインしたら、既に5つのウェブアプリケーションがデプロイされていることが確認できます。"Deploy" エリアからアプリケーションを追加して "Applications" エリアでアプリケーションを停止・起動・削除します。
CLI を使用する
WAR ファイルをアプリケーションディレクトリにコピーする方法もあります: /usr/share/tomcat7/webapps
。その場合、以下のように適切なホストで autoDeploy
オプションが設定されていることを確認してください:
/etc/tomcat7/server.xml
... <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> ...
webapps フォルダ以外にあるファイルをホスト
Context
を作成することで、プロジェクトを webapps フォルダ以外に配置することができます。/etc/tomcat<number>/Catalina/localhost/
を開いてコンテキストを作成してください。コンテキストはシンプルな xml ファイルで、tomcat が参照するべきディレクトリを指定します。ファイルの基本的なフォーマットは以下のようになっています:
/etc/tomcat7/Catalina/localhost/whatShouldFollowLocalhost.xml
<Context path="/whatSholdFollwLocalhost" docBase="/where/your/project/is/" reloadable="true"/>
実際の例は以下です。ユーザーの /home
フォルダにプロジェクトを配置しています:
/etc/tomcat7/Catalina/localhost/myProject.xml
<Context path="/myProject" docBase="/home/archie/code/jsp/myProject" reloadable="true"/>
上記のように設定すると /home/archie/code/jsp/myProject/
にプロジェクトのファイルを置くことができ、ウェブブラウザでプロジェクトを確認したいときはhttp://localhost:8080/myProject を開きます。tomcat がファイルをロードできない場合、おそらくパーミッションに問題があります。chmod o+x /home/archie/code/jsp/myProject
を実行してください。
ログ
公式の Arch Linux パッケージの Tomcat は systemd の journalctl で起動ログを記録します。'/var/log/tomcat7/catalina.err
や /var/log/tomcat7/catalina.out
ファイルは使われません。/etc/tomcat7/server.xml
で Valve
と定義されている、アクセスログやビジネスログなどのログはデフォルトのまま /var/log/tomcat7/
に記録されます。
上流のようにログを保存したい場合、systemd ファイル /lib/systemd/system/tomcat7.service
を /etc/systemd/system/tomcat7.service
にコピーして、ログファイルの絶対パスを指定する SYSLOG
を変更してください。
Tips and tricks
基本的な設定はバーチャルホストのウェブアプリケーションで行うことができます: http://localhost:8080/host-manager/html 。tomcat-users.xml
で設定したユーザー名とパスワードを使ってください。他のオプションについては /etc/tomcat7
の設定ファイル (特に server.xml
) で変更できます。詳しくは Tomcat 7 の公式ドキュメント を参照。
前のバージョンの Tomcat からの移行
上に書いてあるように、Tomcat 7 によって Tomcat 6 が使えなくなることはありません。3つとも Servlet/JSP 標準の実装です。まず、あなたが使用したいアプリケーションがどのバージョンの Servlet/JSP を必要するのかによって Tomcat の 使用するバージョン を選択する必要があります。バージョンの移行が必要なときは、公式ウェブサイトに 移行を行う手順 が書かれています。
別の JRE/JDK で Tomcat を使用する
推奨されている JRE/JDK をインストールしない場合、Tomcat の systemd
サービスファイルで TOMCAT_JAVA_HOME
変数を設定してください。
Systemd#ユニットファイルの編集に書かれているように、カスタム設定で変数を上書きすることができます:
/etc/systemd/system/tomcat7.service.d
ディレクトリを作成- 作成したディレクトリの中に以下の内容で
start.conf
ファイルを保存 (Oracle の JDK パッケージ jdkAUR を使用する場合、/usr/lib/jvm/java-8-jdk
としてください):
[Service] Environment=TOMCAT_JAVA_HOME=/usr/lib/jvm/java-8-openjdk
もしくは、サービスファイル /usr/lib/systemd/system/tomcat7.service
を /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 this O'Reilly page and this 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
examples
,docs
, default home pageROOT
("_" in themanager
webapp). This prevents potential security holes to be exploited. Use themanager
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
/usr/share/java/webapps
directory to get it running. Editserver.xml
and set theautoDeploy
tofalse
:
/etc/tomcat7/server.xml
... <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. You get a 404 error page with Tomcat's version at the bottom.
To anonymize this, edit/open the following JAR (Editors like vim
can edit zips directly)
/usr/share/tomcat7/lib/catalina.jar
And edit the following file
org/apache/catalina/util/ServerInfo.properties
... server.info= server.number= server.built= ...
- Disable unused
connectors
inserver.xml
- Keep restricted access to
/etc/tomcat7/server.xml
. Onlytomcat
user and/orroot
should be able to read and write this. - Keep
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
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 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 tomcat-users.xml
and add the following to server.xml
:
/etc/tomcat7/server.xml
<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