openSUSE Leap 16

Tomcat 11 : インストール2025/12/05

 

Tomcat をインストールして、Java アプリケーションをサーバーサイドで実行できる環境を構築します。

[1]

こちらを参考に Java 実行環境をインストールしておきます

[2] Tomcat 11 のインストールと設定です。
事前にダウンロードサイトで最新版を確認しておいてください。
⇒ https://tomcat.apache.org/download-11.cgi
dlp:~ #
curl -O https://dlcdn.apache.org/tomcat/tomcat-11/v11.0.14/bin/apache-tomcat-11.0.14.tar.gz

dlp:~ #
tar zxvf apache-tomcat-11.0.14.tar.gz

dlp:~ #
mv apache-tomcat-11.0.14 /usr/local/libexec/tomcat11

dlp:~ #
useradd -M -d /usr/local/libexec/tomcat11 tomcat

dlp:~ #
chown -R tomcat:tomcat /usr/local/libexec/tomcat11

dlp:~ #
restorecon -R /usr/local/libexec/tomcat11
[3] Systemd 設定ファイルを作成しておきます。
dlp:~ #
vi /usr/lib/systemd/system/tomcat11.service
# 新規作成

[Unit]
Description=Apache Tomcat 11
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/local/libexec/tomcat11/bin/startup.sh
ExecStop=/usr/local/libexec/tomcat11/bin/shutdown.sh
RemainAfterExit=yes
User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target

dlp:~ #
systemctl enable --now tomcat11

[4] SELinux を有効にしている場合は、Tomcat を起動するためにポリシーの許可が必要です。
dlp:~ #
vi catalinash.te
# 以下の内容で新規作成

module catalinash 1.0;

require {
        type init_t;
        type admin_home_t;
        class file { append execute execute_no_trans ioctl open read };
}

#============= init_t ==============
allow init_t admin_home_t:file { append execute execute_no_trans ioctl open read };

dlp:~ #
checkmodule -m -M -o catalinash.mod catalinash.te

dlp:~ #
semodule_package --outfile catalinash.pp --module catalinash.mod

dlp:~ #
semodule -i catalinash.pp

[5] Firewalld を有効にしている場合、且つ、他ホストからも Tomcat にアクセスする場合はポートの許可が必要です。
dlp:~ #
firewall-cmd --add-port=8080/tcp

success
dlp:~ #
firewall-cmd --runtime-to-permanent

success
[6] ローカルホスト または 任意のクライアントコンピューターで Web ブラウザーを起動し、[http://(サーバーホスト名 または IP アドレス):8080/] にアクセスして、Tomcat デフォルトページが表示されることを確認します。
[7] 現在の日時を表示するテストサーブレットを作成して動作を確認します。
dlp:~ #
mkdir /usr/local/libexec/tomcat11/webapps/ROOT/WEB-INF/classes

dlp:~ #
chown tomcat:tomcat /usr/local/libexec/tomcat11/webapps/ROOT/WEB-INF/classes

dlp:~ #
cd /usr/local/libexec/tomcat11/webapps/ROOT/WEB-INF/classes

dlp:/usr/local/libexec/tomcat11/webapps/ROOT/WEB-INF/classes #
vi daytime.java
import java.io.*;
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import java.util.Calendar;

public class daytime extends HttpServlet {
    public void doGet(HttpServletRequest request
    ,HttpServletResponse response)

    throws IOException, ServletException{
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        Calendar cal = Calendar.getInstance();
        out.println("<html>\n<head>\n<title>DayTime</title>\n</head>\n<body>");
        out.println("<h1 style=\"font-size: 48px; text-align: center;\">");
        out.println(cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + 
        cal.get(Calendar.DATE) + " " + cal.get(Calendar.HOUR_OF_DAY) + ":" + cal.get(Calendar.MINUTE));
        out.println("</hi>\n</body>\n</html>");
    }
}

dlp:/usr/local/libexec/tomcat11/webapps/ROOT/WEB-INF/classes #
javac -classpath /usr/local/libexec/tomcat11/lib/servlet-api.jar daytime.java

dlp:/usr/local/libexec/tomcat11/webapps/ROOT/WEB-INF/classes #
vi /usr/local/libexec/tomcat11/webapps/ROOT/WEB-INF/web.xml
# 以下を <web-app> - </web-app> の間の適当なところへ追記

  <servlet>
     <servlet-name>daytime</servlet-name>
     <servlet-class>daytime</servlet-class>
  </servlet>
  <servlet-mapping>
     <servlet-name>daytime</servlet-name>
     <url-pattern>/daytime</url-pattern>
  </servlet-mapping>
[8] [http://(サーバーのホスト名 または IP アドレス):8080/daytime] にアクセスして、以下のようなページが表示されることを確認します。
関連コンテンツ