LoginSignup
1
2

はじめてのWebサーバ構築(centOS Stream 9, Java 11, tomcat 9, サーブレット)

Last updated at Posted at 2024-05-07

はじめてのWebサーバ構築

1. 前提条件

済ませておくこと

  • さくらのVPS [サーバ申込を済ませておく]
  • お名前.com [ドメイン申込を済ませておく]
    ※さくらVPSサーバのグローバルIPが分かり次第Aレコードの設定を済ませておく]
  • Tera Term 5 [インストールを済ませておく]

このページで設定するもの

  • centOS Stream 9
  • javaEE 11
  • tomcat 9.0.88

2. VPSサーバの設定

さくらのVPSサーバの設定は以下の通り。
さくらのvps01.png
さくらのvps02.png

※追記
パケットフィルター設定では、「フィルターの種類」にWeb(TCP 80, 443)を「すべて許可する」で追加してください。

3. Tera Termより、初期ユーザcentosでログイン

Tera Term5 01.png
Tera Term5 02.png
Tera Term5 03.png
※パスフレーズはさくらのVPSで設定した「管理ユーザーのパスワード」です。

[sentos@hostname ~]# sudo -s  #rootに変更
[root@hostname ~]# useradd somebody  #一般ユーザsombody(例)の作成
[root@hostname ~]# passwd somebody   #sombodyユーザーのパスワード設定
[root@hostname ~]# cat /etc/passwd   #ユーザ一覧の確認
[root@hostname ~]# usermod -G wheel somebody    #管理者ユーザをwheelグループに追加

※なお、Tera Termではコピペが可能です。ペーストはTera Term上で右クリックしてください。

このあと、一度exitコマンドで接続を切断し、作成したユーザー名で入り直します。その後、デフォルトで作成したcentosユーザを削除します。

[somebody@hostname ~]# sudo -s
[root@hostname ~]# userdel centos

・ここではssh接続についての説明を省略しています
・管理者の制限は別で行ってください。

4. Apacheのインストール

この設定は以下ページを参照。
Apache httpd : インストール

dnf -y install httpd

ウェルカムページの名前を変更

mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.org

httpdの設定

vi /etc/httpd/conf/httpd.conf

httpdの設定は以下の通り

# 91行目 : 管理者アドレス指定
ServerAdmin root@(ドメイン名)
# 100行目 : コメント解除しサーバー名指定
ServerName (ドメイン名):80
# 149行目 : 変更 (Indexes は削除)
Options FollowSymLinks
# 156行目 : 変更
AllowOverride All
# 169行目 : 必要に応じて追記 (ディレクトリ名のみでアクセスできるファイル名)
DirectoryIndex index.html index.php index.cgi index.jsp
# 最終行に追記
# サーバーの応答ヘッダ
ServerTokens Prod

5. JAVA JDKのインストール

以下、設定はこちらのページを参考に実行しました。
なお、Tomcatのバージョンを10から9に変更しています。

How to Install Apache Tomcat Server on CentOS Stream 9 Tutorial(英文)

dnf install java-11-openjdk-devel -y

6. javaがインストールできているか、バージョン確認

java --version

このような表示を確認できるはず(上のページより抜粋)

openjdk 11.0.15 2022-04-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.15+9-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.15+9-LTS, mixed mode, sharing)

7. Tomcatのインストール

まず、tomcatユーザを作成します。セキュリティ目的です。

useradd -m -U -d /opt/tomcat -s /bin/false tomcat

tomcat9の最終バージョンの確認

Apache Tomcat
※2024.5.7現在ではver9.0.88が最新のようです。ver10も存在しますがecripsの開発環境と揃える目的でver9を選択します。

wgetコマンドのインストール

インストール済みでないことを確認してインストールします。

yum list installed | grep wget   #ここで何も表示されないことを確認
yum -y install wget

tomcatのインストール

wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.88/bin/apache-tomcat-9.0.88.tar.gz

成功すると、以下のような表示を確認できます。
※上のページより抜粋なので、ver10になっています

--2022-05-19 15:51:50--  https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.21/bin/apache-tomcat-10.0.21.tar.gz
Resolving dlcdn.apache.org (dlcdn.apache.org)... 151.101.2.132, 2a04:4e42::644
Connecting to dlcdn.apache.org (dlcdn.apache.org)|151.101.2.132|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11928158 (11M) [application/x-gzip]
Saving to: apache-tomcat-10.0.21.tar.gz

apache-tomcat-10.0.21.tar.gz        100%[=================================================================>]  11.38M  64.9MB/s    in 0.2s

2022-05-19 15:51:50 (64.9 MB/s) - apache-tomcat-10.0.21.tar.gz saved [11928158/11928158]

tarコマンドのインストール

yum list installed | grep tar   #ここでtarだけのインストールを確認できないならインストールする
yum -y install tar

ダウンロードしたファイルをひとまとめにする

tar -xvzf apache-tomcat-9.0.88.tar.gz -C /opt/tomcat/

tomcatが保存されたディレクトリに行き、名前をシンプルなものに変更する

cd /opt/tomcat
mv apache-tomcat-9.0.88 tomcat9

tomcatディレクトリの所属を変更する

chown -R tomcat:tomcat /opt/tomcat

8. Serviceファイルを作成する

viコマンドでserviceファイルを作成する

vi /etc/systemd/system/tomcat.service

中身は以下の通り

[Unit]
Description=Apache Tomcat 9 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/tomcat9"
Environment="CATALINA_HOME=/opt/tomcat/tomcat9"
Environment="CATALINA_PID=/opt/tomcat/tomcat9/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

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

