🍎

Java Spring Boot と nginx でホームページ構築

2025/01/01に公開

環境

  • Linux Ubuntu 24.04
  • Java JDK 22.0.2

前提

  • 開発は完了している
  • サーバレンタル済み
  • ドメイン取得済み
  • SSL認証取得済み

初期設定

nginx インストール

プロキシを設定するためのパッケージ

apt install nginx

設定ファイルも書き換えておく

/etc/nginx/sites-available/default
server {
-   listen 80 default_server;
-   listen [::]:80 default_server;
+   listen 80;
+   listen [::]:80;

+   listen 443 ssl default_server;
+   listen [::]:443 ssl default_server;

+   ssl_certificate [SSL証明書ファイルのパス(.crt)];
+   ssl_certificate_key [秘密鍵ファイルのパス(.key)];
+   ssl_trusted_certificate [SSL中間証明書ファイルのパス(.crt)];

+   ssl_prefer_server_ciphers on;
+   ssl_protocols TLSv1.2 TLSv1.3;
+   ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';

+   add_header Strict-Transport-Security "max-age=63072000" always;

-   root /var/www/html;
-   index index.html index.htm index.nginx-debian.html;

-   server_name _;
+   server_name [ドメイン名];

    location / {
-           try_files $uri $uri/ =404;
+           proxy_pass http://localhost:8080;
    }
}

各設定項目についてはこちらを参考にした
Nginxに自己署名証明書を設定してHTTPS接続してみる

再起動前にテストすることもできる

nginx -t

tmux インストール

バックグランドでJavaを動かすためのパッケージ

apt install tmux

Java インストール

  1. Oracleからdebパッケージをダウンロード
wget https://download.oracle.com/java/22/archive/jdk-22.0.2_linux-x64_bin.deb
  1. ダウンロードしたパッケージをインストール
apt install ./jdk-22.0.2_linux-x64_bin.deb
  1. インストールできたか確認
java --version

サーバ起動

良い感じのユーザ作成

サーバを動作させるいい感じのユーザを作成

adduser [ユーザ名]

今後はユーザを切り替えて作業する

su [ユーザ名]

必要なファイルアップロード

jarファイルや、ssl証明書、ssl中間証明書、ssl秘密鍵などをアップロード

scp -i [sshキー] [送信するファイルのローカルパス] [リモートサーバのユーザ名]@[リモートサーバのIP]:~/

nginxの再起動を忘れずにする

systemctl restart nginx

Java サーバ起動/停止シェル作成

  1. サーバ起動シェルを作成
start.sh
#!/bin/bash

SESSION_NAME="server"

# 起動直後は念のため5秒待機する
sleep 5s;

# サーバを実行
export [環境変数名]=[環境変数]
tmux new -s $SESSION_NAME -d java -jar [jarファイルのフルパス]
  1. サーバ停止シェルを作成
stop.sh
#!/bin/bash

SESSION_NAME="server"

# サーバを停止
tmux kill-session -t $SESSION_NAME
  1. 実行権限を付与
chmod +x start.sh
chmod +x stop.sh
  1. 実行確認
./start.sh
tmux a -t "server"

ctrl+b d で戻れる

./stop.sh
tmux list-session

自動サーバ起動設定

サーバ起動シェルをserviceに登録しておく

server.service
[Unit]
Description=Java Server Runner
After=network.target

[Service]
Type=forking
Restart=on-failure

User=[ユーザ名]
Group=[グループ名]

WorkingDirectory=[jarを置いたディレクトリパス]
ExecStart=[jarを置いたディレクトリパス]/start.sh
ExecStop=[jarを置いたディレクトリパス]/stop.sh

[Install]
WantedBy=multi-user.target

デーモンのリロードとserviceの有効化

sudo systemctl daemon-reload
sudo systemctl enable server

サーバ(コンピュータ)を再起動して、動いていれば完了

Discussion