6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Webサービス作成までの道のり(その2)

Last updated at Posted at 2018-06-17

前回のあらすじ

Webサービス作成の経緯とサービス概要の大枠について話した。
詳しくは、こちら「Webサービス作成までの道のり(その1)」。

今回の内容

今回は、サーバの環境構築を行った作業を載せていく。
作業内容は以下のようになる。
・OSインストール
・JDKインストール
・tomcatとApache httpdのインストールと自動起動設定
・tomcatに簡単にデプロイ出来るようにWebアプリーションマネージャの設定
・tomcatとApache httpdの連携
 Apacheにアクセスすることで、tomcatに処理を引き渡すことが出来るようにする

なぜ、流行りのNginxではなく、Apacheにしたのか。それは、今回のサービス内容と機能面から考えた結果、Apacheが好ましいと考えたからだ。
Nginxは、Apacheの抱えるC10K問題を解決する為に生まれたようだが、今回のサービスは、同時に1万人ものアクセスが行われるようなサービスではない。
そして、イベント駆動型のNginxはメモリ消費が少なく処理は早いが、はじめから多くの機能がついていない。ApacheであればWebサーバとしての機能がはじめから豊富に備わっているので、作業工数を省けて経験の浅い私でも構築し易いと考えたからだ。

環境構築

OSインストール

VMwareにCentOS7.4インストール

上記リンクの手順で、CentOSをVMwareにインストールする。私は、普段からOSにはCentOSをメインで使っている。人気で言ったらUbuntuかもしれないが、そもそもLinuxはサーバ用途でしか使っていないので、GUIをメインで使うことがない。その為、Ubuntuに魅力を感じない。また、アップデート頻度の多いUbuntuには不安感を感じてしまう。
CentOSは、RHELクローンで安定感があり、エンタープライズ用として企業で使う頻度が高い為、今後の為にも慣れておきたいのはある。だが、一番は現場でRHELを使ってて一番使いやすいからというのが大きい。

JDKインストール

# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel 

tomcatユーザ作成

セキュリティを考えてtomcat用の専用ユーザをログインシェルを作らずに作成

# useradd -s /sbin/nologin tomcat

tomcatのダウンロード

# cd /opt
# wget http://ftp.riken.jp/net/apache/tomcat/tomcat-9/v9.0.8/bin/apache-tomcat-9.0.8.tar.gz

yumでもインストールは出来るが、デフォルトでtomcat7がインストールされた。yumリポジトリを編集すれば最新版をインストールできるだろうが面倒なので、直接パッケージをダウンロードして展開する。

tomcatを展開

# tar -xvzf apache-tomcat-9.0.8.tar.gz 

シンボリックリンク作成

バージョン変更も考えてtomcatディレクトリをシンボリックリンクで管理

# ln -s /opt/apache-tomcat-9.0.8 /opt/tomcat

環境変数の設定

以下の内容を追加

# vi /etc/profile

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64
export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre
export CATALINA_HOME=/opt/tomcat

反映

# source /etc/profile

反映確認

# /opt/tomcat/bin/version.sh

Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/9.0.8
Server built:   Apr 27 2018 19:32:00 UTC
Server number:  9.0.8.0
OS Name:        Linux
OS Version:     3.10.0-693.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_171-b10
JVM Vendor:     Oracle Corporation

firewall設定

現在の設定を確認

# firewall-cmd --list-services --zone=public --permanent

ssh dhcpv6-client

tomcatをここに追加していく

サービス追加
新規ファイルを作成し、以下の内容を追加

# vi /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>

設定を反映

# firewall-cmd --add-service=tomcat --zone=public --permanent
# firewall-cmd --reload

確認

# firewall-cmd --list-services --zone=public --permanent
ssh dhcpv6-client tomcat

SELinux無効化

SELINUXをdisabledに変更

# vi /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

再起動

# reboot

再起動後に設定確認

# getenforce
  Disabled

tomcat起動

# /opt/tomcat/bin/startup.sh
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Tomcat started.

ブラウザでも起動を確認
http://localhost:8080
https://gyazo.com/56aab39d87ab6e6c5b058efd195376e0

tomcat自動起動設定

新規ファイルでtomcatのサービスファイルを作成

# vi /etc/systemd/system/tomcat.service

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

[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/opt/tomcat/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

反映

# systemctl daemon-reload

自動起動有効

# systemctl enable tomcat

user,groupはtomcatに変更

# chown -R tomcat:tomcat /opt/tomcat

自動起動の確認

# reboot

再起動後にステータスを確認。activeになっていること。

# systemctl status tomcat 
● tomcat.service - Apache Tomcat 9
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
   Active: active (exited)

念の為、pcブラウザで表示確認
http://[IPアドレス]:8080

Webアプリケーションマネージャの設定

webアプリの配備や管理をGUIで行えるようにする。
以下の記述をファイルに追加。※XXXXは自身の設定したい管理者名とパス

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

<role rolename="manager-gui"/>
<user username="XXXX" password="XXXX" roles="manager-gui"/>

外部端末からもアクセスを可能にする。
現状では、localhostからしかアクセスできない為、allowの設定を修正

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

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

再起動し、設定反映

# systemctl restart tomcat

外部からアクセス
http://IPアドレス:8080/manager/html
https://gyazo.com/fd312f8dc485aa6a6e44b7270cc5b0a7

無事、表示されればOK

Apache httpdのインストールと設定

インストール

# yum install httpd

確認

# httpd -version
Server version: Apache/2.4.6 (CentOS)
Server built:   Apr 20 2018 18:10:38

firewall設定

# firewall-cmd  --add-service=http  --permanent
# firewall-cmd --reload

Apache自動起動設定

# systemctl enable httpd

設定確認
enabledになっていることを確認

# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: inactive (dead)

サービス起動確認
reboot後、ステータスを確認

# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running)

AJPプロトコルでapacheとtomcatの連携

AJPプロトコルの設定があることを確認

# view /opt/tomcat/conf/server.xml

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

モジュールの有効設定
以下の2つのモジュールを確認。コメントされていれば、コメントをとる。

# vi /etc/httpd/conf.modules.d/00-proxy.conf

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

これだけでは、有効にしただけなので、続けてApache httpdのリクエストをすべてtomcatに引き渡す為の設定を追加。

ProxyPass / ajp://localhost:8009/

Apache httpdの再起動を行い、起動を確認

# systemctl restart httpd

https://gyazo.com/2fe182fbafc4bd9b07cbbe83609221ed

ポートを8080にしなくてもApache httpdから引き渡され、tomcatを起動できることを確認

今回の作業では、tomcatのWebアプリケーションマネージャの外部アクセスがハマリポイントだった。設定ファイルの格納先が、ググッて出てきたものの多くがハズレで、経験豊富な上司に相談して、やっと解決できた。
これで、一旦、サーバサイドの環境構築は完了。データベースに関しては、テーブル設計も絡んでくるのでjava開発時にまとめて行うこととする。
次回は、html、Bootstrapあたりの作業をまとめて、掲載する予定。

6
4
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
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?