System.out.println("Java学習中");

【Java / Spring Boot】UI/UXの視点を活かしたバックエンド開発の学習ポートフォリオ

【AWSデプロイ奮闘記:第6回】GitHubからEC2へソースコードを運び込みビルドする

Adobe Fireflyで作成

🗺️ はじめに

前回の記事では、

EC2へMySQLをインストールして初期設定する手順

について解説しました。

📝 前回の記事はこちら 👇

blog.kenichikamoi.com

手元のPCにあるアプリの設計図(pom.xml)「Java 17用」に書き換わり、サーバー環境との足並みもバッチリ揃っています。

今回はいよいよ、完成したソースコードAWSサーバーダウンロード(お引っ越し)し、アプリを組み立てる「デプロイ完結編」です。

ターミナルを開き、EC2サーバーSSH接続した状態からスタートしていきましょう。


📥 サーバーへソースコードをダウンロードする

ステップ1:サーバーに「Git」をインストールする

まずはサーバー側にも、GitHubとやり取りするための通信ツール(Git)をインストールします。

以下のコマンドを実行してください。

sudo dnf install git -y

ステップ2:GitHubから「Clone(複製)」する

次に、ご自身のGitHubリポジトリからソースコードを丸ごとダウンロードします。

以下のコマンドをご自身のURLに合わせて実行してください。

git clone https://github.com/あなたのユーザー名/あなたのリポジトリ名.git

ステップ3:ダウンロードしたフォルダの中に入る

ダウンロードが完了すると、サーバーの中にアプリ名の新しいフォルダが作成されます。

そのフォルダの中へ移動します。

cd task-app

ステップ4:中身の確認(品質チェック)

移動したら、本当にファイルがサーバー内に届いているか確認しましょう。

ls -l

画面に pom.xmlsrc といったファイル名がズラッと表示されれば成功……と言いたいところですが、おそらく違うものが表示されたはずです。

🪆 マトリョーシカ状態の謎

ダウンロード自体は成功しています。

しかし、ファイル構造が「箱の中の箱(マトリョーシカ)」のような状態になっています。

画面には README.md と、青文字で task-app と表示された「もう一つのフォルダ」が存在しているはずです。

これは、一番外側の大箱の中に、さらに同名の小箱が作られ、その小箱の中にソースコードが収納されている状態です。

🚪 解決策:もう一つ奥の部屋へ進む

目的のファイルに会うためには、さらにもう一歩「奥の部屋」へ進むだけでOKです。

cd task-app をもう一度実行し、再度 ls -l を打ってみてください。

今度こそ、見慣れたファイルがズラッと表示されるはずです。


🛠️ ソースコードをビルド(組み立て)する

無事にソースコードの心臓部に到着しました。

さっそくアプリの組み立て(ビルド)を行いたいところですが、ここにもAWSLinux環境ならではの「罠」が潜んでいます。

ls -l の結果の mvnw(現場監督のファイル)の左側を見ると

-rw-r--r--

となっています。

これは、Windowsから持ってきたことで

Linux上での「実行権限」

が消えてしまっている状態です。

まずはこの権限を復活させ、そのあとにビルドを実行しましょう。

ステップ1:現場監督(mvnw)に実行権限を与える

chmod +x mvnw

実行後にもう一度 ls -l を打つと、mvnw の文字が緑色になり、権限が -rwxr-xr-x に変わるのが分かります。

ステップ2:ビルド(組み立て)を実行する

./mvnw clean package -DskipTests

💡 なぜ -DskipTests を付けるのか?

作成されたアプリは、起動時テスト時「データベース」に接続しようとします。

しかし、AWS上にはまだデータベースの器(RDS)を建設していません。

ここでテストまで走らせると「データベースが見つからない!」とエラーになってしまいます。

そのため、あえて「テストは一旦スキップして、箱詰めだけしてね!」と命令しています。

コマンドを打つと、インターネットから必要な部品が大量にダウンロードされます。

数分待って、最後に緑色の文字

[INFO] BUILD SUCCESS

と表示されれば、組み立ては完了です。


🧐 Linux特有の記号

今回登場したLinux特有の記号について

🎫 1. -rw-r--r-- の意味(ファイルの権限バッジ)

これは、Linuxの世界における

誰にどこまでの操作を許すか

という身分証のようなものです。

r (Read): 読むことができる

w (Write): 書くことができる

x (eXecute): 実行できる(プログラムとして動かせる)

Windowsから持ってきた直後の mvnw は、

読むことはできるけど、自律して動かす(x)ことは誰にも許可されていない、ただのテキストファイル

という状態でした。

だからこそ、chmod +x というコマンドを使って

実行する権限をプラス(+)して!

という処理を実行しました。

📍 2. ./ の意味(指差し確認)

ビルド時に打った ./mvnw の最初の ./ は、

「今自分がいるこの場所の」

という意味です。

Linuxセキュリティ上

今いるフォルダにあるプログラムは、勝手には実行しない

という安全第一なルールを持っています。

そのため、

他でもない、今ここにある mvnw を動かしてね!

と、明確に指差し確認(./)をしてあげる必要があります。


✍️ おわりに

「マトリョーシカの罠」「Linuxの実行権限の壁」を乗り越え、AWSサーバー上アプリBUILD SUCCESS を迎えました。

完成したアプリは、この階層に新しく作られる target というフォルダの中に、単一のファイル(.jar)として生成されています。

最後までお読みいただき、ありがとうございました🙇‍♂️


【プロフィール・作品置き場】

kenichikamoi.com


🎵 Youtube(楽曲一覧)はこちら

www.youtube.com