ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring Study 3주차 8장
    BackEnd/Spring 2022. 5. 1. 22:28

    Spring Boot와 AWS로 혼자 구현하는 웹 서비스 8장 : EC2 서버에 프로젝트 배포


    추가 기록사항

    7장 부분의 IntelliJ에서 RDS 연결하는 부분이 말썽이었는데, Intelli J 자체에서 연결하면 RDS 인바운드 규칙에 내 IP 주소를 등록해놨음에도!! 계속 연결이 거부되었다. 

     

    그래서 그냥 MYSQL WorkBench를 이용하였다. 

    이걸로 접속하면 성공한다. 워크벤치 버전이 상이한 탓에 warning은 뜨지만...

    이런식으로 책에 나오는 쿼리등을 입력하고 결과를 확인할 수 있다.

    Intelli J RDS연결 오류는 구글링해도 많이 나오는데 intellij ultimate 버전 사용이 부담스러우면 워크벤치는 무료니까 이거 쓰는것도 하나의 해결법이다. 


    8.1 EC2에 프로젝트 Clone 받기

    ✅ EC2에 배포하기 위해 putty로 EC2 서버에 접속해서 git 명령어를 설치해주고, 원하는 디렉토리를 생성하여 깃허브로부터 clone받아온다. 

    sudo yum install git
    git clone 깃허브 주소

    잘 받아졌으면 테스트를 검증하는데,  처음엔 권한이 없다는 메시지가 떠서 chmod (권한 부여)도 입력. 

    chmod +x ./gradlew
    ./gradlew test

    ✅ gradle을 설치하진 않았으나 gradletest는 수행이 가능하다?

    -> 프로젝트 내부에 gradlew파일이 존재하기 때문. 이 파일은 환경이나 버전이 다른 상황에서도 설치하지 않고 해당 프로젝트에 한해 gradle을 쓸 수 있도록 지원하는 wrapper 파일이다. 

     


    8.2 배포 스크립트 만들기

    📌 작성한 코드를 실제 서버에 반영하는 것을 배포라고 한다. 

    📌 배포할 때마다 개발자가 하나하나 명령어를 실행하는 것은 불편하니, 하나의 쉘 스크립트로 작성하자. 

     

    vim 으로 deploy.sh 생성후 편집

    위에서처럼 deploy.sh에 실행권한을 추가하고 실행하면 아래 화면처럼 나온다. 

    vim으로 nohup.out파일을 열어보면 아래처럼 failed 메시지가 기록되어있다. 

    우리가 gitignore로 github에 올리지 않았던 각종 설정 파일들이 존재하지 않기 때문이다!


    8.3 외부 Security 파일 등록하기

     

    gitignore에 있던 설정들을 가상 서버내에 직접 만들면 된다. 

    -> application-oauth.properties 파일을 step1이 아닌 app 디렉토리에 생성하고, 로컬에서 작업한 내용을 복붙!

    -> deploy.sh 파일이 이 properties를 사용하도록 수정하고 다시 실행

    nohup.out 파일을 확인해보면 정상적으로 실행된 것을 확인할 수 있다!


    8.4 스프링 부트 프로젝트로 RDS 접근하기 

     

    책과 다르게 위에 언급했듯, MYSQL 워크벤치 사용해서 작업하였다. 

    rds 테이블들을 먼저 생성한다. 

    use firstspring;
    create table posts (
    	id bigint not null auto_increment, 
        created_date datetime,
        modified_date datetime,
        author varchar(255),
        content TEXT not null,
        title varchar(500) not null,
        primary key(id)
    ) engine=InnoDB;
    
    create table user (
    	id bigint not null auto_increment,
        created_date datetime,
        modified_date datetime,
        email varchar(255) not null,
        name varchar(255) not null,
        picture varchar(255),
        role varchar(255) not null,
        primary key(id)
    ) engine=InnoDB;

    그리고 프로젝트 설정에 mariadb 드라이버 build.gradle에 등록하고, application-real.properties라는 파일을 생성, 깃허브에 push 한다. 

    implementation('org.mariadb.jdbc:mariadb-java-client')
    spring.profiles.include=oauth,real-db
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
    spring.session.store-type=jdbc

     

    EC2에도 deploy.sh가 real profile을 사용할 수 있도록 수정하고 deploy.sh를 다시 실행한다. 

    curl localhost:8080에서 html코드 잘 뜨는것도 확인!


    8.5 EC2에서 소셜 로그인하기

    -> naver, google에 ec2주소 등록하기 

    'BackEnd > Spring' 카테고리의 다른 글

    Spring Container  (0) 2022.07.31
    Spring 입문 강의 섹션 0 ~ 섹션 3  (0) 2022.07.29
    Spring Study 2주차 ~ 6장, 7장  (0) 2022.04.07
    Spring Study 2주차 ~ 5장  (0) 2022.04.06
    Spring Study 1주차 ~ 4장  (0) 2022.03.31
Designed by Tistory.