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系のディストリビューション(DebianやUbuntu)のパッケージ管理システムであるAPT(Advanced Package Tool)ライブラリを利用してパッケージを操作・管理するコマンドです。
Nginxをインストール
nginx news にアクセスし、「download」をクリック。
画面下のほうに、Linux用のものがあります。今回は「mainline version」を選択。
「/etc/yum.repos.d/nginx.repo」に下記内容を張り付けるのですが、「OSRELEASE」を各ディストリビューションに合わせる必要があります。
今回は、CentOS7を利用しているので、
name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=0 enabled=0
となるようです。Google Cloud Platformの仮想マシンにログインして(「sudo su」でスーパユーザーになってます。)、nginx.repoがあるか確認。
存在しないので、作成し編集します。
vi /etc/yum.repos.d/nginx.repo
「i」でINSERTモードになったら、設定を張り付けます。
「Esc」キーを押し、「:wq」で保存しviエディタを終了。
バージョンを確認します。
yum info --enablerepo=nginx nginx
yumでNginxのインストールを実行します。
yum -y install --enablerepo=nginx nginx
・CentOS7にnginxを導入&初期設定まとめ | vdeep
インストールされたか確認。
nginx -v
「nginx -V」で詳細が確認できるみたいです。
nginx -V
起動確認。
nginx ps aux | grep -e nginx
Google Cloud Platformのダッシュボードの「Compute Engine」>「VMインスタンス」の「外部 IP」をクリックするとブラウザでNginxのデフォルト画面が確認できるらしい。
接続が拒否されてるやん....
と思ったら、「https」で接続してたのがいけないみたい。「http://外部IP」でいけました。「https」(SSL接続)するにはいろいろ設定が必要なようです。
・nginxでSSL通信(https)を有効化する[GCE] - ゼロからはじめるWEBプログラミング入門
とりあえず、一旦、Nginxを停止。
nginx -s stop
NginxのリバースプロキシでTomcatと連携
まずは、Nginxの設定ファイルの場所を確認。
cd /etc/nginx/conf.d ls
「default.conf」という設定ファイルが確認できます。
Nginxの設定ファイルを編集するのですが、まずは設定ファイルのバックアップを作成しておきます。
cp default.conf default.conf.orig
「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
「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エラーも!
でも、一応、Nginxへのアクセス(Webサーバーの80番ポートへのアクセス)がTomcatにプロキシーされてるようです。
・Eclipseの小径 第1歩 開発環境の導入 Tomcat9のダウンロードとインストール
⇧ のサイトによりますと、Tomcat 9 のtar.gzファイルを xzvf で展開すると権限が750になってしまうようで、それが関係しているかもです。
実際に確認すると、青い文字のファイルはすべて権限が750になっているようです。
⇩ ファイルやディレクトリの権限の変換は下記サイトが詳しいです。
・ファイルやディレクトリのパーミッションを一括で置換したい - 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
確認。変更されました。
Tomcat、 Nginxを再起動するも変わらず ...。
だが、しかし、『http://外部 IP/examples』にアクセスしたら、/opt/tomcat/webapps/examplesにはアクセスできてるっぽいです。
う~ん、/opt/tomcat/webapps/ にローカル環境で作ったプロジェクトフォルダを置けば良いってことなのかな?
怪しいのは、/opt/tomcat/webapps/ROOT/ の中身がどうも、Tomcatのデフォルトのページっぽいんですが、なぜか表示できないという、おそらく権限の問題かと思われますが。
Tomcatのデフォルトのページは表示されなかったけど、ひとまず、Nginx経由でTomcatが表示されるということで。
Tomcat 9 を入れといて何ですが、実際に使う場合は、Tomcat 8までにといたほうが良いみたいですね。
そして、今回、SELinuxは無効化してないとは思いますが、
なんか上手くいかないときは、SELinuxが邪魔してる時もあるようなので、無効化しちゃいましょう。
⇩ 無効化については下記サイトへ
・CentOS 7 : SELinux : 動作モードの設定 : Server World
次回は、MySQLを導入していきたいと思います。Tomcatの接続問題も少しづつ調査していきたいと思います。
・Nginxによるリバースプロキシの設定方法 - Qiita
・Tomcatいれてnginxと連携してみた話 - なおすけの落書き帳
今回はこのへんで。