하나씩 차근차근
article thumbnail
Published 2023. 1. 1. 23:24
AWS - 프로젝트 배포하기 AWS

이번 포스트에서는 AWS EC2 서버에 프로젝트를 배포해보겠습니다.

예제 프로젝트는 메타코딩님께서 깃허브에 올려두신 자료를 사용했습니다.

https://github.com/codingspecialist/aws-v1

 

GitHub - codingspecialist/aws-v1: ec2 서버에 스프링부트 프로젝트 배포하기

ec2 서버에 스프링부트 프로젝트 배포하기. Contribute to codingspecialist/aws-v1 development by creating an account on GitHub.

github.com

 

예제 프로젝트 받기

먼저 위 예제를 EC2 서버에 다운을 받아보겠습니다.

ubuntu@ip-172-31-12-184:~$ git clone https://github.com/codingspecialist/aws-v1.git
Cloning into 'aws-v1'...
remote: Enumerating objects: 41, done.
remote: Counting objects: 100% (41/41), done.
remote: Compressing objects: 100% (24/24), done.
remote: Total 41 (delta 2), reused 41 (delta 2), pack-reused 0
Unpacking objects: 100% (41/41), 61.65 KiB | 358.00 KiB/s, done.

pwd 명령어를 통해 확인해보면 다운이 완료된 것을 볼 수 있습니다.

ubuntu@ip-172-31-12-184:~$ ls
aws-v1
ubuntu@ip-172-31-12-184:~$ cd aws-v1/
ubuntu@ip-172-31-12-184:~/aws-v1$

 

실행권한 부여

ubuntu@ip-172-31-12-184:~/aws-v1$ ls -l
total 32
-rw-rw-r-- 1 ubuntu ubuntu 1016 Jan  1 22:52 README.md
-rw-rw-r-- 1 ubuntu ubuntu 1137 Jan  1 22:52 build.gradle
drwxrwxr-x 3 ubuntu ubuntu 4096 Jan  1 22:52 gradle
-rw-rw-r-- 1 ubuntu ubuntu 8070 Jan  1 22:52 gradlew
-rw-rw-r-- 1 ubuntu ubuntu 2674 Jan  1 22:52 gradlew.bat
-rw-rw-r-- 1 ubuntu ubuntu   24 Jan  1 22:52 settings.gradle
drwxrwxr-x 4 ubuntu ubuntu 4096 Jan  1 22:52 src

gradlew 파일을 통해 프로젝트를 .jar 파일로 변경하기 위해서는 먼저 gradlew 파일에 실행권한을 줘야합니다.

ubuntu@ip-172-31-12-184:~/aws-v1$ chmod u+x gradlew
ubuntu@ip-172-31-12-184:~/aws-v1$ ls -l
total 32
-rw-rw-r-- 1 ubuntu ubuntu 1016 Jan  1 22:52 README.md
-rw-rw-r-- 1 ubuntu ubuntu 1137 Jan  1 22:52 build.gradle
drwxrwxr-x 3 ubuntu ubuntu 4096 Jan  1 22:52 gradle
-rwxrw-r-- 1 ubuntu ubuntu 8070 Jan  1 22:52 gradlew
-rw-rw-r-- 1 ubuntu ubuntu 2674 Jan  1 22:52 gradlew.bat
-rw-rw-r-- 1 ubuntu ubuntu   24 Jan  1 22:52 settings.gradle
drwxrwxr-x 4 ubuntu ubuntu 4096 Jan  1 22:52 src

 

자바 설치

ubuntu@ip-172-31-12-184:~/aws-v1$ ./gradlew build

ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.

아직 EC2 서버에 자바가 설치되지 않았기때문에 gradlew 파일이 빌드되지 않습니다.

그렇기 때문에 jdk 11 버전을 다운받겠습니다.

ubuntu@ip-172-31-12-184:~/aws-v1$ sudo apt install openjdk-11-jdk
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  at-spi2-core ca-certificates-java fontconfig-config fonts-dejavu-core
  ...
Do you want to continue? [Y/n] y

sudo apt install openjdk-11-jdk 명령어를 입력하고 

Do you want to continue? [Y/n] 이라는 물음에는 y 를 입력하면 설치가 완료됩니다.

ubuntu@ip-172-31-12-184:~/aws-v1$ java --version
openjdk 11.0.17 2022-10-18
OpenJDK Runtime Environment (build 11.0.17+8-post-Ubuntu-1ubuntu220.04)
OpenJDK 64-Bit Server VM (build 11.0.17+8-post-Ubuntu-1ubuntu220.04, mixed mode, sharing)

openjdk 11 버전이 설치가 된 것을 알 수 있습니다.

sudo apt install openjdk-11-jdk 명령어 오류가 날 경우

(1) sudo apt update 실행

