0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者向け】Apache TomcatへのWARファイルのデプロイ手順(ざっくり)

Posted at

はじめに

この記事でわかる・できること

  • JavaプログラムからWARファイルを作成する方法
  • Tomcatの導入方法
  • TomcatへWARファイルをデプロイする方法

前提

  • Javaプログラムが作成済みであること

この記事の対象者

  • 初めてTomcatにアプリをデプロイするよ~という方
  • WARファイルの作成が上手くいかないよ~という方

などなど

動作環境・使用するツールや言語

  • OS バージョン
    • ゲストOS:Ubuntu 24.04.2 LTS
      ※WSL2上で動かしています
    • ホストOS:Windows11 Home 24H2
  • ツール バージョン
    • Visual Studio Code Version 1.99.0 (user setup)
    • Apache Maven 3.8.7
      • Java version: 21.0.6
      • vendor: Ubuntu
      • runtime: /usr/lib/jvm/java-21-openjdk-amd64
    • Apache Tomcat/9.0.104
      • OS Name: Linux
      • OS Version: 5.15.167.4-microsoft-standard-WSL2
      • Architecture: amd64
      • JVM Version: 21.0.6+7-Ubuntu-124.04.1
      • JVM Vendor: Ubuntu
  • 言語 バージョン
    • Java openjdk 21.0.6 2025-01-21

やってみたこと

手元にJavaプログラムがある状態から、WARファイルを作成してApache Tomcat(以下、Tomcatと呼びます)をインストールし、デプロイしてみました。
4時間くらいCopilot君やChatGPT君と相談してようやくできたので、備忘も兼ねてざっくり手順を共有します。

手順1 JavaプログラムからWARファイルを作成

まず前提として以下の4つを示します。

  • カレントディレクトリ
  • カレントディレクトリからのディレクトリ構造(ツリー形式)
  • Javaソースファイルの内容
  • pom.xmlファイルの内容
カレントディレクトリ
###コマンド
pwd

###実行結果
/home/shigemasa89/nogizaka46-playlist-maker/demo
カレントディレクトリからのディレクトリ構造
###コマンド
tree

###実行結果
.
├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── example
    │   │           └── ScrapeSongTitlesServlet.java
    │   └── resources
    └── test
        └── java

9 directories, 2 files
ScrapeSongTitlesServlet.java
package com.example;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class ScrapeSongTitlesServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        resp.setContentType("text/html; charset=UTF-8");
        StringBuilder html = new StringBuilder("<html><body><h1>乃木坂46の楽曲一覧</h1><ul>");

        try {
            String url = "https://n46db.com/songs/all-songs-list.php";
            Document doc = Jsoup.connect(url).get();
            Element songTable = doc.selectFirst("table:nth-of-type(3)");
            Elements songRows = songTable.select("tbody tr");

            for (Element row : songRows) {
                Element songTitleCell = row.selectFirst("td:nth-of-type(2)");
                if (songTitleCell != null) {
                    html.append("<li>").append(songTitleCell.text()).append("</li>");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            html.append("<li>データ取得に失敗しました。</li>");
        }

        html.append("</ul></body></html>");
        resp.getWriter().write(html.toString());
    }
}
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>1.0</version>
    <packaging>war</packaging><!-- warファイルとしてパッケージング -->

    <properties>
        <maven.compiler.source>21</maven.compiler.source><!-- 使用中のJavaバージョンを指定 -->
        <maven.compiler.target>21</maven.compiler.target><!-- 使用中のJavaバージョンを指定 -->
    </properties>

    <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
    <dependencies>
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.19.1</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.1</version>  <!-- 最新バージョンに更新 -->
            </plugin>
        </plugins>
    </build>
</project>

カレントディレクトリにpom.xmlファイルが配置されていることを確認し、以下のコマンドでWARファイルを作成します。
※WARファイルにするという情報はpom.xmlファイルに記述してあります。

WARファイル作成
    mvn package

