본문 바로가기
시행착오/Spring Boot

[Spring Boot] 4. Github (지옥)

by 성동원 2023. 9. 20.
시작하기 앞서

 

지난 글에서 마지막에 코드 어떻게 매번 다 옮기고 귀찮은걸 어떻게 해?

에 대해서 고민을 하다 Github를 써야 겠다.

 

로컬에서 코드진행을 해서 github에 소스코드를 올리고 운영서버(Centos)에서 pull 해서 배포하면 되지 않을까?

 

 

그래서 github를 사용하기로 했다.

 

나는 private 으로 레포지토리를 만들었다.

 

 

위 와 같이 만들었고 

 

 

이렇게 나오드라...

 

순서

1. 나는 로컬에서 코드짤꺼임.

2. 로컬에서 코드 짠걸 github에 push 할거임.

3. 운영서버(centos) 에서 pull 할꺼임

4. 운영서버에서 mvn clean package 해서 spring boot 서비스 할꺼임.

 

 

위 와 같은 순서로 진행할 예정이였다. 그래서 나는

 

이렇게 나의 window intellij 에서 github remote를 저장하려고 git bash를 틀었다.

intellij에서만 지원하는 건지 아니면 모르겠다.

 

나는 따로 git bash를 나의 pc에 설치한 상태이고 그걸 intellij가 알고 있어서 자동으로 지원이 되는건지 아니면 원래 되는건지는 잘 모르겠다.

 

안된다면 git bash를 깔아서 git bash에서 진행해도 되고 다른 방법이 있다면 다른 방법으로 해도 괜찮..

 

따라 해본다 github에 있는 대로.

 

git init
git add . 

# git add README.md  이렇게 하라고 나와 있는데 그냥 git add .  해도 노 상관
# git add . 는 . 이 모든걸 다 올린다는 뜻이다.

 

일단 난 여기서 막혔다. 다른 사람들은 바로 push가 되는지는 잘 모르겠다.

아마 private 라서 그런것 같기도 하다.

나의 git config를 지정해주겠다.

 

 

git config --local user.name {자신의 닉네임?}
git config --local user.email {github 계정}

# 1. 자신의 닉네임은 아무렇게나 써도 괜찮아 보였다.
# 2. 이메일은 github 로그인할때 계정을 작성해줬다.

git config --local --list
# 위 명령어로 잘 적용 됐는지 확인하면 됨.

※ 여기에 --local 과 --global 이 있는데, global은 어느 git 저장소든지 다 적용 되는데 local은 해당 디렉토리에서만 적용 된다. 

git push -u origin main

 

 

 

요롷게 되면 정상으로 된 것.

 

github page 한번 들어가보면.

 

이렇게 나온다.

 


 

1. 나는 로컬에서 코드짤꺼임.

2. 로컬에서 코드 짠걸 github에 push 할거임.

3. 운영서버(centos) 에서 pull 할꺼임

4. 운영서버에서 mvn clean package 해서 spring boot 서비스 할꺼임.

 


위 상태에서 1,2 번까지는 완료 된 것으로 보고 이제 centos에서 pull 하는 것을 해보자.

 

window와 동일하게 진행하면 된다.

 

먼저 centos에 git이 설치되어 있지 않다면 git을 설치해주자.

 

# 나는 yum을 씀 다른거 써도 됨
yum install git

 

설치가 되었으면 download 디렉토리로 가자.

# spring 이라는 디렉토리를 만들어 줬음.
mkdir spring

cd spring 

git clone [git ssh 주소]

 

안된다...

여기서 부터 멘붕이 옴..

 

일단. private 을 push 하고 pull 하고 commit 하고 등등 하려면 인증을 해야 된다.

왜냐하면 private은 public과 달리 보안을 위한 것이기 때문에.

 

보안 등록 작업을 진행 해보자.

 

 

github docs

github page에 잘 나와있다. 따라서 해본다.

뭐라뭐라 나오는데 그냥 계속 엔터치면 된다. 만약 상세한 내용이 궁금하면 검색을 해볼 것. 

(이 부분은 미리 만들어 놓은거라 또 만들면 이상해질 것 같아 그냥 나는 스킵한다.)

 

여기서 나는 root 계정으로 진행을 했다. 

 

다 만들어 졌으면 

 

cat ~/.ssh/id_rsa.pub
진행

막 나올 거임 그걸 복사한다.

 

 

github page에 오른쪽 상단의 자신의 아이콘 클릭

 

 

 

settings 클릭

 

 

왼쪽의 ssh and gpg keys 클릭 new ssh key 클릭

 

 

 

요기에 title은 자신이 알아보기 쉽게 구분하기 쉽게 작성을 하고

 

아까 복사한 key 값을 아래 key에 넣고 add ssh key를 입력

 

그리고 나서 다시 git clone { ssh github 주소 }

 

진행하면 보통은 된다.

 

그래도 안된다면 에러를 해결해 나아가야 할 것이다. 왜냐하면 다양한 경우가 있기 때문.....

 

만약 clone이 된다면 pull도 가능할 것이므로 사실상 3번은 완료한셈이고

 

pull을 진행한 디렉토리에서 mvn clean package를 진행하게 된다면 이전 글 처럼 spring boot 서비스가 된다.

 

그럼 또 여기서 생각 해볼 것은

 

귀찮게 매번 서버에 들어와서

 

1. git pull 진행

2. mvn clean package 진행

3. java -jar ~~~.jar 진행

 

해서 매번 서비스를 띄워야 하는 가?

 

그래서 나는 마지막으로 jenkins를 사용할까 한다.

다음에 ㅎ

 


뻘 짓

 

근데 나는 여기서 특별한 경우가 있다.... 이 것이 참 지옥이다.

나와 같은 상황은 어쩌면 거의 없을 것이다.

 

  • ssh port 2023
  • private github

위 상황이다.

 

일단 git clone ssh 주소로 clone을 진행 해야 되는데 안된다.

 

# 이럴 땐 github와 통신이 되는지 먼저 확인해볼 필요가 있음.

ssh -T git@github.com

#만약 Hi xxxxxxxxxx! ~~~~~~~~~~~ 이런식으로 나온다면 통신이 된다는 것임 그럼 여기 뻘 짓 까지도 안왔을 거같긴한데. 일단...

 

통신이 안되는 이유가 뭐냐면 github의 ssh 주소는 보통 port번호를 22번을 사용한다.근데 나는 포트포워딩으로 해당 centos 서버의 ssh 를 2023으로 변경을 해놨다.

 

이 부분에 대해서 검색을 해보니다양하지만 어느정도로 좁혀지더라..

 

위에서 했듯이 ssh-keygen을 만들고 저장을 했는데 root로 진행을 했다. 그래서 나는다음과 같이 진행을 했었다.

 

vi ~/.ssh/config

-config


 

보통 포트번호가 다르면서 ssh 주소를 사용할 때는 config 파일을 만들어서 22로 접속하게끔 설정하는 config 파일인가 보다. 위 처럼 쓰면 된다고 한다.

 

계정마다 id_rsa.pub 값을 가질 수 있는 듯 했고, github에 key를 각각 등록을 해줘야 하는 듯 했다.

 

각각 등록을 하고 해당 .ssh의 config를 만들어줌.

그리고

chmod로 .ssh 는 700 .ssh/* 는 600 으로 지정을 하고 clone을 해보니 됨.

 

아 한창 작업을 하고 뒤죽박죽된 내 머리속을 내맘대로 조립을 하다보니 글이 잘 안써짐 다시 정리가 된다면 따로 이 부분을 작성해보도록 하겠다.