WAS 서버 만드는 법을 정리해보자. 서버는 ubuntu 22를 os로 사용했다.
팀 프로젝트에선 OpenJDK 11을 사용했다. 아래 블로그를 참고해 자바를 설치할 수 있었다.
참고 블로그
apt 업데이트
$ sudo apt-get update && sudo apt-get upgrade
자바 설치
$ sudo apt-get install openjdk-11-jdk
설치 확인
$ java -version
환경 설정
$ vim ~/.bashrc
# ~/.bashrc
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
export PATH=$PATH:$JAVA_HOME/bin
$ source ~/.bashrc
환경 변수 확인
$ echo $JAVA_HOME
설정파일엔 외부에 노출되면 안되는 중요한 정보들이 저장되어 있다. 이런 중요한 정보를 보호하기 위해 깃허브에 application.yml을 올리지 않고 ec2에 직접 작성한 후 프로그램을 실행할때 주입하도록 하자.
우선 프로젝트에서 사용한 application.yml 파일이다. 숨겨야 되는 정보가 정말 많은것을 알 수 있다.
spring:
datasource:
url: jdbc:mysql://<rds엔드포인트>:<포트>/<접속하려는 db이름>?useSSL=false&serverTimezone=Asia/Seoul&characterEncoding=uft8mb4
driver-class-name: com.mysql.cj.jdbc.Driver
username: <mysql user id>
password: <mysql user password>
jpa:
hibernate:
ddl-auto: none
properties:
hibernate:
jdbc:
time_zone: Asia/Seoul
database: mysql # 밑에 추가한 에러를 해결하기 위해 추가
mail:
host: smtp.gmail.com
username: <메일 주소>
password: <메일 비밀번호?>
port: <smtp 포트>
properties:
mail:
smtp:
auth: true
starttls:
enable: true
security:
jwt:
token:
secret-key: <jwt secret key>
expire-length:
access: <access token 만료기간>
refresh: <refresh token 만료기간>
logging:
slack:
webhook_uri: <슬랙 웹훅 uri>
config: classpath:logback-spring.xml
level:
org:
hibernate:
type: trac
server:
servlet:
context-path: /api
젠킨스를 우선 사용하지 않기 때문에 수동 배포 파일을 직접 작성해야 한다.
수동 배포 파일은 chmod 명령어로 권한을 높여주자.
chmod 755 CD.sh
이제 수동 배포 파일을 작성해보자.
# ~/.bashrc
# 기존에 있던 clone 데이터 삭제
rm -rf 2022-sokdak
# 새롭게 깃허브에서 clone해옴
git clone -b dev --single-branch https://github.com/hyunrrr/2022-sokdak.git
# gradle이 있는 디렉터리로 이동 후 jar파일 빌드
cd /home/ubuntu/2022-sokdak/backend/sokdak
# build로 하면 테스트가 돌아서 bootJar로 빌드함
./gradlew bootJar
# jar파일이 있는 디렉터리로 이동 후 jar파일 실행
cd /home/ubuntu/2022-sokdak/backend/sokdak/build/libs/
nuhup java -Dspring.config.location=<주입할 application.yml 파일 위치> -Dspring.profiles.active=<코드에서 설정한 profile 값. 이는 실제 코드에 따라 필요없을수도 있고, 값이 다를수도 있음> -Djasypt.encryptor.password=<코드에서 설정한 encryptor.password 값. 이는 실제 코드에 따라 필요없을수도 있고, 값이 다를수도 있음> -Duser.timezone=Asia/Seoul -jar sokdak-0.0.1-SNAPSHOT.jar > nohup.out 2>&1 &
모든 준비는 끝났다. 이제 CD.sh을 실행시켜 자바 어플리캐이션이 정상적으로 동작하는지 확인해보자!!
처음 수동 배포를 했을때 마주친 에러이다. 구글링을 해보니 MySQl의 sql을 처리해줄 수 있는 dialect
의 값이 제대로 설정되지 않아서 나타나는 오류라고 한다.
따라서 application.yml
에 spring.jpa.database: mysql을 추가해주니 해결되었다.
참고 글을 보고 해결했다.
postman으로 ec2에 직접 api를 날려보았다. 특정 글 조회
api를 날렸는데 아직 데이터가 없어 에러가 반환되었다.
정말 제대로 날아갔는지 확인하기 위해 was의 log를 확인해보았다.
WAS에 정상적으로 요청이 들어온 것을 확인할 수 있었다!!
출처
https://codechacha.com/ko/ubuntu-install-open-jdk11/
https://velog.io/@gloom/Spring-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%97%B0%EB%8F%99-%EC%8B%9C-Access-to-DialectResolutionInfo-cannot-be-null-when-hibernate.dialect-not-set-%EC%98%A4%EB%A5%98