Spring 관련 포스팅에서 생성한 게시판 프로젝트를 WAS 서버에 배포해보자.
# 원하는 경로에 애플리케이션 배포할 디렉토리 생성
> sudo mkdir /home/practice
# 해당디렉토리의 소유주 및 권한을 바꿔준다.
> sudo chown ubuntu:ubuntu /home/practice
> sudo chmod 760 /home/practice
# 경로로 이동
> cd /home/practice
# git repository clone
> git clone -git repository 주소-
# 경로 내부로 이동
> cd -clone된 경로-
application.properties의 datasource가 현재는 로컬에서 개발하던 database로 설정되어 있을 것이다.
그것을 생성한 RDS에 연결해줘야 한다.
우선 RDS에 접속해서 스키마를 생성해준다.
그리고 사용자를 생성해서 이 스키마에 대한 권한을 준다.
> create user 'practice'@'%' identified by '비밀번호입력';
> grant all privileges on practice.* to 'practice'@'%';
> flush privileges;
스키마를 생성했으면 application.properties를 그에 맞춰 수정한다..
> vi ./src/main/resources/application.properties
:wq
로 저장하고 나온다.
참고로 ddl-auto
가 지금 create
로 되어있는데 이는 처음 반영할 때 ddl을 자동 실행하기 위함이지 create로 계속 두면 절대 안된다.
재실행 시 기존 테이블을 삭제하고 다시 생성하기 때문에 당연히 안된다.
validate
또는 none
으로 바꾸자.
# gradle clean & build
> gradle clean build
# gradle 실행
> gradle bootrun
정상적으로 실행된다!
200 응답!
PM2
는 node.js
진영에서 프로세스 관리를 위해 사용하는 라이브러리이다.
시스템이 종료됬다가 재시작될 때 자동 실행, 무중단 실행 (예기치 못하게 종료됐을 때 자동으로 재실행 시킨다) 등 다양한 편의성을 제공한다.
ubuntu 계정으로 설치하니까 전역으로 설치가 안되서 CodeDeploy를 적용할 때 문제가 생겼다.
sudo su - root
위 명령어로 root로 전환하거나 sudo 키워드를 꼭 사용해서 전역으로 설치하자.
# nvm 설치
> curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
# 환경변수 반영
> source ~/.bashrc
# 원하는 버전의 노드 설치
> nvm install 20.15.1
# yarn 설치 (npm 써도 무관)
> npm install -g yarn
# pm2 설치
> yarn global add pm2
# 디렉토리 이동
> cd /home/practice
# pm2 실행
> pm2 ecosystem
pm2 ecosystem
명령어를 실행하면 해당 디렉토리에 ecosystem.config.js
파일이 생성될 것이다.
# vi로 실행
> vi ecosystem.config.js
기본으로 아래의 파일이 있을 것이다.
module.exports = {
apps : [{
script: 'index.js',
watch: '.'
}, {
script: './service-worker/',
watch: ['./service-worker']
}],
deploy : {
production : {
user : 'SSH_USERNAME',
host : 'SSH_HOSTMACHINE',
ref : 'origin/master',
repo : 'GIT_REPOSITORY',
path : 'DESTINATION_PATH',
'pre-deploy-local': '',
'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production',
'pre-setup': ''
}
}
};
아래와 같이 수정해주자
module.exports = {
apps : [{
name: 'practice-api',
script: 'java',
args: ['-jar', 'practice-BE/build/libs/api-0.0.1.jar']
}],
deploy : {
production : {
user : 'SSH_USERNAME',
host : 'SSH_HOSTMACHINE',
ref : 'origin/master',
repo : 'GIT_REPOSITORY',
path : 'DESTINATION_PATH',
'pre-deploy-local': '',
'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production',
'pre-setup': ''
}
}
};
보면 알 수 있듯이 pm2를 실행하면 script
에 지정된 명령어를 실행한다는 뜻이고 이 명령어의 매개변수로 args
를 준다는 뜻이다.
# 실행
> pm2 start ecosystem.config.js
성공적으로 실행 되었다!