ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
AutoDeploy とは
Tomcat の autoDeploy は $CATALINA_BASE/webapps/ ディレクトリを定期的に監視し、新規 WAR ファイルやディレクトリの追加・更新・削除を検知して自動で展開・反映する機能です。開発時は便利ですが、本番では計画外の再起動を招くため通常無効化します。
conf/server.xml の設定箇所
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost"
appBase="webapps"
unpackWARs="true"
autoDeploy="true"
deployOnStartup="true"
deployIgnore=""
copyXML="false">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log"
suffix=".txt"
pattern="common" />
</Host>
</Engine>
</Service>
</Server>
各属性の意味
| 属性 | デフォルト | 意味 |
|---|---|---|
appBase | webapps | WAR / コンテキストの配置ディレクトリ |
autoDeploy | true | 稼働中の追加・更新を監視して自動展開 |
deployOnStartup | true | Tomcat 起動時に appBase 配下を一括展開 |
unpackWARs | true | WAR を解凍してディレクトリで実行(false なら WAR のまま) |
deployIgnore | なし | 無視するファイル名の正規表現 |
copyXML | false | WAR 内 META-INF/context.xml を conf/Catalina/localhost/ にコピー |
監視間隔
autoDeploy の監視間隔は <Engine> 階層の backgroundProcessorDelay 属性(秒)で決まります。デフォルト 10 秒:
<Engine name="Catalina" defaultHost="localhost"
backgroundProcessorDelay="10">
<!-- 10 秒ごとに webapps/ をスキャン -->
</Engine>
本番で監視は不要なら -1 で停止可能。ただし autoDeploy=false の方が一般的。
WAR 配置からアクセスまで
# 開発環境 (autoDeploy=true) の場合
cp myapp.war $CATALINA_HOME/webapps/
# 10 秒後にログ確認
tail -f $CATALINA_HOME/logs/catalina.out
# INFO: Deploying web application archive [/opt/tomcat/webapps/myapp.war]
# INFO: Deployment of web application archive ... has finished in 1,234 ms
# 展開先
ls -la $CATALINA_HOME/webapps/
# drwxr-xr-x myapp/ ← unpackWARs=true で自動展開
# -rw-r--r-- myapp.war
# アクセス
curl http://localhost:8080/myapp/
本番環境の推奨設定
本番では autoDeploy / deployOnStartup を無効化し、明示的にデプロイする運用が安全です:
<Host name="localhost"
appBase="webapps"
unpackWARs="true"
autoDeploy="false"
deployOnStartup="false">
</Host>
デプロイ手順:
# 1. Tomcat 停止
sudo systemctl stop tomcat
# または
$CATALINA_HOME/bin/shutdown.sh
# 2. 旧アプリ削除
rm -rf $CATALINA_HOME/webapps/myapp/
rm $CATALINA_HOME/webapps/myapp.war
# 3. 新 WAR 配置
cp /tmp/myapp-new.war $CATALINA_HOME/webapps/myapp.war
chown tomcat:tomcat $CATALINA_HOME/webapps/myapp.war
# 4. work ディレクトリのクリア(古い JSP コンパイル結果)
rm -rf $CATALINA_HOME/work/Catalina/localhost/myapp/
# 5. 起動
sudo systemctl start tomcat
# 6. 確認
tail -f $CATALINA_HOME/logs/catalina.out
curl -I http://localhost:8080/myapp/
Manager Webapp 経由のデプロイ
無停止デプロイしたい場合は Tomcat Manager の HTTP API を使えます:
# conf/tomcat-users.xml に manager-script ロールを設定
# <user username="deploy" password="xxx" roles="manager-script"/>
# 既存アプリの停止 → アンデプロイ → デプロイ
curl -u deploy:xxx \
"http://localhost:8080/manager/text/undeploy?path=/myapp"
curl -u deploy:xxx \
--upload-file myapp.war \
"http://localhost:8080/manager/text/deploy?path=/myapp&update=true"
autoDeploy のリスク
| リスク | シナリオ | 対策 |
|---|---|---|
| 中途展開 | 大きな WAR の cp 途中で Tomcat が展開開始 → クラスファイル欠落 | cp app.war.tmp → mv app.war.tmp app.war |
| 誤上書き | 運用ミスで間違った WAR を webapps へ → 即時反映 | 本番は autoDeploy=false |
| セッション喪失 | 再展開で webapp 再起動 → セッション消失 | セッション永続化、ローリングデプロイ |
| ログ肥大 | 10 秒ごとの監視ログ | org.apache.catalina.startup.HostConfig の log level を上げる |
FAQ
Q: WAR を置いても展開されない
A: ① Tomcat ユーザにファイル読取権限があるか、② autoDeploy=true か、③ catalina.out に FileNotFoundException 等のエラーが出ていないか確認。
Q: ディレクトリ展開を残したくない
A: unpackWARs="false" にすれば WAR のまま実行される。ただし JSP コンパイル時に work/ へキャッシュされる点は変わらず。
Q: コンテキストパスを変えたい
A: WAR 名を変える(myapp##v2.war → /myapp、パラレルデプロイ)、または conf/Catalina/localhost/myapp.xml を作成。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?