GNU/Linux >> Linux の 問題 >  >> Rocky Linux

RockyLinux8にNginxを使用してApacheTomcat10をインストールする方法

Tomcatは、Javaベースのアプリケーション用のオープンソースWebサーバーです。これは、JavaサーブレットおよびJSPアプリケーションのデプロイに使用されます。 Javaサーブレットは、サーバーが要求と応答を処理する方法を定義する小さなプログラムです。 Tomcatは、Javaサーブレット、JavaServer Pages、Java式言語、およびJavaWebSocketテクノロジーのオープンソース実装として機能します。

Tomcatには複数のバージョンがあります。チュートリアルでは、Tomcat10のインストールについて説明します。 Tomcat 9をインストールする場合、手順は同じです。変更がある場合は、チュートリアルで指定されます。

このチュートリアルでは、Tomcat 10をNginxサーバーと一緒にインストールして、リバースプロキシとして機能し、SSLを使用してサーバーを保護します。 Tomcatの最新のアルファバージョンであるTomcat10.1.xバージョンがありますが、それはインストールされません。

前提条件
  • RockyLinux8.5を実行しているサーバー

  • スーパーユーザー権限を持つ非sudoユーザー。

  • すべてが更新されていることを確認してください。

    $ sudo dnf update
    
  • インストールに必要なパッケージ。

    $ sudo dnf install wget tar
    
ステップ1-Javaをインストールする

Tomcat9および10にはJava8以降が必要です。 Javaプラットフォームのオープンソース実装であるOpenJDK11をインストールします。

次のコマンドを実行して、OpenJDKをインストールします。

$ sudo dnf install java-11-openjdk-devel

インストールを確認します。

$ java -version
openjdk version "11.0.13" 2021-10-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)
ステップ2-システムユーザーを作成する

ルートユーザーとしてTomcatを実行することにより、セキュリティリスクを最小限に抑えるために、新しいシステムユーザーを作成します。新しいユーザーの場合、/opt/tomcatを設定します ホームディレクトリとして。

次のコマンドを実行して、Tomcatの新しいシステムユーザーを作成します。

$ sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
ステップ3-Tomcatをダウンロード

Tomcat v10の最新バージョンは、ダウンロードページからダウンロードできます。このチュートリアルを書いている時点では、v10.0.14が利用可能な最新バージョンです。 Tomcatをダウンロードする前に、最新バージョンを確認してください。

wgetを使用する Tomcatをダウンロードします。

$ VERSION=10.0.14
$ wget https://dlcdn.apache.org/tomcat/tomcat-10/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz
>

ファイルを/opt/tomcatに抽出します ディレクトリ。

$ sudo tar -xf apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/

Tomcatのインストールディレクトリを指すTomcatの最新バージョンへのシンボリックリンクを作成します。

$ sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest

ディレクトリの所有権を以前に作成したユーザーに変更します。

$ sudo chown -R tomcat:tomcat /opt/tomcat

ステップ4-Systemdユニットファイルを作成する

次のステップは、Tomcatサーバーのサービスファイルを作成して、自動的に起動できるようにすることです。

ファイル/etc/systemd/system/tomcat.serviceを作成して開きます 編集用。

$ sudo nano /etc/systemd/system/tomcat.service

次のコードを貼り付けます。

[Unit]
Description=Apache Tomcat 10 Servlet container
Wants=network.target
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"

Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh
Restart=always

[Install]
WantedBy=multi-user.target

Ctrl + Xを押してファイルを保存します Yと入力します 保存するように求められたら。

ステップ5-Tomcatサービスを開始して有効にする

サービスデーモンをリロードして、Tomcatサービスを有効にします。

$ sudo systemctl daemon-reload

Tomcatサービスを有効にして開始します。

$ sudo systemctl enable tomcat --now

サービスステータスを確認してください。

$ sudo systemctl status tomcat
? tomcat.service - Apache Tomcat 10 Servlet container
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2021-12-17 15:54:28 UTC; 24s ago
  Process: 86219 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 86226 (java)
    Tasks: 19 (limit: 11411)
   Memory: 132.7M
   CGroup: /system.slice/tomcat.service
           ??86226 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/latest/conf/logging.properties>

Dec 17 15:54:27 howtoforge systemd[1]: Starting Apache Tomcat 10 Servlet container...
Dec 17 15:54:28 howtoforge systemd[1]: Started Apache Tomcat 10 Servlet container.
ステップ6-ファイアウォールの構成

RockyLinuxはFirewalledFirewallを使用しています。ファイアウォールのステータスを確認してください。

$ sudo firewall-cmd --state
running

HTTPおよびHTTPSポートを許可します。

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

ファイアウォールをリロードして変更を有効にします。

$ sudo firewall-cmd --reload
ステップ7-TomcatWeb管理インターフェースを構成する

ウェブ管理インターフェースにアクセスできるのは、そのユーザー資格情報を作成した場合のみです。

Tomcatのユーザーとロールは、/opt/tomcat/latest/conf/tomcat-users.xmlで定義されています。 ファイル。編集のためにファイルを開きます。

$ sudo nano /opt/tomcat/latest/conf/tomcat-users.xml

</tomcat-usersの前に次の行を追加します ライン。ユーザー名とパスワードを資格情報に置き換えます。

ManagerとAdministratorのTomcatポータルに異なる資格情報を選択します。

<tomcat-users>
<!--
    Comments
-->
<role rolename="manager-gui"/>
    <user username="manager" password="managerpassword" roles="manager-gui" />
<role rolename="admin-gui"/>
	<user username="admin" password="adminpassword" roles="admin-gui"/>
