Lionz 배포 (aws)

이름이름·2023년 3월 5일
1

프로젝트 Lionz

목록 보기
7/10

배포 + DNS

aws로 배포 하고 DNS 설정하는 것 까지는
https://steady-coding.tistory.com/625
이 분을 따라했다!
(보안그룹->인바운드 규칙 에서 443port도 잊지말고 추가해줘야함)

  • DNS를 설정하는 이유 (출처 : 위의 분 블로그 중 발췌)
    DNS 설정 전에는 EC2의 퍼블릭 아이피를 이용해 스프링과 통신 중
    -> 하지만 외부에 퍼블릭 아이피를 공개하는 것은 위험하고, 숫자로 된 아이피를 기억하기 어려움
    -> 따라서 아이피를 우리가 보기 쉬운 문자 형태인 도메인으로 바꿈
    -> 이때 아이피를 도메인으로 바꿔 주고, 도메인을 다시 아이피로 변환하는 시스템을 DNS라고 함

배포 과정

MAC은 pem 키가 존재하는 디렉토리 경로로 이동한 다음
ssh -i Lionz.pem ubuntu@13.~
네이버 클라우드 이용시 root@13.~ 으로 해야됐었다
sudo apt update
sudo apt install openjdk-17-jdk

// 배포할 소스 코드 clone
$ git clone 주소
$ cd 클론한 파일

// Build
$ sudo chmod +x gradlew

$ ./gradlew clean build -x test (이거 안하면 빌드 느림..)
$ ./gradlew --debug build (mac은 --debug 추가해 줘야하는듯)

// Run
$ find ./* -name "*jar"
//지금보니까 바로 아래 명령어 말고 nohup으로 바로 해야 터미널을 꺼도 배포가 유지된다. (원래는 바로 아래있는 명령어 치고 nohup명령어를 쳤었음)
$ java -jar [jar 파일명] &
$ nohup java -jar [jar파일명] 1> [로그 파일명] 2>&1 &
(로그 파일명은 그냥 log.txt로 해도 무방)
이거 run전에 nohup먼저 하면 에러나니까 순서 주의하도록

참고로 & 는 &임

// 배포 중지
Ps -ef |grep jar
Kill -2 PID

http -> https

그리고 DNS 설정까지 완료했으면 http://주소:8080 이 아니라 https://주소 로 바꿔줘야 한다고 한다 (이유는 아직 모름)

https://hudi.blog/https-with-nginx-and-lets-encrypt/
이 분의 블로그를 참고해서 했는데
계속 하다가 안됐었는데 ssh 인증서까지 발급받으면
$ cd /etc/nginx/conf.d
$ sudo vim default.conf (sudo안하면 수정 안됨)
해서 확인해보면 위의 블로그처럼 default.conf파일 아랫부분에 뭔가가 추가되는데 중요한 건 나는 윗부분에

proxy_pass http://192.168.XXX.XXX:8080; 이렇게 뒤에 8080이 붙어야 하는데 실수로 붙이지 않았었다. 그래서 직접 :8080을 추가하고 다시 배포를 진행했더니 잘 되었다

(실행 예정)
추가적으로 https://steady-coding.tistory.com/626
에서 nohup 명령어를 이용해 터미널을 끄더라도 배포가 중지되지 않게 해야한다

전체 과정

제 프로젝트는 csrf설정이 되어있어서 주소가 http면 api 요청을 보낼 수가 없었습니다.
따라서 http가 아닌 https가 되도록 설정했습니다.

Nginx 설치

$ sudo apt update
$ sudo apt install nginx

프로젝트를 배포한 서버에서 이어서 위의 명령어를 입력해 Nginx를 설치해줍니다.

$ cd /etc/nginx/conf.d
$ vim default.conf

그리고 위의 명령어를 입력해 default.conf 파일을 생성해줍니다.

server {
    listen 80;
    server_name your.domain.com;

    location / {
        proxy_pass http://223.171.XXX.XXX:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
    }
}

그런 후에 default.conf에 위와 같은 내용을 작성해주면 되는데요!
위의 내용에서 일부분만 수정해서 저장하시면 됩니다.

  • your.domain.com -> 내도메인 같은 무료 도메인사이트에서 도메인을 하나 할당받고 할당받은 도메인주소를 써주면됩니다.
    저같은 경우는 간단하게 hanzu.p-e.kr과 같은 도메인을 이용했습니다

  • (proxy_pass 뒷 부분) 223.171.xxx.xxx 부분 대신에 -> 프로젝트를 배포한 서버의 public IP를 써주시면 됩니다.

그리고 저장하고 나오시면 됩니다.


그 후에 이어서 진행해보면

sudo snap install certbot --classic

를 입력해 certbot을 설치해줍니다.

  • certbot : SSL인증서를 쉽게 발급할 수 있게 도와주는 도구

sudo certbot --nginx

그리고 마지막으로 위의 명령어를 입력해 SSL인증서를 발급받게 됩니다.
위의 과정들이 성공적으로 진행되었다면 http://도메인 이 아닌 https://도메인의 형식이 된 것을 확인할 수 있으실겁니다!

주의사항

org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping

yml 파일 같은경우는 들여쓰기를 제대로 해주지 않으면 배포할 때 위와 같은에러가 난다

주의사항2

profile
공부 정리

0개의 댓글