
@RestController public class AppController { @GetMapping("/") public String home() { return "Hello, World!"; } }
$ cd instagram-server $ git init $ git add . $ git commit -m "first commit" $ git branch -M main $ git remote add origin _______ $ git push -u origin main
$ sudo apt update && / sudo apt install openjdk-17-jdk -y $ java -version # 잘 설치됐는 지 확인
$ git clone {git repository clone 주소}
$ cd {프로젝트 경로} $ ./gradlew clean build $ cd build/libs $ nohup java -jar ________.jar & $ sudo lsof -i:8080 # 8080번 포트에 Spring Boot가 실행되고 있는 지 확인

$ cd {프로젝트 경로} $ git pull origin main
$ sudo lsof -i:8080 # 8080번 포트에 Spring Boot가 실행되고 있는 지 확인 $ sudo fuser -k -n tcp 8080 # 8080번 포트에 실행되고 있는 프로세스 종료 $ ./gradlew clean build $ cd build/libs $ nohup java -jar ________.jar &
$ git config --global credential.helper store $ git pull origin main # Github 계정 및 비밀번호 입력 $ git pull origin main # 더 이상 비밀번호를 안 묻는 걸 확인할 수 있다.
이 방식은~/.git-credentials에 로그인 정보를 저장해둠으로써 github 계정과 비밀번호를 따로 묻지 않는 방식이다. 이 방식의 단점은 EC2에 접근할 수 있는 모든 사용자가 내 Github 정보를 볼 수 있다는 점이 단점이다.
name: Deploy To EC2 on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: SSH로 EC2에 접속하기 uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.EC2_HOST }} # EC2의 주소 username: ${{ secrets.EC2_USERNAME }} # EC2 접속 username key: ${{ secrets.EC2_PRIVATE_KEY }} # EC2의 Key 파일의 내부 텍스트 script_stop: true # 아래 script 중 실패하는 명령이 하나라도 있으면 실패로 처리 script: | cd /home/ubuntu/instagram-server # 여기 경로는 자신의 EC2에 맞는 경로로 재작성하기 git pull origin main ./gradlew clean build sudo fuser -k -n tcp 8080 || true # || true를 붙인 이유는 8080에 종료시킬 프로세스가 없더라도 실패로 처리하지 않기 위해서이다. # jar 파일을 실행시키는 명령어이다. 그리고 발생하는 로그들을 ./output.log 파일에 남기는 명령어이다. nohup java -jar build/libs/*SNAPSHOT.jar > ./output.log 2>&1 &
appleboy/ssh-action의 공식 문서nohup … & 부분의 코드를 수동으로 배포할 때와 조금 다르게 작성한 이유


application.yml 파일 넣는 과정 자동화시키기... application.yml