Java Eclipseの動的 WebプロジェクトをWebサーバで公開までの道のり Nginxのインストール

WebサーバーとしてNginxを導入していきたいと思います。Webサーバーを導入することで、ブラウザからWebサーバー(Nginxに限らず、だいたいのWebサーバーはデフォルトでポートが80番だと思われ、httpアクセスが80番、httpsアクセスが443番が一般的なので)にアクセスができると思われます。

ちなみに、Google Cloud PlatformのCompute Engineの仮想マシンでのNginxのインストールは、スーパユーザーになってない場合「sudo apt-get install nginx」でいけるようです。

すみません、「apt-get」は、CentOSでは使えないかもです。

apt-getコマンドは、Debian系のディストリビューションDebianUbuntu)のパッケージ管理システムであるAPT(Advanced Package Tool)ライブラリを利用してパッケージを操作・管理するコマンドです。

Linuxコマンド【 apt-get 】パッケージの操作・管理 - Linux入門 - Webkaru

 

Nginxをインストール

nginx news にアクセスし、「download」をクリック。

f:id:ts0818:20170828071146j:plain

画面下のほうに、Linux用のものがあります。今回は「mainline version」を選択。

f:id:ts0818:20170828071147j:plain

「/etc/yum.repos.d/nginx.repo」に下記内容を張り付けるのですが、「OSRELEASE」を各ディストリビューションに合わせる必要があります。

f:id:ts0818:20170828071148j:plain

今回は、CentOS7を利用しているので、

name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=0

となるようです。Google Cloud Platformの仮想マシンにログインして(「sudo su」でスーパユーザーになってます。)、nginx.repoがあるか確認。

f:id:ts0818:20170828071149j:plain

存在しないので、作成し編集します。

vi /etc/yum.repos.d/nginx.repo

「i」でINSERTモードになったら、設定を張り付けます。

f:id:ts0818:20170828071151j:plain

「Esc」キーを押し、「:wq」で保存しviエディタを終了。

バージョンを確認します。

yum info --enablerepo=nginx nginx

f:id:ts0818:20170828071152j:plain

yumでNginxのインストールを実行します。 

yum -y install --enablerepo=nginx nginx

f:id:ts0818:20170828071154j:plain

f:id:ts0818:20170828071155j:plain 

 

CentOS7にnginxを導入&初期設定まとめ | vdeep

インストールされたか確認。

nginx -v

f:id:ts0818:20170828071156j:plain

「nginx -V」で詳細が確認できるみたいです。

nginx -V

f:id:ts0818:20170828071157j:plain

起動確認。

nginx
ps aux | grep -e nginx

f:id:ts0818:20170828071200j:plain

Google Cloud Platformのダッシュボードの「Compute Engine」>「VMインスタンス」の「外部 IP」をクリックするとブラウザでNginxのデフォルト画面が確認できるらしい。

f:id:ts0818:20170828071201j:plain

接続が拒否されてるやん....

f:id:ts0818:20170828071202j:plain

と思ったら、「https」で接続してたのがいけないみたい。「http://外部IP」でいけました。「https」(SSL接続)するにはいろいろ設定が必要なようです。

nginxでSSL通信(https)を有効化する[GCE] - ゼロからはじめるWEBプログラミング入門

f:id:ts0818:20170828071205j:plain

とりあえず、一旦、Nginxを停止。 

nginx -s stop

f:id:ts0818:20170828071203j:plain

 

NginxのリバースプロキシでTomcatと連携

まずは、Nginxの設定ファイルの場所を確認。

cd /etc/nginx/conf.d
ls

f:id:ts0818:20170828071158j:plain

「default.conf」という設定ファイルが確認できます。 

Nginxの設定ファイルを編集するのですが、まずは設定ファイルのバックアップを作成しておきます。

cp default.conf default.conf.orig

f:id:ts0818:20170828105347p:plain

「default.conf.orig」というファイルが作成されたので、「default.conf」の編集で失敗とかしたら、 「default.conf.orig」の内容を持ってこれば初期状態に復活できます。