このコマンドによって、カレントディレクトリからのディレクトリ構造(ツリー形式)は以下のようになりました。
欲しかったWARファイル「target/demo-1.0.war」が作成されていますね。

カレントディレクトリからのディレクトリ構造
###コマンド
tree

###実行結果
.
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── ScrapeSongTitlesServlet.java
│   │   └── resources
│   └── test
│       └── java
└── target
    ├── classes
    │   └── com
    │       └── example
    │           └── ScrapeSongTitlesServlet.class
    ├── demo-1.0
    │   ├── META-INF
    │   └── WEB-INF
    │       ├── classes
    │       │   └── com
    │       │       └── example
    │       │           └── ScrapeSongTitlesServlet.class
    │       └── lib
    │           └── jsoup-1.19.1.jar
    ├── demo-1.0.war
    ├── generated-sources
    │   └── annotations
    ├── maven-archiver
    │   └── pom.properties
    └── maven-status
        └── maven-compiler-plugin
            ├── compile
            │   └── default-compile
            │       ├── createdFiles.lst
            │       └── inputFiles.lst
            └── testCompile
                └── default-testCompile
                    └── inputFiles.lst

29 directories, 10 files

手順2 Tomcatをインストールして起動確認

1. Tomcatのtarを持ってくる

以下のページで、安定していそうなものとしてTomcat 9.0.104(9.0.xの中の最新版)を選択しました。
https://tomcat.apache.org/whichversion.html

image.png

そしてTomcat 9のダウンロードページを選択し、
image.png

tar.gzのリンクを右クリックしてリンクのアドレスをコピーします。
image.png

カレントディレクトリ上で、コピーしたアドレスを使って以下のコマンドを実行し、tomcatのtar.gzをダウンロードします。

tar.gzのダウンロード
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.104/bin/apache-tomcat-9.0.104.tar.gz

2. tar.gzファイルを解凍

続いて以下のコマンドを実行してtar.gzファイルを解凍します。

tar.gzのダウンロード
tar -xzvf apache-tomcat-9.0.104.tar.gz

3. 起動確認

Tomcatのbinディレクトリの中から以下の「startup.sh」を見つけます。
image.png

以下の、カレントディレクトリからの「startup.sh」の相対パスを貼り付けたコマンドでTomcat君を起動できます。

Tomcatの起動
apache-tomcat-9.0.104/bin/startup.sh

以下にアクセスしてみましょう。
http://localhost:8080/

こんな感じでTomcatのページが表示されれば正常に起動されています!
パーティーをしましょう!
image.png

手順3 WARファイルをTomcatにデプロイ

さあ、いよいよ手順1で作ったWARファイルをTomcatにデプロイしましょう。
アプリの動作を見るのが楽しみですね。

以下のコマンドで、手順1で作ったWARファイルをTomcatのwebappsディレクトリにコピーします。

Tomcatの起動
cp target/demo-1.0.war apache-tomcat-9.0.104/webapps

すると以下のようにwebapps配下に「demo-1.0」ディレクトリが自動作成されます。
image.png

この中のWEB-INFディレクトリに以下のような内容で「web.xml」ファイルを作成します。

web.xml
<web-app>
    <servlet>
        <servlet-name>ScrapeSongTitlesServlet</servlet-name>
        <servlet-class>com.example.ScrapeSongTitlesServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ScrapeSongTitlesServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

そして、以下のURL(localhost:8080/{WARファイルデプロイで自動作成されたディレクトリ名}/)にアクセスします。
http://localhost:8080/demo-1.0/

アプリが正常にデプロイされていれば、以下のようにJavaプログラムが起動されていると思います!
お疲れ様でした!
image.png

おわりに・まとめ

今回は自分でWebアプリを作ってみたいなと思い、手始めにTomcatをインストールして簡単なアプリをデプロイしてみました。
今後も、気が向いたらまた投稿するかもしれないので、そのときはよろしくお願いします。

楽しみながら開発を続けていけたらなと思っています!
この度は最後までお読みいただき、ありがとうございました!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?