環境
・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
//↓追記
ServerName localhost
> chown 644 fqdn.conf
> a2enconf fqdn
> systemctl restart apache2
セキュリティ強化のため、バージョンを隠す設定を入れます。
・/etc/apache2/apache2.conf
//↓最終行に追記
ServerSignature Off
サービスの自動起動設定
> systemctl enable apache2
//ついでに設定反映のためのサービス再起動
> systemctl restart apache2
ファイアウォールの穴あけ
> 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
//↓追記
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にアクセスするときのユーザを設定する。
//↓追記
<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
ファイアウォールの穴あけ
> 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
ファイアウォールの穴あけ
> ufw allow 3306
> ufw enable
> y
//確認
> ufw status
データベースの構築
以下のコマンドでrootとしてmysqlにログインする。
> mysql -u root -p
以下の記事のコマンドを参考に、データベースを構築します。
https://qiita.com/ksugawara61/items/9db198041dec159ed0fe
外部接続用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アドレス。
//↓追記
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の記述をコメントアウトして以下を追記する。
//↓追記
<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の後に指定したキーワード」は今回「/」なので省略して大丈夫です。