🍎
Java Spring Boot と nginx でホームページ構築
環境
- 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 インストール
- Oracleからdebパッケージをダウンロード
wget https://download.oracle.com/java/22/archive/jdk-22.0.2_linux-x64_bin.deb
- ダウンロードしたパッケージをインストール
apt install ./jdk-22.0.2_linux-x64_bin.deb
- インストールできたか確認
java --version
サーバ起動
良い感じのユーザ作成
サーバを動作させるいい感じのユーザを作成
adduser [ユーザ名]
今後はユーザを切り替えて作業する
su [ユーザ名]
必要なファイルアップロード
jarファイルや、ssl証明書、ssl中間証明書、ssl秘密鍵などをアップロード
scp -i [sshキー] [送信するファイルのローカルパス] [リモートサーバのユーザ名]@[リモートサーバのIP]:~/
nginxの再起動を忘れずにする
systemctl restart nginx
Java サーバ起動/停止シェル作成
- サーバ起動シェルを作成
start.sh
#!/bin/bash
SESSION_NAME="server"
# 起動直後は念のため5秒待機する
sleep 5s;
# サーバを実行
export [環境変数名]=[環境変数]
tmux new -s $SESSION_NAME -d java -jar [jarファイルのフルパス]
- サーバ停止シェルを作成
stop.sh
#!/bin/bash
SESSION_NAME="server"
# サーバを停止
tmux kill-session -t $SESSION_NAME
- 実行権限を付与
chmod +x start.sh
chmod +x stop.sh
- 実行確認
./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