[Install]
WantedBy=multi-user.target

viの書き込みから保存、編集終了までは以下の通り。
i :書き込みモード開始
Esc :書き込みモード終了
:w :保存
:q :編集の終了

編集したServiceファイルを機能させるためdaemonを再起動します。

systemctl daemon-reload

Tomcatがシステム再起動の度に自動的に起動するよう設定します。

systemctl enable tomcat --now

Tomcatが稼働しているか、以下のコマンドで確認します。

systemctl status tomcat

成功すると、以下のような表示を確認できます。
※上のページより抜粋なので、ver10になっています

 tomcat.service - Apache Tomcat 10 Servlet container
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2022-05-19 15:53:18 UTC; 6s ago
  Process: 1945 ExecStart=/opt/tomcat/tomcat10/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 1952 (java)
    Tasks: 29 (limit: 23696)
   Memory: 156.6M
   CGroup: /system.slice/tomcat.service
           └─1952 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/tomcat10/conf/logging.properties -Djava.util.logging.>

May 19 15:53:18 centos systemd[1]: Starting Apache Tomcat 10 Servlet container...
May 19 15:53:18 centos systemd[1]: Started Apache Tomcat 10 Servlet container.

9. リモートログインを使用できるようにする

Tomcatを使用するためのユーザー(manager, admin)を追加する

vi /opt/tomcat/tomcat9/conf/tomcat-users.xml

当ファイルの一番下の上に以下を挿入、保存して終了する。

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

現状ではローカルホストしかアクセスできないため、xmlファイルを編集します。

vi /opt/tomcat/tomcat9/webapps/manager/META-INF/context.xml

ファイル中段(21行目あたり)に、以下の表示があります。

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

これを、コメントアウト(<!-- -->で囲む)をします。

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

tomcatを再起動します。

systemctl restart tomcat

10. Nginx(エンジンエックス)の設定を行う

※nginxとは、Webサーバの一つです。2024年2月の記事ではApacheに置き換わる存在のようです。
参考:
NGINXとはどんなソフトウェア?Apacheとは何が違うのか

Nginxをインストールする

dnf install nginx -y

Nginxを起動、システム再起動の度に自動的に起動するよう設定します。

systemctl start nginx
systemctl enable nginx

Tomcat用のNginx Virtual Hostを作成します。

vi /etc/nginx/conf.d/tomcat.conf

tomcat.confの中身は以下の通りです。

server {
    listen       80;
    server_name  tomcat.example.com; #自身のドメイン名を入力

    access_log  /var/log/nginx/tomcat.access.log;
    error_log   /var/log/nginx/tomcat.error.log;


    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;
  }
}

以下のコマンドで構文エラーを見つけてくれます。

nginx -t

成功していれば、以下のようなコメントを見ることが出来ます。

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nginxを再起動します。

systemctl restart nginx

Nginxの状態を確認します。

systemctl status nginx

成功すると、以下のような表示を確認できます。
※上のページより抜粋です。

 nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2022-05-19 15:55:42 UTC; 13s ago
  Process: 4657 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 4654 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 4652 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 4658 (nginx)
    Tasks: 3 (limit: 23696)
   Memory: 5.0M
   CGroup: /system.slice/nginx.service
           ├─4658 nginx: master process /usr/sbin/nginx
           ├─4659 nginx: worker process
           └─4660 nginx: worker process

May 19 15:55:42 centos systemd[1]: nginx.service: Succeeded.
May 19 15:55:42 centos systemd[1]: Stopped The nginx HTTP and reverse proxy server.
May 19 15:55:42 centos systemd[1]: Starting The nginx HTTP and reverse proxy server...
May 19 15:55:42 centos nginx[4654]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
May 19 15:55:42 centos nginx[4654]: nginx: configuration file /etc/nginx/nginx.conf test is successful
May 19 15:55:42 centos systemd[1]: Started The nginx HTTP and reverse proxy server.

11. ファイアーウォールの設定

ファイアーウォールをを起動、システム再起動の度に自動的に起動するよう設定します。

systemctl start firewalld.service
systemctl enable firewalld.service

ファイアーウォールを設定します。

firewall-cmd --runtime-to-permanent
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https

ファイアーウォールを再起動します。

firewall-cmd --reload

12.確認

tomcatのテストページが表示されることを確認してください。
tomcat 01.png
また、ページ右側の[Manager App]や[Host Manager]に、上で作成したユーザ
user username="manager" password="managerpassword"
user username="admin" password="adminpassword"
でログインできるかどうかを確認してください。

13.アプリケーションをデプロイする

アプリケーションは、特定のディレクトリにwarファイルを設置することで稼働させることが出来ます。

warファイルを準備してください。

・ここではwarファイルの生成は割愛します。Ecripsから生成することが可能です。

作成したwarファイルをTera Term上にドラッグ&ドロップしてください。

ユーザ(rootでない)のルートフォルダに転送できます。

作成したユーザのルートディレクトリに移動し、warファイルが存在することを確認してください。
warファイルをtomcatが保存されているディレクトリ内の、webappsディレクトリに移動させます。

mv (準備したファイル名).war /opt/tomcat/tomcat9/webapps

最後に、webアプリが表示されたことを確認します。
ブラウザを用いて、以下にアクセスしてください。

http://(サーバ名).(ドメイン名)/(アプリケーション名)/(最初に表示するファイル名)

※(最初に表示するファイル名)をindex.jspにしておけば(アプリケーション名)までの表示でOKです。

13.おわりに

これが初めての投稿です。
誰かのお役に立ちますように。

1
2
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
1
2