ubuntu@ip-172-31-12-184:~/aws-v1/build/libs$ sudo apt update
Hit:1 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu focal InRelease
Get:2 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu focal-updates InReleas                                                                                                                              e [114 kB]
Get:3 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu focal-backports InRele                                                                                                                              ase [108 kB]
Get:4 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Fetched 336 kB in 1s (251 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
18 packages can be upgraded. Run 'apt list --upgradable' to see them.

(2) openjdk-11 설치파일 확인

ubuntu@ip-172-31-12-184:~/aws-v1/build/libs$ sudo apt-cache search jdk | grep openjdk-11
openjdk-11-dbg - Java runtime based on OpenJDK (debugging symbols)
openjdk-11-doc - OpenJDK Development Kit (JDK) documentation
openjdk-11-jdk - OpenJDK Development Kit (JDK)
openjdk-11-jdk-headless - OpenJDK Development Kit (JDK) (headless)
openjdk-11-jre - OpenJDK Java runtime, using Hotspot JIT
openjdk-11-jre-headless - OpenJDK Java runtime, using Hotspot JIT (headless)
openjdk-11-source - OpenJDK Development Kit (JDK) source files
openjdk-11-demo - Java runtime based on OpenJDK (demos and examples)
openjdk-11-jre-dcevm - Alternative VM for OpenJDK 11 with enhanced class redefinition
openjdk-11-jre-zero - Alternative JVM for OpenJDK, using Zero
uwsgi-plugin-jvm-openjdk-11 - Java plugin for uWSGI (OpenJDK 11)
uwsgi-plugin-jwsgi-openjdk-11 - JWSGI plugin for uWSGI (OpenJDK 11)
uwsgi-plugin-ring-openjdk-11 - Closure/Ring plugin for uWSGI (OpenJDK 11)
uwsgi-plugin-servlet-openjdk-11 - JWSGI plugin for uWSGI (OpenJDK 11)

 

.jar 실행파일 생성

./gradlew build 를 입력해서 .jar 파일을 생성합니다.

ubuntu@ip-172-31-12-184:~/aws-v1$ ./gradlew build
Downloading https://services.gradle.org/distributions/gradle-7.3.3-bin.zip
...........10%...........20%...........30%...........40%...........50%...........60%...........70%...........80%...........90%...........100%

Welcome to Gradle 7.3.3!

Here are the highlights of this release:
 - Easily declare new test suites in Java projects
 - Support for Java 17
 - Support for Scala 3

For more details see https://docs.gradle.org/7.3.3/release-notes.html

Starting a Gradle Daemon (subsequent builds will be faster)

BUILD SUCCESSFUL in 2m 48s
6 actionable tasks: 6 executed

생성된 .jar 파일은 /aws-v1/build/libs 디렉토리에 있습니다.

해당 디렉토리로 이동해서 확인을 해봅시다.

ubuntu@ip-172-31-12-184:~/aws-v1/build/libs$ ls
v1-0.0.1-SNAPSHOT.jar

 

.jar 파일 실행

java -jar v1-0.0.1-SNAPSHOT.jar 을 입력해서 스프링부트 프로젝트를 실행합니다.

ubuntu@ip-172-31-12-184:~/aws-v1/build/libs$ java -jar v1-0.0.1-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.6.3)

2023-01-01 23:12:14.759  INFO 11167 --- [           main] com.metacoding.v1.V1Application          : Starting V1Application using Java 11.0.17 on ip-172-31-12-184 with PID 11167 (/home/ubuntu/aws-v1/build/libs/v1-0.0.1-SNAPSHOT.jar started by ubuntu in /home/ubuntu/aws-v1/build/libs)
2023-01-01 23:12:14.766  INFO 11167 --- [           main] com.metacoding.v1.V1Application          : No active profile set, falling back to default profiles: default
2023-01-01 23:12:17.011  INFO 11167 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2023-01-01 23:12:17.036  INFO 11167 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2023-01-01 23:12:17.040  INFO 11167 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.56]
2023-01-01 23:12:17.188  INFO 11167 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2023-01-01 23:12:17.189  INFO 11167 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2302 ms
2023-01-01 23:12:18.476  INFO 11167 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2023-01-01 23:12:18.505  INFO 11167 --- [           main] com.metacoding.v1.V1Application          : Started V1Application in 4.855 seconds (JVM running for 5.855)

브라우저를 통해 EC2 서버 ip주소:8080/aws/v1 에 접속하면 다음과 같이 페이지가 나타납니다.

EC2 서버의 콘솔창에도 로그가 뜨는것을 볼 수 있습니다.

2023-01-01 23:12:53.229  INFO 11167 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[lo                    calhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2023-01-01 23:12:53.236  INFO 11167 --- [nio-8080-exec-1] o.s.web.servlet.Dispat                    cherServlet        : Initializing Servlet 'dispatcherServlet'
2023-01-01 23:12:53.238  INFO 11167 --- [nio-8080-exec-1] o.s.web.servlet.Dispat                    cherServlet        : Completed initialization in 1 ms
2023-01-01 23:12:53.302  INFO 11167 --- [nio-8080-exec-1] com.metacoding.v1.web.                    HelloController    : /aws/v1 이 호출되었어요. info 로그 ########################

 

이 포스트는 유튜브에 올라온 메타코딩님의 AWS 강의를 보고 정리한 내용입니다.
https://www.youtube.com/@metacoding

 

'AWS' 카테고리의 다른 글

AWS - nohup을 통한 백그라운드 실행  (0) 2023.01.01
AWS - EC2 서버와 방화벽  (0) 2022.12.30
AWS - EC2 서버 접속하기  (0) 2022.12.30
AWS - EC2 서버 임대하기  (0) 2022.12.30
profile

하나씩 차근차근

@jeehwan_lee

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!