원글 페이지 : 바로가기

저번 시간에는 파일질라를 통해 프로젝트 파일을 수동으로 빌드하여 배포를 해보았습니다. 이번에는 깃허브 ssh url을 통해 더욱 쉽게 배포를 해보겠습니다! AWS에 접속 먼저 AWS에 접속하여 줍니다. $ ssh -i [pem 키페어 주소] ubuntu@[탄력적 ip 주소] SSH Key 생성 .ssh 디렉토리로 이동합니다 $ cd ~/.ssh 이제 키페어를 ssh key를 생성해봅시다! $ ssh-keygen -t rsa -C [깃허브 계정 이메일] SSH Key Git 연동 생성된 ssh key를 깃허브에 추가해줍니다. $ cat id_rsa.pub 먼저 cat id_rsa.pub를 치게되면 이렇게 ssh-rsa ~~~~~ 깃허브 메일 주소가 나오는데 이걸 복사 해줍니다 ※ 참고로 git bash에서 복사는 Ctrl + Insert, 붙여넣기는 Shift + Insert 입니다. https://github.com/settings GitHub: Let’s build from here GitHub is where over 100 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and fea… github.com Github 로그인 -> Settings -> SSH and GPG keys를 클릭합니다. New SSH key를 클릭한 후에 아까 생성하고 복사해 뒀던 SSH Key를 넣어주시면 됩니다! Git Clone 자 이제 SSH Key도 다 입력을 완료했으니 깃허브를 통해 프로젝트를 EC2에 clone 해봅시다~ 복사하고 싶은 프로젝트에 SSH탭에서 나온 주소를 복사합니다! 그후 git bash로 돌아와서 clone하고싶은 디렉토리로 이동 후에 $ git clone [복사한 SSH 주소] 이렇게 추가가 된 것을 알 수 있습니다. 먼저 프로젝트에 맞는 자바 버전이 적용 되었는지 확인을 합니다! clone된 프로젝트에 들어갑니다! $ cd [프로젝트명] build를 합니다 $ ./gradlew build 여기서 permission denied라고 뜨면 당황하지 마세요!!!! gradlew를 실행할 수 있는 권한이 없기 때문입니다. $ chmod +x gradlew 다시 ./gradlew build를 하면 성공! 빌드가 완료되면 build/libs 디렉토리가 생성되고 프로젝트명-0.0.1-SNAPSHOT.jar 파일이 생성 되는 것을 알 수 있습니다. java -jar [파일명].jar 배포 스크립트 만들기 배포 스크립트를 왜 만들까요??? 만약 프로젝트에 변경사항을 서버에 적용하고 싶을 때 배포 스크립트를 쓰지 않으면 아래 명령어들을 일일히 번거롭게 쳐야 합니다! git pull -> build 시작 -> build 디렉토리 이동 -> build 파일 복사 -> 실행 중인 pid 확인 -> 있으면 종료 -> 변경한 프로젝트 배포… 하지만 이 명령어들을 스크립트로 만들어서 ./depoly.sh를 실행하게되면 간단하게 변경사항을 적용할 수 있습니다!!!! 자 먼저 변경사항이 있는 프로젝트에 들어갑니다! ※ 깃에 변경사항이 push가 되어있어야 합니다. $ nano ./deploy.sh deploy.sh라는 쉘 스크립트를 만듭니다. 아래 REPOSITORY와 PROJECT_NAME에 본인의 파일 경로와, 프로젝트 이름을 입력해줍니다! #!/bin/bash REPOSITORY=/home/ubuntu PROJECT_NAME=thymeleaf-basic cd $REPOSITORY/$PROJECT_NAME echo “> Git Pull” git pull echo “> 프로젝트 Build 시작” ./gradlew clean build echo “> step1 디렉토리 이동” cd $REPOSITORY echo “> Build 파일 복사” cp $REPOSITORY/$PROJECT_NAME/build/libs/*.jar $REPOSITORY/ echo “> 현재 구동적인 애플리케이션 pid 확인” CURRENT_PID=$(pgrep -f ${PROJECT_NAME}.*.jar) if [ -z “$CURRENT_PID” ]; then echo “> 현재 구동 중인 애플리케이션이 없으므로 종료하지 않습니다.” else echo “> kill -15 $CURRENT_PID” kill -15 $CURRENT_PID sleep 5 fi echo “> 새 애플리케이션 배포” JAR_NAME=$(ls -tr $REPOSITORY/ | grep jar | tail -n 1) echo “> JAR Name: $JAR_NAME” nohup java -jar $REPOSITORY/$JAR_NAME 2>&1 & 작성 완료하고 나오면 deploy.sh 파일이 생기는 것을 알 수 있습니다. $ ./deploy.sh 자 이제 스크립트르 실행하면 ~~~ 에러가 뜹니다!!! 🙁 당황하지 말고 아까 gradlew 실행권한을 부여한 것처럼 실행 권한을 추가해줍니다! $ chmod +x ./deploy.sh 그 다음 다시 실행 해보면… 기존에 실행되던 서버를 죽이고, 깃으로부터 PULL해온 변경사항을 추가한 JAR파일을 새로 배포됩니다. 아래 사진을 보시면 수정된 코드가 배포 된 것을 알 수 있습니다 참고 https://velog.io/@leeeeeyeon/EC2-%EC%84%9C%EB%B2%84%EC%97%90-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%A5%BC-%EB%B0%B0%ED%8F%AC%ED%95%B4-%EB%B3%B4%EC%9E%90 다음 포스팅에서는 디비연결을 해볼게요 그럼 이만!!!