Elasitc beanstalk CLI 설치
https://github.com/aws/aws-elastic-beanstalk-cli-setup
1. 설치 전 환경 구성하기
1-1. Git 설치
1-2. Python 설치(예제의 경우 Python 3)
1-3. virtualenv 설치
2. EB CLI 설치 및 업그레이드
2-1. Linux/Mac OS
2-2. Windows
3. Path 설정
- echo 'export PATH="/home/user1/.ebcli-virtaul-env/executables:$PATH"'
>> ~/.bash_profile && source ~/.bash_profile
4. Python3 -> Python
5. 모든 환경 구성이 완료된 후 EB 명령을 실행하면 Elastic beanstalk에 관한
내용들이 나오게 된다.
프로젝트 넣고, 환경 구성하기
todo-backend.zip
todo-frontend.zip
backend
frontend
todo 계정 생성
create user todoAdmin identified by 'todoAdmin';
todos 데이터베이스 생성
create database todos;
todos에 관한 생성(todoAdmin에 대한)
grant all privileges on todo.* todoAdmin;
6-1. src/main/resources
application-dev.yml(개발용/develop)
application-prod.yml(배포용/product)
yml은 Python 기반으로 Python은 들여쓰기가 강제된다(매우 중요함!!!)
스프링부트의 application-properties와는 다른 방식
6-2. application-dev.yml의 Database URL 설정
6-3. sh ./gradlew build
기존 tomcat의 호스트 포트 8080 -> 8090
todo-backend 테스트를 위한 포트 추가 8080
[post] localhost:8090/auth/signup
[body]
{
"username":"testuser1@test.com",
"password":"testuser1"
}
[post] localhost:8090/auth/signin
[body]
{
"username":"testuser1@test.com",
"password":"testuser1"
}
출력 결과
{
"token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJmZjgwODE4MTkxMDg3NzdiMDE5MTA4N2RiNmVlMDAwMCIsImlzcyI6InRvZG8gYXBwIiwiaWF0IjoxNzIyNDI0NTExLCJleHAiOjE3MjI1MTA5MTF9.K1gBzj4RUZsOb4JfkL2OINxFfB7cLEoI2AkXVnyHaAThyzGPFh-dnyLl6XeeqAfPYHg9FUrjWGfZHsM8OfhsGw",
"username": "testuser1@test.com",
"password": null,
"id": "ff8081819108777b0191087db6ee0000"
}
Todo Test
[post] localhost:8090/todo
[body]
{
"title":"todo1 입니다."
}
출력 결과
{
"error": null,
"data": [
{
"id": "ff8081819108777b01910884f4b40001",
"title": "todo1 입니다.",
"done": false
}
]
}
[get] localhost:8090/todo
출력 결과
{
"error": null,
"data": [
{
"id": "ff8081819108777b01910884f4b40001",
"title": "todo1 입니다.",
"done": false
},
{
"id": "ff8081819108777b01910886e5480002",
"title": "todo2 입니다.",
"done": false
},
{
"id": "ff8081819108777b01910886faa20003",
"title": "todo3 입니다.",
"done": false
},
{
"id": "ff8081819108777b019108870f100004",
"title": "todo4 입니다.",
"done": false
}
]
}
[put] localhost:8090/todo
[body]
{
"id": "ff8081819108777b01910886e5480002",
"title": "todo2 수정입니다. 하핳....",
"done": true
}
출력 결과
{
"error": null,
"data": [
{
"id": "ff8081819108777b01910884f4b40001",
"title": "todo1 입니다.",
"done": false
},
{
"id": "ff8081819108777b01910886e5480002",
"title": "todo2 수정입니다. 하핳....",
"done": true
},
{
"id": "ff8081819108777b01910886faa20003",
"title": "todo3 입니다.",
"done": false
},
{
"id": "ff8081819108777b019108870f100004",
"title": "todo4 입니다.",
"done": false
}
]
}
[delete] localhost:8090/todo
[body]
{
"id": "ff8081819108777b019108870f100004"
}
출력 결과
{
"error": null,
"data": [
{
"id": "ff8081819108777b01910884f4b40001",
"title": "todo1 입니다.",
"done": false
},
{
"id": "ff8081819108777b01910886e5480002",
"title": "todo2 수정입니다. 하핳....",
"done": true
},
{
"id": "ff8081819108777b01910886faa20003",
"title": "todo3 입니다.",
"done": false
}
]
}
11-1. Node.js 설치
11-2. todo-frontend 명령창에 복붙
=> 포트포워딩 설정 후에 웹에서 localhost:3000으로 접근하여 backend 서버와 연동된
것을 확인
server port 확인
datasource-url, username, password 값은 환경 변수를 의미한다.
deploy :
artifact: build/libs/todo-0.0.1-SNAPSHOT.jar
create --database --elb-type application --instance-type t3.micro
elb-type : Load Balancing Type
instance-type : EC2 Type
이후에 Environment Name, DNS CNAME Prefix, RDS DB username, password 등을 설정
release 태스크 작업(build.gradle)
task("release") {
dependsOn("build")
doLast {
def stdout = new ByteArrayOutputStream()
exec {
/* $ eb setenv SPRING_PROFILES_ACTIVE=prod */
commandLine 'eb', 'setenv', 'SPRING_PROFILES_ACTIVE=prod'
standardOutput = stdout
}
/* 결과 로깅을 위한 작업 */
println "eb setnev SPRING_PROFILES_ACTIVE=prod :\n$stdout";
exec {
/* eb deploy => .elasticbeanstalk/config.yml에 있는 설정으로 배포 처리. */
commandLine 'eb', 'deploy'
standardOutput = stdout
}
println "eb deploy :\n$stdout";
println "Release succeeded.";
}
}
이후에 sh ./gradlew release 명령어 실행
Todo-frontend 설정(backend 설정과 같음)
npm start
웹으로 접근
Swap Memory 설정
git add -A && git commit -m "frontend deployment"
Repository가 없는 경우 git init을 통한 초기화를 해야 한다.
eb create --elb-type application --instance-type t3.micro
backend와 마찬가지로 Elastic beanstalk 설정
완료되면 Elastic beanstalk - 구성 - 생성환 환경 클릭
도메인 링크를 클릭하여 잘 작동되는지 확인