이번 포스트에서는 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 |