ですが、/etc/nginx/conf.d/ に設定ファイルを個別に作っていくほうが良いようです。

というわけで、/etc/nginx/conf.d/server.confを作成します。

vi /etc/nginx/conf.d/server.conf

f:id:ts0818:20170828071208j:plain

「i」でINSERTモードになって編集。

server {
    listen 80;
    server_name 【外部 IP】;
    access_log /var/log/nginx/tomcat_access.log;
    error_log /var/log/nginx/tomcat_error.log;
    location / {
        proxy_pass http://127.0.0.1:8080/;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

 

「Esc」キー を押し、「:wq」で保存。で、Google Cloud Platform側で、「ファイアーウォール ルール」でTomcatの追加もしておかないとアクセスできませんでしたので、アクセスできない場合は設定しといたほうが良いかと思われます。

Nginx、Tomcatを起動し、「http://外部 IP/」にアクセスするも、エラー!何回かアクセスすると500エラーも!

f:id:ts0818:20170829162111j:plain

f:id:ts0818:20170829190907j:plain

 

 

でも、一応、Nginxへのアクセス(Webサーバーの80番ポートへのアクセス)がTomcatにプロキシーされてるようです。 

Eclipseの小径 第1歩 開発環境の導入 Tomcat9のダウンロードとインストール

⇧  のサイトによりますと、Tomcat 9 のtar.gzファイルを xzvf で展開すると権限が750になってしまうようで、それが関係しているかもです。

実際に確認すると、青い文字のファイルはすべて権限が750になっているようです。

f:id:ts0818:20170829181427j:plain

 ⇩  ファイルやディレクトリの権限の変換は下記サイトが詳しいです。

ファイルやディレクトリのパーミッションを一括で置換したい - Qiita

とりあえず、見本サイトのように「bin」「lib」「webapps」 の3フォルダの権限を755に変更し、ファイルの権限は644になるようにします。シンボリックリンクの所有者がroot rootなのが気になりますが...。

chmod -R a=rX,u+w /opt/tomcat/bin
chmod -R a=rX,u+w /opt/tomcat/lib
chmod -R a=rX,u+w /opt/tomcat/webapps

f:id:ts0818:20170829183820j:plain

確認。変更されました。

f:id:ts0818:20170829183817j:plain

Tomcat、 Nginxを再起動するも変わらず ...。

f:id:ts0818:20170829190907j:plain

だが、しかし、『http://外部 IP/examples』にアクセスしたら、/opt/tomcat/webapps/examplesにはアクセスできてるっぽいです。

f:id:ts0818:20170829200944j:plain

う~ん、/opt/tomcat/webapps/ にローカル環境で作ったプロジェクトフォルダを置けば良いってことなのかな?

f:id:ts0818:20170829201254j:plain

怪しいのは、/opt/tomcat/webapps/ROOT/ の中身がどうも、Tomcatのデフォルトのページっぽいんですが、なぜか表示できないという、おそらく権限の問題かと思われますが。

f:id:ts0818:20170829202917j:plain

 

Tomcatのデフォルトのページは表示されなかったけど、ひとまず、Nginx経由でTomcatが表示されるということで。 

Tomcat 9 を入れといて何ですが、実際に使う場合は、Tomcat 8までにといたほうが良いみたいですね。

そして、今回、SELinuxは無効化してないとは思いますが、

f:id:ts0818:20170829220419j:plain

なんか上手くいかないときは、SELinuxが邪魔してる時もあるようなので、無効化しちゃいましょう。

⇩  無効化については下記サイトへ

CentOS 7 : SELinux : 動作モードの設定 : Server World

 

次回は、MySQLを導入していきたいと思います。Tomcatの接続問題も少しづつ調査していきたいと思います。

 

Nginxによるリバースプロキシの設定方法 - Qiita

nginxとTomcatの連携 - せかいろぐ

Tomcatいれてnginxと連携してみた話 - なおすけの落書き帳