스프링부트로 서비스 코드를 개발했고, 배포환경을 구성했으니 서비스를 배포해보자
sudo yum install git
git --version
mkdir ~/aws && mkdir ~/aws/step1
cd ~/app/step1
git clone https://github.com/hwana/bookCommunity.git
cd bookCommunity
ll
./gradlew test
./gradlew Permission denied가 발생하면 chmod +x ./gradlew 입력 후 다시 실행
배포 : 작성한 코드를 실제 서버에 반영하는 것
아래의 경우도 모두 배포에 포함 됨
이 과정을 배포할 때마다 개발자가 하나하나 명령어를 실행하는 것은 불편함이 많음
그래서 이 과정을 쉘 스크립트로 작성해서 스크립트만 실행하면 차례대로 진행됨
- 쉘 스크립트는 .sh라는 파일 확장자를 가진 파일, 리눅스에서 기본적으로 사용할 수 있는 스크립트 파일의 한 종류
- Vim은 GUI가 아닌 환경에서 사용할 수 있는 편집 도구
생성한 스크립트에 실행 권한 추가
chmod +x ./deploy.sh
: 해당 파일이 있는곳에 입력
스크립트 실행
./deploy.sh
: 해당 파일이 있는곳에 입력
실행 결과
nohup.out 파일(실행되는 애플리케이션에서 출력되는 모든 내용을 가지고 있음) 열어보기
vim nohup.out
nohup.out 파일
- ClientRegistrationRepository를 찾을 수 없다며 애플리케이션 실행에 실패함
애플리케이션 실행에 실패한 이유
- ClientRegistrationRepository를 생성하려면 clientId와 clientSecret이 필수
- 로컬 PC에서 실행할 때는 application-oauth.properties가 있어서 문제가 없었으나 이 파일을 git제외 대상임
- 애플리케이션을 실행하기 위해서 id와 secret을 공개된 저장소에 올릴순 없으니 서버에서 직접 이 설정들을 가지고 있게 하려고함
vim /home/ec2-user/aws/application-oauth.properties
파일 생성후에 로컬에 있는 내용 복사해서 붙여넣기
수정 후 deploy.sh 파일 다시 실행 -> nohup.out 파일 열어보면 프로젝트 정상 실행 확인
현재 RDS는 MariaDB를 사용중이다. MariaDB는 스프링부트 프로젝트를 실행하기 위해서는 몇가지 작업이 필요하다.
MariaDB에서는 직접 쿼리를 이용해서 생성해야함
자바 프로젝트가 MariaDB에 접근하려면 데이터베이스 드라이버가 필요함
MariaDB에서 사용가능한 드라이버를 프로젝트에 추가함
compile("org.mariadb.jdbc:mariadb-java-client")
application-real.properties
생성application-real.properties
오픈된 공간에서는 데이터베이스 정보를 중요하게 보호해야하기 때문에 EC2 서버 내부에서 접속 정보를 관리하도록 설정함
application-oauth.properties
와 마찬가지로 RDS 접속정보도 보호를 해야하므로 EC2 서버에 직접 설정파일을 두기로 함
vim ~/app/application-real-db.properties
명령어로 파일 생성curl localhost:포트번호
입력 후 html 코드가 정상적으로 보이면 성공EC2에 스프링부트 프로젝트가 8080 포트로 배포되었으니, 8080 포트가 보안 그룹에 열려있는지 확인
인스턴스 -> 퍼블릭DNS 확인(EC2에 자동으로 할당된 도메인)
퍼블릭DNS:포트번호
입력하면 서비스에 접속 가능
구글 웹 콘솔에 접속 -> API 및 서비스 -> OAuth 동의 화면 -> 앱 수정
도메인 추가
사용자 인증정보 -> 리디렉션 URI 입력(:8080/login/oauth2/code/google 추가)
로그인 성공!
네이버 개발자센터에 접속 -> 내 애플리케이션 선택 -> API 설정 -> PC 웹 -> 서비스 URL, CALLBACK URL 수정
로그인 성공!
현재 배포 방식은 수동으로 배포되는 방식이므로 다음 단계에서는 test & build를 자동화시키는 작업을 할것임