目標
Windowsで作ったspringbootプロジェクトをDebian上で動かしたい。
基本情報
- Java バージョン:17
- Spring Boot バージョン:3.3.6
- PostgreSQL バージョン:17.2
-
Debian バージョン:12.8
バージョンはこれに合わせて設定します。他のバージョンを使いたい場合はそれに合わせて適宜変更しながら行ってください
手順の概要
- サーバーに Java と PostgreSQL をインストールする。
-
Spring Boot アプリケーションの
jar
ファイルを配置する。 - ローカル環境のデータベースを dumpファイル を使って移行する。
- 実行する
Javaのインストール
まずは、サーバーに Java をインストールします。
以下のコマンドを実行してください:
apt update
apt install openjdk-17-jdk
Yes,NOを聞かれたらyと答えてください。
postgreSQLのインストール
次にpostgreSQLをインストールします。
公開鍵の取得
まずはPostgreSQLのリポジトリから取得するための公開鍵を取得します。
wget等をインストールして公開鍵を取得します。
以下のコマンドを実行してください
apt install wget
apt install gnupg
wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /usr/share/keyrings/postgresql-keyring.gpg
PostgreSQLのリポジトリをシステムに追加
次はシステムにPostgreSQLのリポジトリを追加していきます。
以下のコマンドを実行してください
echo "deb [signed-by=/usr/share/keyrings/postgresql-keyring.gpg] http://apt.postgresql.org/pub/repos/apt/ bookworm-pgdg main" > /etc/apt/sources.list.d/postgresql.list
その後更新します。
apt update
PostgreSQLをインストール
最後にPostgreSQLをインストールします。
以下のコマンドを実行してください:
apt install postgresql-17
以上で、postgeSQLのインストール完了です。
これでできない場合
- Debianのバージョンを確認してください。Debian12に対応する方法(追加しているPostgreSQLのリポジトリがDebian12用)なのでほかのバージョンだと、実行できないかもしれません。
jarファイルの配置
jarとは、javaのプロジェクトを一つのファイルにまとめて実行できるものです。
springbootのjarファイルを作成し、FTPソフトなどを使ってDebian上に配置します。
今回は、Debian上にhome/user/javaのディレクトリを作成しそこに配置します。
jarファイルの作成
JavaプロジェクトをVScode上で作成しかつMavenを使っているので、VScode上でターミナルを開き以下のコマンドを実行します。
./mvnw package
これで、targetディレクトリの直下に作成されます。
jarファイルの作成方法はいろいろありますが、これでできない人は調べてください。
参考までに、
- SpringBootで実行可能JARを作る | SpringHack
- SpringBootのJARファイル作成 | Skill-for-IT
- Spring Bootアプリケーションのビルドとデプロイ方法 | Kohei Life
その後FTPソフト等でファイルを配置してください、FTPの使い方は説明省略します。
DBの作成
ローカルのDBの内容をそのままDebian上にコピーする手順です。
postgreSQLの設定
まず、postgresユーザーにパスワードを設定します。
設定ファイルをテキストエディタで開いて設定を変更します。
今回はvimを使います
以下のコマンドで設定ファイルを開けます。
vim /etc/postgresql/17/main/pg_hba.conf
以下の行を見つけたら、peerをtrustに変換します。
local all postgres peer
その後再起動します。
service postgresql restart
今の作業で、postgres内にパスワードなしで接続することができます。
以下のコマンドでpostgresに接続します。
psql -U postgres
そして以下のコマンドを実行し、接続のためのパスワードを設定します。
なお、今回はパスワードに'postgres'としましたが、各自パスワードを設定してください。
ALTER USER postgres PASSWORD 'postgres';
パスワードを設定後、接続を解除し(\qを入力し接続解除)、先ほどと同じ方法で再度設定ファイルを開きます。
そして、先ほど変更した以下の行をもう一度変更し、trustをmd5に変換します。
local all postgres trust
最後に、先ほどと同じ方法で再起動します。
今の設定で、postgresに設定したパスワードをもとに接続できます。
DBの作成
ローカルのDBのバックアップを作成します。
pg_dump -U postgres -d DBname -F c -b -v -f "C:\path\to\backup\dumpname.dump"
-dにコピーしたいDB名を入力し、dumpファイル作成先のパスとdumpファイル名は各自で決めてください。
dumpファイルを作成したら、それをFTPソフト等を使ってDebian上に配置します。今回は先ほど作成したhome/user/javaに配置しようと思います。別にどこ置いたっていいです。
配置完了後、一度postgreSQLに接続し、バックアップしたDBと同じ名前のDBを作成します。
psql -U postgres
CREATE DATABASE DBname;
DB作成後、接続を解除し、以下のコマンドを実行しDBをコピーします。
DB名dumpファイル名は各自設定したものにしてください。
pg_restore -U postgres -d DBname -v /home/user/java/dumpname.dump
これで、DBがコピーされました。
実行
以下のコマンドを実行しjarファイルを実行します
実行時に、jarファイルの配置している階層に移動するか、パスを指定するかして実行してください。
実行時には、自分のjarファイル名を指定してください。
java -jar jarname.jar
これで完了です。