나의 SpringBoot 프로젝트는 Jar, Gradle을 사용하고, DBMS는 Postgresql을 사용했다.
이 프로젝트를 AWS EC2에 배포하고, nginx와 ACM, Route53, LoadBalacer 를 사용해서 도메인과 인증서까지 적용하는 방법을 정리한다.
이후에는 Jenkins를 사용해서 자동 배포하는 법까지 알아볼 것이다.
https://aws.amazon.com/ko/
위 사이트에서 회원가입을 하고 로그인 한다.
로그인 후 우측 상단에서 위치를 서울로 설정한다.
서비스 검색창에 EC2 를 검색하고 인스턴스 시작을 누른다.
이름을 지정하고, 애플리케이션 및 OS 이미지는 Amazon Linux 2를 선택한다.
인스턴스 유형은 프리티어 가능한 t2.micro를 선택한다.
프리티어는 12개월 무료이지만, 메모리 4기가 이상이어야 좋다.
키페어가 없다면 새 키페어 생성을 누른다.
키페어 이름을 적고 키페어 유형과 프라이빗 키 파일 형식을 설정한다.
해당 키파일은 특정 디렉터리에 저장한 뒤, 해당 경로로 가서 sudo chmod 400 파일명
명령어로 권한을 줘야한다.
네트워크 설정은 아래처럼 https, http 일단 다 허용하고 위치 무관 애니웨어(0.0.0.0/0)으로 해야 웹에서 접근 가능하다.
ssh는 보안상 자신의 IP만 허용하는 것이 좋다.
프리티어는 최대 30gb 지원되므로 스토리지 구성은 아래처럼 설정한 뒤 인스턴스 시작을 클릭한다.
curl -s "https://get.sdkman.io" | bash
sdk list java
sdk install java 17.0.4-amzn
sdk install maven 3.8.6
sdk install gradle 7.4.1
sudo yum install git
git clone 깃헙repo 주소
gradle clean build -b build.gradle
curl localhost:8080
sudo amazon-linux-extras install postgresql10 epel -y
sudo yum install postgresql-server postgresql-devel -y
sudo /usr/bin/postgresql-setup --initdb
sudo su
cd /var/lib/pgsql/data
vim postgresql.conf
sudo service postgresql restart
vim /var/lib/pgsql/data/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5 # <-- 수정된 부분
# IPv6 local connections:
host all all ::1/128 md5 # <-- 수정된 부분
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 ident
host all postgres(유저이름) 0.0.0.0/0 md5 # <-- 추가된 부분
host replication all ::1/128 ident
sudo su - postgres
명령어로 postgres에 접속한다.alter user 유저이름 with password '비밀번호';
create database 데이터베이스이름 with owner postgres;
sudo amazon-linux-extras install nginx1
sudo systemctl start nginx
curl localhost
sudo su -
cd /etc/nginx
vim nginx.conf
location / {
sendfile off;
proxy_pass http://127.0.0.1:8080;
proxy_redirect default;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
proxy_max_temp_file_size 0;
}
systemctl restart nginx
http://ec2의 ip
를 입력하면 프로젝트에 접근할 수 있다.