GCP上のNginxでSpringBootのアプリを動かす

スポンサーリンク
IT
スポンサーリンク

GCP上のNginxでSpringBootのアプリを動かす(前編)

前回は、GCPでGCEをセットアップして簡単なWebサーバを立ててみました。
今回は、SpringBootのアプリケーションをWebサーバ上で動かそうと思います。

準備するもの
  • GCPの利用開始登録済みのGoogleアカウント
  • SpringBootアプリケーションのJARファイル

VMインスタンスの作成

GCPの管理コンソールにログインして、GCEのインスタンスを作成します。

Google Cloud プラットフォーム
Google Cloud Platform では、Google と同じインフラストラクチャでアプリケーション、ウェブサイト、サービスを構築、導入、拡大することができます。

インスタンス名は何でも良いです。今回は「springboot-nginx」としました。
GCEは最小構成で作成します。

OSはCentOSにして、ファイアウォールはHTTPとHTTPSの穴あけしておきます。

インスタンスの生成が終わると、リストに追加されますので、SSHをクリックしてください。

JDK、Nginxのインストール

このような画面が表示されれば、無事にインスタンスに接続完了です。
まずは必要なアプリケーションをインストールします。

  1. JDK … Javaの実行環境
  2. Nginx … Webサーバ
(1) JDK
$ sudo yum install java-11-openjdk -y
(2) Nginx
$ sudo yum install nginx -y

私がバリバリ開発していた頃は、Webアプリと言えば、Apache-Tomcat、Strutsで開発が主流でした。定番のApacheを入れようと思ったのですが、今はNginx(エンジンエックス)が主流のようです。大量同時アクセス問題が解決されて、メモリの使用量も抑えられていて軽いとのことです。

そんなこと言われると、簡易Webサーバなんじゃないの!?と思ったんですが、リバースプロキシやリライト等も実装していて、なんだ、時代はNginxか。

Nginxの設定

-- Nginxの設定ファイル格納場所へ移動
$ cd /etc/nginx

-- オリジナルの設定ファイルをバックアップ
$ sudo cp -r nginx.conf nginx.conf.bak

-- ngin設定ファイル編集
$ sudo vi nginx.conf

設定ファイルで編集する部分は、赤色文字の部分だけでイケました。
(注)nginx version: nginx/1.12.2 他のバージョンではこれ以外の修正が必要かもしれません

(Httpセクション以外は変更なし)
http {
    (serverセクション以外は変更しないので省略)
    server {
        (serverセクション内は、赤字以外は変更なし)
        location / {
            proxy_pass http://localhost:8080;
        }
        #error_page 404 /404.html;
        #   location = /40x.html {
        #}
        #error_page 500 502 503 504 /50x.html;
        #   location = /50x.html {
        #}
}
  • Nginxのドキュメントルートへのアクセスは、すべて8080番ポートで動作しているSpringBootのアプリケーションに引き渡すという設定を追加しています。
  • エラーページは実物のHTMLファイルを用意しないとダメっぽいので一旦コメントアウトしました。
2020.06.29 追記

別バージョンのNginxでWebサーバ立ち上げたところ、この設定だけではリバースプロキシの設定が効かなくなってました。
今回のバージョン:nginx version: nginx/1.14.0 (Ubuntu)

どうやら、/etc/nginx/sites-enabled 配下のファイルでバーチャルホストの定義をしているものがあり、その場合それらの設定が効いてしまうので、しっかり設定するか、次の行の先頭に#を追加してコメントアウトすればOKです。

# include /etc/nginx/sites-enabled/*;

設定が完了したら、Nginxを起動してください。既に起動している場合は、再起動です。
・Nginx起動
$ sudo systemctl start nginx
・Nginx再起動
$ sudo systemctl restart nginx
・Nginx停止
$ sudo systemctl stop nginx
・Nginx状態確認
$ sudo systemctl status nginx

起動した後は、systemctl status を実行してエラーが出ていないことを確認してください。

コメント

タイトルとURLをコピーしました