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
그리고 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가 되도록 설정했습니다.
$ 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을 설치해줍니다.
sudo certbot --nginx
그리고 마지막으로 위의 명령어를 입력해 SSL인증서를 발급받게 됩니다.
위의 과정들이 성공적으로 진행되었다면 http://도메인 이 아닌 https://도메인의 형식이 된 것을 확인할 수 있으실겁니다!
org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping
yml 파일 같은경우는 들여쓰기를 제대로 해주지 않으면 배포할 때 위와 같은에러가 난다