Github는 개발자들이 자신의 소스코드를 남들과 공유하는 공간이다. 사용하는 목적은 팀원들과의 협업, 코드 공유, 저장, 배포 등이 있을 수 있다. 이번 포스팅에서는 우리가 구현한 SpringBoot 프로젝트를 구축한 서버에 올리기 위해 사용할 것이다.
완성된 SpringBoot 프로젝트를 서버에 올리는 방법은 크게 두 가지이다.
오늘은 전자의 방법을 다뤄볼 것이다. 후자의 방법을 원하는 사람은 이전에 다룬 winscp 사용법을 참고하라. 인텔리제이에서 파일을 빌드하면 libs 디렉토리 안에 .jar파일이 생기는데 이를 winscp(FTP)를 이용해 EC2의 실행파일 위치로 옮기면 된다.
>> winscp 사용법
원래는 개발한 코드를 Github에 올리고, 이를 EC2서버에서 내려받기까지 해야 하지만, 이번 포스팅에선 Github에 업로드하는 것까지만 다룰 예정이고, 이후의 내용은 UMC 7주차 워크북에서 자세히 다루기로 하겠다. 내용이 궁금한 사람들은 아래의 링크를 참고하기 바란다.
>> UMC 7주차 실습 바로가기
EC2 서버에 putty로 원격접속한 후, 아래의 명령을 입력하여 git을 설치한다.
$ sudo apt update
$ sudo apt-get install git
$ git --version
git --version 명령은 git 설치가 완료되었는지 확인하기 위해 사용한다. 깃헙과 서버가 SSH프로토콜로 통신하려면, SSH키를 가지고 있어야하므로, 깃헙에서 SSH KEY를 생성해주어야 한다.
$ cd ~/.ssh
$ ssh-keygen -t rsa - C github메일
참고로 여기서 ~/는 홈 디렉토리를 기준으로 한 상대 경로를 의미하고, .은 숨김파일을 의미한다. 이 명령을 통해 .ssh 디렉토리에 키페어가 생성되고 id_rsa.pub파일이 생성된다. 이제 cat명령으로 내용을 출력해보자.
$ cat id_rsa.pub
내 컴퓨터의 파일을 깃허브에 올리려면 깃허브에는 원격 저장소가, 내 컴퓨터에는 로컬 저장소가 있어야 하고, 이 둘을 연결하여 로컬 저장소의 파일을 원격 저장소로 보낸다. 아래의 순서로 파일을 업로드할 수 있다. (github 회원가입과 git 다운로드에 대해서는 다루지 않는다. git 다운로드에 관한 자세한 설명을 원할 경우, 아래의 링크를 참조하라.)
① 깃허브에 원격저장소(repository) 만들기
② 로컬 저장소 만들기
③ 로컬 저장소와 원격 저장소 연결
git remote -v // 폴더에 원격 저장소가 잘 연결되었는지 확인
git remote rm origin // 기존 연결을 삭제
④ 브랜치 설정
깃허브에는 branch라는 개념이 있는데, 버전이라고 이해하면 된다.
깃허브 저장소의 기본 branch 이름은 main이므로 파일도 main branch에 올려야 한다.
로컬 저장소에서는 branch의 이름이 master로 되어있다. (깃허브에서도 원래는 master였지만, 어감이 좋지 않다는 이유로 main으로 바꾸었기 때문이다)
따라서 branch의 이름을 main으로 바꾸어 주어야 한다.
branch의 이름을 바꾸기 위해 git branch -m master main을 입력한다.
변경이 잘 됐는지 확인하기 위해 git branch를 입력한다.
다행히도 branch의 이름을 저장소를 만들 때마다 매번 바꾸어 주어야 하는 것은 아니다.
설정을 통해 자동으로 main으로 명명하도록 만들 수 있다.
git config --global init.defaultBranch main 명령을 통해 브랜치의 기본 이름을 설정할 수 있다.
git config --global init.defaultBranch main
이로써 원격 저장소 연결은 모두 끝났다. 하지만, README.md파일은 원격 저장소에만 있고, 로컬 저장소에는 없으므로, 로컬 저장소로 가져와야 한다. 원격 저장소에 있는 것을 로컬 저장소로 가져오는 명령은 pull이다. 아래와 같이 입력하여 README파일을 가져와보자.
참고로 끌어오는 곳을 생략하여 git pull만 적어도, 현재 작업 중인 브랜치에서 pull하므로 상관없다. 깃허브에 올리려고 선택했던 파일 안으로 들어가보면 README파일이 생긴 것을 확인할 수 있을 것이다.
⑤ 파일 업로드
git add . // 모든 변경사항을 올리는 경우
git add 파일 or 디렉토리 // 특정 파일(디렉토리)만 올리는 경우
git rm --cached -r // add한 파일 모두 취소
git rm --cached 파일 // 특정 파일만 add 취소
이제 commit을 해보자. git commit -m "commit message" 명령을 통해 커밋 메시지를 입력할 수 있다. 커밋 메시지란 아래와 같이 연한 글씨로 표시되는 메시지를 말한다. My first commit 등 원하는 메시지를 넣어 commit해주자.
마지막으로 원격저장소로 파일을 올리는 push단계를 수행하자. git push origin main을 사용하면 된다.
이제 github의 repository에서 파일이 잘 올라갔는지 확인하면 된다.
만약 저장소가 이미 있는 경우라면 로컬 저장소를 만들 필요 없이 아래의 명령을 순서대로만 입력하면 된다.
git pull origin main
git add .
git commit -m "my first commit"
git push origin main
pull의 경우 main브랜치의 내용이 내 컴퓨터의 내용과 차이가 생겼을 때(팀프로젝트에서 다른 팀원이 브랜치에 무언가 추가한 상황 등) 변경사항을 내 컴퓨터에 반영하는 용도로 사용한다. 그 이후로는 동일하게 add-commit-push 단계를 거치면 된다.
깃허브에 파일을 올렸으니 이제 github에서 git clone으로 우리의 서버로 옮겨오기만 하면 된다. 앞서 이야기했듯 이 내용은 UMC 7주차 실습에서 자세히 다루도록 하겠다.
참고로 말하면, 앞으로는 github에 코드를 업로드할 때 위와 같은 불편한 방식을 사용하지 않을 것이다. IntelliJ에서 편리하게 업로드하는 기능이 있기 때문이다. 따라서 위 내용을 외울 필요는 없으나, add, commit, push, pull 등의 메커니즘은 반드시 이해해두어야 한다.
출처 : https://velog.io/@jonghyun3668/SpringBoot-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-EC2-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0
(이 글은 jonghyun3688님의 포스팅을 토대로 만들었다는 점을 밝힙니다.)