📝
Webサーバーについて知識ゼロの人がさくらVPSを使用してJavaWebアプリ環境を整えた
前提知識
- Javaで作成したWebアプリケーションを.warファイルで作成できる
- Tomcatのディレクトリ構造が理解できていて、/Tomcatルートディレクトリ/webappsに.warファイルを配置してTomcat起動すると.warファイルが展開できることを理解していること
- さくらVPSでパケットフィルタのカスタム設定でTCP 8080を開けれること
さくらVPSの状態は以下でスタート(ただ、レンタルしただけの状態)
本来は、Apache(Webサーバー)を導入するのが推奨されているようですが、今回は使用するほどの規模ではないため、Tomcat(アプリケーションサーバー)のみとします。
推奨図(?)
【完成図】
CentOSでの話で手順を下記に記載
Javaをインストール
sudo dnf install -y java-21-openjdk
Tomcatをダウンロード
ダウンロード場所は/opt配下とします。
sudo curl -O http://ftp.riken.jp/net/apache/tomcat/tomcat-10/v10.1.39/bin/apache-tomcat-10.1.39.tar.gz
tarをインストール
sudo dnf install -y tar
ダウンロードしたtomcatを解凍
sudo tar -zxvf apache-tomcat-10.1.39.tar.gz
firewalldを起動してステータス確認
sudo systemctl start firewalld
sudo systemctl status firewalld
firewalldの設定
/etc/systemc/system/tomcat.serviceファイルを以下の内容で作成する
Tomcatのユニットファイルを作成します。このファイルは、LinuxのSystemdというサービスを管理する機能を利用していて、プログラムを自動起動させたりするのに必要になります。
tomcat.service
[Unit]
Description=Apache Tomcat 9
After=network.target
[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/opt/apache-tomcat-9.0.37/tomcat.pid
RemainAfterExit=yes
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
ExecReStart=/opt/tomcat/bin/shutdown.sh;/opt/tomcat/bin/startup.sh
[Install]
WantedBy=multi-user.target
tomcatのポート番号を/etc/firewalld/services/tomcat.xmlで設定
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Apache Tomcat 9</short>
<description>Apache Tomcat 9</description>
<port protocol="tcp" port="8080"/>
</service>
ファイルの権限変更
作成したtomcat.serviceの権限変更をします。
sudo chmod 755 /etc/systemd/system/tomcat.service
Tomcatを有効化
sudo systemctl enable tomcat
Tomcatの通信を許可する
sudo firewalld-cmd --add-service=tomcat --zone=public --permanent
Tomcatを起動する
実行権限がないので、実行権限を付与してから起動する
sudo chmod +x /opt/tomcat/bin
sudo /opt/tomcat/bin/startup.sh
さくらvpsのIPアドレス:8080にアクセスしてtomcatのテストページが開ければTomcatの導入はばっちしです。
.warファイルを展開する
/opt/tomcat/webappに.warファイルを配置してTomcatを再起動する
sudo /opt/tomcat/bin/shutdown.sh
sudo /opt/tomcat/bin/startup.sh
さくらvpsのIPアドレス:8080/開発時にアクセスしたURLにアクセスして、想定ページが開ければ、JavaWebアプリ環境の作成完了です。
Discussion