📚 Spring 프로젝트의 서버를 gcp를 이용해 올리는 방법을 정리해 보겠습니다..! 매번 계속 찾아 하기 귀찮아서 요걸로 종결시키겠습니다. 계정은 아직 계속 지속될 서버를 올릴만한 일이 없는 관계로 무료계정을 파서 진행하는 방식으로 해보겠습니다!
📙계정 만들기
계정 하나를 새로 만들고, GCP 사이트에 들어가서 계정 인증을 진행해줍니다. 간단한 개인정보와 카드 정보를 입력하고 나면 무료 크레디트를 받은 것을 확인할 수 있습니다.
📘 DB 생성
제품 > 데이터베이스 만들기 클릭 > 데이터베이스 엔진 선택 (저는 mysql을 선택했습니다.)
cloud 버전 선택 등등을 진행하는데, 개인프로젝트 수준에선 가장 낮은 가격대로 설정해도 문제가 없습니다.
사용하지 않을 때는 끄는 것이 좋은것 같습니다.
https://cloud-allstudy.tistory.com/1989 참조하기 좋은 링크입니다.
어느정도 기본 세팅이 되면 크게 3가지를 해줘야 합니다.
1. 연결 > 네트워킹 > 네트워크 추가 > 0.0.0.0/0으로 해줘야 스프링에서 접근이 가능합니다.
2. cloud sql admin api 활성화
3. 데이터베이스 생성
여기까지 설정을 완료해줬으면, 스프링의 application.properties에서
spring.application.name= 설정한 db 이름
spring.datasource.url=jdbc:mysql://공개ip 주소:3306/car?useSSL=false&autoReconnect=true&serverTimezone=Asia/Seoul
spring.datasource.username= gcp설정 id
spring.datasource.password= gcp설정 pw
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
위와 같이 설정을 해주고 돌려보면 정상적으로 되는지 알 수 있습니다.
postman에서도 정상적으로 반응하는지 확인해 주면 db설정은 완료됩니다.
📗 spring 서버 올리기
db까지 올리는 것을 완료했는데요, 이제 본체를 서버로 올려보겠습니다.
1. vm 인스턴스 생성
2. 이름 작성 > 머신 구성 E2 > 머신 유형 저는 e2-micro로 하겠습니다.
3. 부팅 디스크는 ubuntu 로 진행했습니다.
4. 방화벽은 http, https 트래픽 허용 처리 해주고, 만들기 진행합니다.
이제 intellij 에서 jar 파일을 추출해야 하는데, 다른 방식보다는 Gradle task에서 build> bootjar를 클릭하면 build/libs에 생성되는 jar파일을 올려줄 겁니다.
여기서 먼저 방화벽 작업 먼저 해줍니다. 다시 GCP 메인에서 vpc 네트워크 > 방화벽에 들어가 줍니다.
여기서 소스 ipv4 범위에 0.0.0.0/0을 추가해주고, tcp에 사용할 포트 번호인 8080을 입력해 줍니다.
sudo apt update
sudo apt-cache search openjdk
sudo apt-get install openjdk-17-jre
sudo apt-get install openjdk-17-jdk
java --version까지 진행해 줍니다.
jar파일을 업로드해주고,
매번 여기서 삽질하는데
vi /etc/systemd/system/${service name}.service
[Unit]
Description=Service Description
After=syslog.target network.target postgresql.service
[Service]
ExecStart=/bin/bash -c "exec java -jar jar위치 그대로"
Restart=on-failure
RestartSec=10
User=root
Group=root
[Install]
WantedBy=multi-user.target
sudo systemctl status car.service를 하면 돌아가는지 확인가능하다.
이렇게까지 하면 외부 ip로 접근 시에 구동이 가능해진다.
https://alisyabob.tistory.com/450 > 참고 페이지!
'CSE' 카테고리의 다른 글
[Spring Jwts] parser() 와 parserBuild() (0) | 2024.07.18 |
---|---|
[Flutter] DART 기본문법 (1) | 2024.02.07 |
[프로그래머스] ComponentScan, @Service (0) | 2023.07.19 |
springboot 게시판 따라만들기2 (0) | 2023.06.01 |
SpringBoot 게시판 따라만들기1 (0) | 2023.06.01 |
댓글