팀 프로젝트 이사하기 - WAS

조현근·2022년 12월 30일
0
post-thumbnail

WAS 서버 만드는 법을 정리해보자. 서버는 ubuntu 22를 os로 사용했다.

1. Java 설치

팀 프로젝트에선 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

2. application.yml 작성

설정파일엔 외부에 노출되면 안되는 중요한 정보들이 저장되어 있다. 이런 중요한 정보를 보호하기 위해 깃허브에 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

3. 수동 배포 파일 작성

젠킨스를 우선 사용하지 않기 때문에 수동 배포 파일을 직접 작성해야 한다.
수동 배포 파일은 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을 실행시켜 자바 어플리캐이션이 정상적으로 동작하는지 확인해보자!!

에러) Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

처음 수동 배포를 했을때 마주친 에러이다. 구글링을 해보니 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

profile
안녕하세요!

0개의 댓글