こんにちは、くまごろーです。
今回は、VPS上にwebサーバー(Apache)とアプリケーションサーバー(Tomcat)を導入するまでの流れをまとめました。本当は連携させるところまでやりたかったけど、かなり長くなりそうなのでやめました。ちなみに、VPSに各種サーバーを導入する前にやる初期設定は、過去の記事でまとめてます。
【CentOS】VPSにTomcatを導入したいので、Linuxの初期設定をやってみた。 - くまごろーのプログラミングメモ
私はApache導入まではすんなりいったんだけど、tomcatのテストページを「http://IPアドレス:8080」で表示させるのにすごい苦戦しました。結局、firewallの設定ができてなかったのが問題だったんですが・・・
わかる人にはすごい簡単なことなんだろうなあ・・・その内「こんなことで苦戦してたのか、なつかしいなあ」なんて思えるようになりたいな(-"-)
1 Java8をインストールする(OpenJDK)
これがなければJavaアプリが動かない。CentOS上で開発する予定がないのなら、ランタイムのみのインストールで十分。
(1)ランタイムをインストールする場合
以下のコマンドを入力。
$ sudo yum install java-1.8.0-openjdk
(2)開発環境をインストールする場合
$ sudo yum install java-1.8.0-openjdk-devel
正常にインストールが完了していれば、
$ java -version
と打つと
openjdk version "1.8.0_262" OpenJDK Runtime Environment (build 1.8.0_262-b10) OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
のように表示されます。
2 Apacheをインストールする
Apacheとは、Linuxで使われているWebサーバーとして最も高いシェアを持っているソフトウェアです。今回はバージョン「2.4.6」をインストールします。
(1)インストール方法
$ sudo yum install httpd
(2)Apacheを起動する
$ sudo systemctl start httpd.service
※ システムを再起動したときにApacheも自動的に起動するようにするには、以下のコマンド。
$ sudo systemctl enable httpd.service
※ Apacheの状態を確認するには以下のコマンド。
$ sudo systemctl status http.service
(3)ファイアウォールを設定する
デフォルトのファイアウォール設定では、Webサーバーへのアクセスが弾かれるようになっています。80番ポートへのアクセスを許可します。
$ sudo firewall-cmd --permanent --add-service=http
「success」と表示されたら、以下のコマンドでリロードします。
$ sudo firewalld-cmd --reload
※ ファイアウォールの状態を確かめるには
$ systemctl status firewalld
※ どのサービスが許可されてるのか確かめるには
$ sudo firewall-cmd --list-all
この時点で、ブラウザに「http://VPSのIPアドレス/」を入力すると、Apacheのテストページが表示されるようになっているはず。
3 Tomcatをインストールする
(1)任意のフォルダにTomcatをインストールします。(今回は"/opt"にします。)現時点の最新版「9.0.37」をインストールします。最新版を確認するには以下のページ
http://tomcat.apache.org/download-90.cgi
$ cd /opt $ sudo wget http://ftp.riken.jp/net/apache/tomcat/ tomcat-9/v9.0.37/bin/apache-tomcat-9.0.37.tar.gz
(2)ダウンロードした「apache-tomcat9.0.37.tar.gz」はgzip形式で圧縮されてるので、次のコマンドで解凍します。
$ tar -xzvf ~/apache-tomcat-9.0.37.tar.gz
(3)次に、Tomcatを動作させるための専用ユーザーを追加します。
$ sudo useradd -s /sbin/nologin tomcat
※ このユーザーはtomcat専用で、このユーザーで実際にログインして何かやるということはありません。
先ほど解凍した「tomcat9.0.37」の所有者をtomcatに変更します。
$ chown -R tomcat:tomcat /opt/apache-tomcat-9.0.37
(4)Tomcatのユニットファイルを作成します。このファイル、Linuxの「Systemd」というサービスを管理する機能を利用して、プログラムを自動起動させたりするのに必要だそうで・・・
「/etc/systemc/system/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/apache-tomcat-9.0.37/bin/startup.sh ExecStop=/opt/apache-tomcat-9.0.37/bin/shutdown.sh ExecReStart=/opt/apache-tomcat-9.0.37/bin/shutdown.sh;/opt/apache-tomcat-9.0.37/bin/startup.sh [Install] WantedBy=multi-user.target
次に、このファイルの権限を変更します。
$ chmod 755 /etc/systemd/system/tomcat.service
ここまできたら、以下のコマンドを打って
$ systemctl enable tomcat
tomcatを有効にします。
(5)ファイアウォールの設定
Apacheと同様、tomcatファイアウォールの設定をやります。Apacheをファイアウォールの許可リストに追加するには簡単だったけど、tomcatを追加するには、いくつか手続きがいるようです。さっきのユニットファイル作成もそうだったけど、Apacheはyumでインストールしたからかな?正直よくわかってません。(-_-)
ユーザーがfirewallに適用するサービスを追加するには、xmlファイルを「/etc/firewalld/services」内に設置しなければなりません。というわけで、「/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の通信を許可させるために、以下のコマンドを入力します。
$ sudo firewalld-cmd --add-service=tomcat --zone=public --permanent $ sudo firewall-cmd --reload
※ Apacheの時にも紹介しましたが、以下のコマンドで許可されてるサービスを確認できます。
$ sudo firewall-cmd --list-services --zone=public --permanent
ここに「tomcat」の表示があればOKです。
ここまでやったら、「http://VPSのIPアドレス:8080」でtomcatのテストページが表示されるはずです・・・