저번 포스팅 때 EC2 서버를 열어보았다.
AWS 클라우드 서버 사용하기
AWS란? AWS(Amazon Web Service)라고 하는 클라우드 서비스를 이용해 클라우드(인터넷)상에서 컴퓨터(서버)를 빌려주어 웹 서비스를 배포할 수 있도록 해주는 서비스다. 회원가입 https://aws.amazon.com/ 클라
inhoru126.tistory.com
이번포스팅에는 애플리케이션을 배포해 보겠다.
Java 설치
지금 만들어진 서버는 아무것도 설치가 되어있지 않는 서버다 그렇기 때문에 자바와 환경변수설정 여러 설정 등등 을해줘야한다.
1. JAVA 설치
# 1. apt update
$ sudo apt-get update
# 2. java 설치
$ sudo apt-get install openjdk-17-jdk
# 3. java 설치 확인
$ java -version
$ javac -version
애플리케이션을 실행 한할 거면 JRE만 설치해도 된다.
JRE = 자바 실행 환경. 단순하게 자바 프로그램을 실행만 가능하고 개발은 X
JDK(JRE도 포함) = 자바 실행뿐 아니라 개발도 OK
위와 같이 나온다면 설치가 완료된 거다.
2. 환경변수
$ sudo vi /etc/profile
shift + g를 누르면 맨 아래로 내려간다.
그 후 i를 눌러서 편집모드로 변경 후
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
위와 같이 적은 후 esc를 눌러 편집모드 종료 후 :wq로 저장 후 종료시키면 된다.
# 수정내용 저장
$ source /etc/profile
저장 후 아래 명령어를 통해 확인할 수 있다.
# 환경변수 확인
$ echo $JAVA_HOME
# /usr/lib/jvm/java-17-openjdk-amd64
톰캣 설치
SpringBoot를 jar파일로 했다면 서버에 jar를 그대로 올려서 배포할 수 있겠지만
이번 포스팅에서는 war파일을 배포해 보겠다.
이유는 내가 올리려는 애플리케이션은 jsp로 만들어졌기 때문이다.
jar은 빌드 시 jsp파일이 들어있는 패키지를 포함하지 않는다.
통상적인 jar 빌드 시 web-inf 하단 패키지를 빌드 결과물에 포함하지 않기 때문에 jsp 파일을 읽어 들일 수 없으므로 404 에러 발생한다.
이 부분은 spring boot 공식문서에서 찾아볼 수가 있다.
Spring Boot Reference Documentation
This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although there is nothing particularly spe
docs.spring.io
war파일과 jar파일의 차이점은 둘 다 알축파 일을 확인할 수 있는 프로그램으로 직접 확인해 보면 차이점을 확인할 수 있다.
jsp가 들어있는 프로젝트를 jar로 하고 싶다면 아래와 같은 방법으로도 할 수 있다고 한다.
https://oingdaddy.tistory.com/427
Springboot + JSP 프로젝트 jar로 배포하는 방법
Template Engine으로 JSP를 사용한 springboot 프로젝트가 있다. springboot에서 공식으로 지원을 하지 않는 Template Engine이다보니 JSP를 사용할때 여러가지 불편한 점들이 있다. 하지만 SI에서는 쉽게 기술을
oingdaddy.tistory.com
하지만 이번포스팅은 톰캣을 사용해서 war파일을 배포하는 것이 목표라 따로 다루진 않겠다.
1. Wget으로 Tomcat 설치
https://tomcat.apache.org/download-90.cgi
Apache Tomcat® - Apache Tomcat 9 Software Downloads
Welcome to the Apache Tomcat® 9.x software download page. This page provides download links for obtaining the latest version of Tomcat 9.0.x software, as well as links to the archives of older releases. Unsure which version you need? Specification version
tomcat.apache.org
위 사이트에서 링크 주소를 복사해 주자
주소를 복사했다면 아래와 같이 wget [주소]를 입력한다.
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.85/bin/apache-tomcat-9.0.85.tar.gz
그 후 바로 압축해제를 시켜준다.
tar zxvf apache-tomcat-9.0.85.tar.gz
압축해제한 파일을 폴더명을 변경하는 동시에 옮겨준다.
sudo mv apache-tomcat-9.0.85 /usr/local/tomcat9
그 후 server.xml파일을 열어 인코딩을 설정해 준다.
sudo vi /usr/local/tomcat9/conf/server.xml
이분을 찾아서 아까처럼 편집모드에 들어가서
URIEncoding="UTF-8"
을 작성해 주고 저장해 준다.
2. Tomcat 환경변수
톰캣도 마찬가지로 환경변수를 설정해 주자
sudo vi /etc/profile
JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
CATALINA_HOME=/usr/local/tomcat9
CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib-jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar
PATH=$PATH:$JAVA_HOME/bin:/bin:/sbin
export JAVA_HOME PATH CLASSPATH CATALINA_HOME
아까와 같이 profie로 들어가서 작성해 주면 되는데
여기서 Java를 설치할 때 설정해 주었던 환경변수에 추가해서 작성해 주면 된다.
위와 같은 방식으로 바꿔주면 된다.
export도 변수처럼 사용해서 한번 해 하도록 바꿀 수가 있다.
source /etc/profile
그 후 설정한 것을 저장해 주자
echo $CATALINA_HOME
/usr/local/tomcat9
java를 설치할 때 환경변수를 확인한 것처럼 똑같이 확인해 준다 우와같이 나온다면 설정이 완료된 것이다.
sudo apt-get install net-tools
# 사용중인 포트번호확인(기본8080)
netstat -tulpn
위의 명령어는 톰캣을 사용 중인 포트번호를 볼 수 있다 기본이 8080이기에 그대로 쓸 거면 나 두고
바꾼다면 위에 server.xml 에서 포트번호를 변경해서 사용한다.
3. 톰캣 실행
이제 기본설정은 완료했으니 톰캣을 실행하면 된다.
톰캣 시작 /usr/local/tomcat9/bin/startup.sh
톰캣 끝 /usr/local/tomcat9/bin/shutdown.sh
그리고 자신의 8080으로 접속한다면 접속이 불가능하다.
그 이유는 아무것도 임의로 건드리지 않았을 때AWS의 기본 보안정책은 인바운드는 모두 거부, 아웃바운드 모두 허용이기 때문이다.
그러므로 보안그룹에서 8080 포트를 만들어줘야 한다.
이런 식으로 사용자지정 TCP에 포트범위에 8080 포트를 추가해 주면 된다.
이제 다시 8080으로 들어가 보면 아래와 같은 톰캣 화면이 나온 다면 성공이다.
3. 서버에 애플리케이션 이동
이번포스팅은 로컬에서 build를 한 채로 war파일만 서버로 옮겨보겠다.
옴 기는 방법은 다음과 같이 있다.
1. git을 이용해 repository를 복사
2. 명령어를 통해 복사
3. FileZilla 혹은 Putty 프로그램을 통해 전송
위방법 중 편한 걸 사용하면 된다.
이번 포스팅에서는 FileZilla를 이용해 보겠다.
명령어가 궁금한 사람들을 위해 간단히만 예시만 보여주겠다.
scp -i [키페어위치] -r [보낼폴더/파일위치] [퍼블릭 IPv4 DNS:저장할 위치]
scp -i key.pem C:\Users\inho\desktop\lolcogg.war ubuntu@ec2-43-20.-..-..ap-northeast-2.compute.amazonaws.com:~/
위와 같은 식으로 명령어를 작성한다면 서버에 war파일이 들어가 있을 것이다 그파일을 복사하거나 이동시켜서 사용하면 된다.
1. filezilla 설치
https://filezilla-project.org/
위사이트에서 다운로드하면 아래와 같이 나올 텐데 사이트관리자를 눌러주자
- 새로운 사이트를 만들어 준다.
- 만든 사이트 클릭 후 우측의 설정으로 이동.
- 프로토콜: SFTP, 호스트: EC2 퍼블릭 IPv4 DNS 주소
- 로그온 유형: 키파일, 사용자명 입력, 키파일 위치 연결
- 연결
위와 같은 순서대로 진행해 준다.
성공한다면 위와 같은 화면이 나올 텐데
파일 질라 기준 왼쪽이 Local, 우측이 EC2이다.
우리는 톰캣을 이용할 거기 때문에
local에 있는 tomcat > webapp에 war파일을 옮겨주면 된다.
위와 같은 경로로 이동하여 마우스 드래그로 저 위치에 war파일을 옮겨주면 된다.
그러면 알아서 톰캣이 실행할 때 war파일을 풀어 폴더를 생성할 것이다.
그 후 8080/프로젝트명으로 접속한다면 서버에 올린 애플리케이션이 실행될 것이다.
4. TimeZone
만약에 실행이 되지 않는다면 여러 개의 상황이 있을 텐데 나 같은 경우는 타임존설정을 하지 않아 실패한 경우였다.
아무래도 애플리케이션 안에 시간을 관련한 내용이 들어가 있어서 그런 거 같다.
EC2를 처음 세팅하고 SSH로 접속하여 date 명령을 실행해 보면 시간이 한국 시간과 다르게 표시되어 있다.
UTC라고 하는 세계 표준 시간을 사용하기 때문에 오류가 발생한다.
$ timedatectl
이 명령 으를 입력 하면 아래와 같이 UTC로 나올 것이다.
$ sudo timedatectl set-timezone Asia/Seoul
위명령어를 통해 KST로 바꿔준다.
5. 무중단배포
실행까지는 잘되는데 서버를 꺼버리거나 터미널을 나가면 톰캣도 같이 꺼지는 경우도 있다.
그럴 땐 명령어를 통해 백그라운드실행을 해 무중단 배포를 할 수가 있다.
백그라운드 시작 nohup /usr/local/tomcat9/bin/startup.sh
백그라운드 끄기 kill -9 $(lsof -t -i:8080)
위와 같이 나온다면 성공한 거다.
6. 로그확인
톰캣실행하고 터미널에서 로그확인을 할 수 있는 명령어다.
톰캣 로그확인 tail -f /usr/local/tomcat9/logs/catalina.out
ctrl+c 로그종료
'개발 > AWS' 카테고리의 다른 글
AWS 클라우드 서버 사용하기 (0) | 2024.01.20 |
---|