본문 바로가기
프로그래밍/Spark&Hadoop 공부

[AWS / Spring / Tomcat]aws spring war파일 배포시 주의할점 / 에러 해결법

by Mr.noobiest 2021. 7. 14.

 

AWS(Amazon Web Services)

AWS(Amazon Web Services)는 아마존에서 제공하는 웹 관련 서비스를 제공한다.

그중에서 AWS VM을 사용하면 웹 상에 사용가능한 서버를 생성할 수 있는데, 그냥 컴퓨터를 빌려주는 것이라고 생각하면 편하다. (ubuntu나 linux 운영체제를 가진 PC)

 


 

putty /  fileZilla

1. putty는 원격 접속을 하는것이고

2. filleZilla는 내 pc의 파일을 해당 PC로 보내는 것이라고 생각하면 된다.

 

 

AWS에 게시한 Spring Boot의 포트가 동작하지 않을 경우 해결법

 

application.yml에서 8080을 등록했다면 aws 보안규칙에서도 8080을 열어줘야 한다.

(톰캣은 기본적으로 8080이 기본 포트다)

application.yml 포트번호

 

application.yml의 포트번호를 확인 한뒤 AWS >  보안 > 인바운드 규칙에서 해당 포트를 열어줘야 한다.

포트번호 열기

 


 

 

Tomcat 에러가 발생한 경우

원인은 Spring boot의 내장된 Tomcat과 AWS에서 제공하는 운영체제 ubuntu의 Tomcat이 충돌해서 이다.

ubuntu의 Tomcat을 꺼줘야 한다.

 $ sudo service tomcat stop

위에처럼 톰캣을 꺼줘야지만 내가 설정한 port(8080)으로 충돌없이 실행된다.

 


 

war 파일 배포시 주의할점

일단 내가 사용하는 웹의 DB는 mysql을 사용하기로 했고 spring이 실행되는 설정도 웹을 기준으로 맞춰줘야 한다.

 

 

 


export로 생성한 war파일이 제대로 동작하지 않을때 해결법

 

프로젝트명 -> 우클릭 -> Run as -> 9 Maven install 선택 

이렇게 하면 spring 실행되듯이 자체 테스트를 하고 target 폴더에 

프로젝트명-0.0.1-SNAPSHOT.war 파일이 생성될것이다

 

이렇게 생성된 war파일을 사용하면된다,정확한 위치는 war파일 -> 우클릭 -> Propertise -> 파일경로 이동으로 바로 열면된다.

 

 

이렇게 생성된 war파일을 FilleZilla를 이용해서  /var/lib/tomcat9/webapps 폴더로 집어넣으면 된다.

webapps안에 war파일 , ROOT폴더 , Meta-INF 폴더가 같이있으면된다.

이후 putty로 접속한후 cd /var/lib/tomcat9/webapps까지 이동해서 ls로 정상적으로 파일이 있는지 확인한다.

java -jar war파일명.war 를 쳐주면 Spring 실행되듯이 자동으로 실행된다.

 

 $ java -jar war파일명.war

 


 

 

JAVA Runtime Error 해결

만약 실행되지 않고 JAVA 런타임 에러가 날경우 해당 war파일의 JDK버전과 Ubuntu에 설치된 버전이 다른것이다.

 

그럴경우 ubuntu의 java 버전을 변경하거나 프로젝트 -> 우클릭 -> Propertises -> Java Compiler에서 JDK 버전을 1.8이나 1.6으로 변경후 다시 war파일을 생성해서 교체 해주면된다.

 


 

 

Spring에서 생성한 DB를 관리하는 법(mysql workbench)

이후 생성된 DB를 관리하거나 데이터를 보려면

ubuntu-> sudo mysql -u root -p -> ubuntu 비밀번호와 동일 -> mysql이 실행되면 아래것들을 써준다.

 

spring  application.yml

 

create user 'userName'@'%' identified by 'password';

grant all privileges on *.* to 'userName'@'%';

 

 

이후 Mysql 워크벤치에 아래와 같이 입력해준다.

입력한후 test connection으로 테스트후 정상 접속이 되면 OK로 접속해주면된다.

 


 

AWS에서 실행한 Spring 계속 켜놓기(nohup)

그런데 우리가 굳이 이렇게까지해서 AWS 웹 서비스를 열게된 이유는 PC를 켜지 않아도 계속 웹 페이지가 동작하기를 원해서 이다.

그런데 spring을 끄면 당연히 웹페이지에 접속이 되지 않을 것이다.

java -jar 프로젝트명.war 대신에 아래처럼 쳐준다.

 $ nohup java -jar 프로젝트명.war

 

이렇게 하면 putty를 꺼줘도 aws의 인스턴스를 계속 켜져 있으므로 웹 페이지가 계속 표시될것이다.

이후에는 인스턴스IP:8080 인 주소를 도메인 주소를 빌려서 표시하면 깔끔해질 것이다.

 

 

끝.

728x90
반응형