1
2

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 1 year has passed since last update.

Apache,Tomcat,MySQL Web3層システム構築(Ubuntu 18.04.3)

Last updated at Posted at 2022-08-17

環境

・Ubuntu 18.04.3 Desktop版
・Apache 2.4.29(Ubuntu)
・openjdk version 1.8.0_151
・Apache Tomcat 8.5.81
・mysql Ver 8.0.30 for Linux on x86_64 (MySQL Community Server - GPL)
・mysql-connector-java-8.0.30.jar

Ubuntu 18.04.3構築時の初期設定

以下の私の記事を参考していただけると幸いです。
https://qiita.com/maplejava/items/a11f2d14350231c9b2ef

JDBCドライバの配置

以下のサイトを参考に、JDBCドライバをインストールし、デプロイしたいWebアプリケーション内のWEB-INF/libフォルダ内に配置します。
https://qiita.com/Yuriko-Y/items/d4c5cb29780ce0347375

Webサーバ構築

Apacheのインストール

インストール
> sudo apt install apache2

・/etc/apache2/conf-available/fqdn.conf

fqdn.conf
//↓追記
ServerName localhost
> chown 644 fqdn.conf
> a2enconf fqdn
> systemctl restart apache2

セキュリティ強化のため、バージョンを隠す設定を入れます。
・/etc/apache2/apache2.conf

apache2.conf
//↓最終行に追記
ServerSignature  Off

サービスの自動起動設定

> systemctl enable apache2
//ついでに設定反映のためのサービス再起動
> systemctl restart apache2

ファイアウォールの穴あけ

FWの許可設定
> ufw allow 80
> ufw enable
> y
//確認
> ufw status

APサーバ構築

JDKのインストール

インストール
> sudo apt install openjdk-8-jdk

システム環境変数の追加

> export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
> echo $JAVA_HOME
> vi ~/.profile
~/.profile
//↓追記
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/"
export JAVA_HOME

※/etc/profileだと全ユーザに設定が適用される。
~/.profileなど~から始まるやつはそれを実行したユーザにのみ適用される。

Tomcatのインストール

インストール
> sudo apt install tomcat8 tomcat8-admin
> vi /etc/tomcat8/tomcat-users.xml

Manager Appにアクセスするときのユーザを設定する。

tomcat-users.xml
//↓追記
<user username="admin" password="password" roles="manager-gui,admin-gui"/>

※username(ユーザ名)、password(パスワード)は任意の値を入力する。

サービスの自動起動設定

> systemctl enable tomcat8
//ついでに設定反映のためのサービス再起動
> systemctl restart tomcat8

※以下のような警告が出るが、気にしなくてもよい。

tomcat8.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable tomcat8

ファイアウォールの穴あけ

FWの許可設定
> ufw allow 8080
> ufw enable
> y
//確認
> ufw status

WARファイルのインポート

APサーバと同じサブネットに所属するPC等からhttp:/[APサーバのIPアドレス]/:8080にアクセス。
→Manager Appをクリック。
→ユーザ、PWを聞かれるのでtomcat-users.xmlで指定した「username」「password」を入力する。
→「Tomcat Webアプリケーションマネージャ」画面の「WARファイルの配備」からデプロイしたいWARファイルをTomcatにインポートする。
※もしくはAPサーバの「/var/lib/tomcat8/webapps」直下にwarファイルを置いてもOKです。
→PCでhttp://[APサーバのIPアドレス]:8080/[WARファイル名]/[サーブレットのコンテキストパス]でアクセスできたら上手くいっています。

DBサーバ構築

MySQLのインストール

インストール
> wget https://dev.mysql.com/get/mysql-apt-config_0.8.23-1_all.deb
> dpkg -i mysql-apt-config_0.8.23-1_all.deb

その後、GUIのようなものが立ち上がるので、
MySQL Server & Cluster (Currently selected: mysql-8.0)
→mysql-8.0
→OK
の順に選択する。

インストール
> apt-get upgrade
> apt-get update
> sudo apt install mysql-server

その後またGUIが立ち上がってrootのパスワードを聞かれるので、任意のパスワードを入力してOKを選択する。

サービスの自動起動設定

> systemctl enable mysql

ファイアウォールの穴あけ

FWの許可設定
> ufw allow 3306
> ufw enable
> y
//確認
> ufw status

データベースの構築

以下のコマンドでrootとしてmysqlにログインする。

> mysql -u root -p

以下の記事のコマンドを参考に、データベースを構築します。
https://qiita.com/ksugawara61/items/9db198041dec159ed0fe

外部接続用DBユーザの作成と接続許可

外部接続用DBユーザの作成
mysql> CREATE USER ユーザ名@'[APサーバのIPアドレス]' IDENTIFIED BY '接続時のパスワード';
接続許可
mysql> GRANT ALL PRIVILEGES ON データベース名.テーブル TO ユーザ@'[APサーバのIPアドレス]';
//MYSQLサービス再起動
> systemctl restart mysql

※データベース名.テーブルはアスタリスク「*」も使える。例えば「*.*」ですべてのDB、すべてのテーブルへのアクセスを許可する。
また「データベース名.*」でそのデータベースのすべてのテーブルへのアクセスを許可する。

Apache Tomcatの連携

・設定後のイメージ
クライアント端末→Webサーバ(80番ポート)→APサーバ(8009番ポート)
※元々APサーバ(Tomcat)では8080番ポートを受け付けている。

ファイアウォールの穴あけ

APサーバで以下のコマンドを実行する。

//ナンバー付きでFWの設定を表示
> ufw status numbered	
//8080ポート開放設定を削除(8080が2番目の設定である場合)
> ufw delete 2
//8009を新規に開放
> ufw allow 8009
> reboot
//確認
> ufw status

Webサーバ

> sudo a2enmod proxy
> sudo a2enmod proxy_ajp
> vi /etc/apache2/apache2.conf

※192.168.1.11はTomcatサーバのIPアドレス。

apache2.conf
//↓追記
ProxyPass / ajp://192.168.1.11:8009/
ProxyPassReverse / ajp://192.168.1.11:8009/
サービス再起動
> systemctl restart apache2

APサーバ

・/etc/tomcat8/server.xml

> vi /etc/tomcat8/server.xml

8080の記述をコメントアウトして以下を追記する。

server.xml
//↓追記
   <Connector protocol="AJP/1.3"
               port="8009"
               redirectPort="8443"
               address="0.0.0.0"
               secretRequired="false" />

これで設定は完了です。
http://192.168.1.10/[ProxyPassの後に指定したキーワード]/[warファイル名]/[サーブレットのコンテキストパス]でアクセスできたらタイトルの通り目標達成です!
※192.168.1.10はWebサーバのIPアドレス。ポート番号は指定しない。
※「ProxyPassの後に指定したキーワード」は今回「/」なので省略して大丈夫です。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?