</tomcat-users>

Ctrl + Xを押してファイルを保存します Yと入力します 保存するように求められたら。

デフォルトでは、Tomcatインターフェースはローカルホストからのみアクセス可能です。どこからでもアクセスする必要がある場合は、構成する必要があります。

/opt/tomcat/latest/webapps/manager/META-INF/context.xmlを開きます 編集用。

$ sudo nano /opt/tomcat/latest/webapps/manager/META-INF/context.xml

次の行を削除するか、<!--で囲むことにより、以下に指定されているようにコメントアウトします。 および-->

<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->

任意のIPアドレスからのアクセスを許可することはセキュリティリスクです。パブリックIPアドレスからのアクセスのみを許可することで制限できます。パブリックIPアドレスが22.22.22.22の場合 、次に次のように行を変更します。

 <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|22.22.22.22" />

許可されるIPアドレスのリストは、縦棒( | )で区切られます。 )。単一のIPアドレスを追加することも、正規表現を使用することもできます。

Ctrl + Xを押してファイルを保存します Yと入力します 保存するように求められたら。

ファイル/opt/tomcat/latest/webapps/host-manager/META-INF/context.xmlに対して同じ変更を実行します 同様に。

終了したら、Tomcatサーバーを再起動します。

$ sudo systemctl restart tomcat
ステップ8-SSLをインストールする

Let's Encryptを使用してSSL証明書をインストールするには、Certbotツールをインストールする必要があります。

まず、EPELリポジトリをダウンロードしてインストールする必要があります。

$ sudo dnf install epel-release

次のコマンドを実行して、Certbotをインストールします。

$ sudo dnf install certbot

SSL証明書を生成します。

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d tomcat.example.com

上記のコマンドは、証明書を/etc/letsencrypt/live/tomcat.example.comにダウンロードします。 サーバー上のディレクトリ。

Diffie-Hellmanグループを生成します 証明書。

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Let'sEncryptの自動更新用のチャレンジWebルートディレクトリを作成します。

$ sudo mkdir -p /var/lib/letsencrypt

Cronジョブを作成してSSLを更新します。証明書を確認し、必要に応じて更新するために毎日実行されます。そのためには、まず、ファイル/etc/cron.daily/certbot-renewを作成します。 開いて編集します。

$ sudo nano /etc/cron.daily/certbot-renew

次のコードを貼り付けます。

#!/bin/sh
certbot renew --cert-name tomcat.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。

タスクファイルの権限を変更して実行可能にします。

$ sudo chmod +x /etc/cron.daily/certbot-renew
ステップ9-Nginxをインストールする

Rocky Linux 8.5には、最新の安定バージョンのNginxが付属しています。次のコマンドを使用してインストールします。

$ sudo dnf module install nginx:1.20

インストールを確認します。

$ nginx -v
nginx version: nginx/1.20.1

Nginxサービスを有効にして開始します。

$ sudo systemctl enable nginx --now

ファイル/etc/nginx/conf.d/tomcat.confを作成して開きます 編集用。

$ sudo nano /etc/nginx/conf.d/tomcat.conf

次のコードを貼り付けます。

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  tomcat.example.com;

    access_log  /var/log/nginx/tomcat.access.log;
    error_log   /var/log/nginx/tomcat.error.log;
    
    # SSL
    ssl_certificate      /etc/letsencrypt/live/tomcat.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/tomcat.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/tomcat.example.com/chain.pem;
    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    resolver 8.8.8.8;

    location / {
      proxy_pass http://127.0.0.1:8080;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-Host $host;
      proxy_set_header X-Forwarded-Server $host;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}
# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  tomcat.example.com;
    return 301   https://$host$request_uri;
}

Ctrl + Xを押してファイルを保存します Yと入力します 終了したらプロンプトが表示されたら。

ファイル/etc/nginx/nginx.confを開きます 編集用。

$ sudo nano /etc/nginx/nginx.conf

include /etc/nginx/conf.d/*.conf;の行の前に次の行を追加します 。

server_names_hash_bucket_size  64;

Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。

Nginx構成ファイルの構文を確認します。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nginxサービスを再起動して、新しい構成を有効にします。

$ sudo systemctl restart nginx
ステップ10-TomCatを実行します

https://tomcat.example.comを起動します ブラウザで、次の画面が開きます。

これで、手順7で構成したログイン資格情報を使用して、サーバーステータス、マネージャーアプリ、およびホストマネージャーのページにアクセスできます。

結論

これで、Rocky Linux8.5ベースのサーバーにTomcatServerをインストールして構成し、Nginxリバースプロキシ経由でサーバーを提供し、SSLを使用してサーバーを保護する方法についてのチュートリアルは終了です。ご不明な点がございましたら、下のコメント欄に投稿してください。


Rocky Linux
  1. Rocky Linux 8にLEMP(Nginx、MariaDB、PHP)を使用してWordPressをインストールする方法は?

  2. Rocky Linux / AlmaLinux8にApacheMavenをインストールする方法

  3. RockyLinux8にNginxを使用してModSecurityをインストールする方法

  1. Debian10にNginxプロキシを使用してApacheTomcat9をインストールする方法

  2. RockyLinux8.4にFirewalldを使用してFail2banをインストールする方法

  3. RockyLinux8にApacheKafkaをインストールする方法

  1. RockyLinux8にNginxを使用してApacheTomcat10をインストールする方法

  2. RockyLinuxにApacheSolrをインストールする方法

  3. RockyLinuxにNginxでJoomlaをインストールする方法