본문 바로가기
프로젝트/도서관리 프로젝트

도서관리 프로젝트[12] 배포하기 - 리눅스 환경에서 깃허브 가져오기/ 실행중인 서버 중단하기

by CodeMango 2023. 7. 29.

깃허브 연결

이제 깃허브에 있는 코드를 리눅스 전용 컴퓨터로 가져와야 합니다.

깃허브 주소를 복사해서 명령어를 통해 코드를 가져오겠습니다.

 

* git clone [github 저장소 주소]   : 깃허브 저장소 복사하기

 

 

Swap 설정

이제 빌드를 하고 실행해야하는데, 지금 무료 컴퓨터기때문에 성능이 좋지 않습니다!

이것에 대한 해결책으로 메모리가 부족한 경우 디스크를 사용할 수 있도록 설정해주어야 합니다.

원래 프로그램이 시작되면 RAM(메모리)을 사용하게 되지만 부족할 경우 속도가 좀 더 느리지만, 장기기억장치인 DISK를 사용하게 할 수 있습니다. 이것을 swap이라고 합니다!

swap설정 명령어는 아래와 같습니다.

swap 명령어 예시

빌드

* chmod +x ./gradlew   : gradlew를 사용하기 위해 실행할 수 있도록 설정

* ./gradlew build -x test   : gradle 을 이용해 우리 프로젝트를 빌드하기. 이때  테스트를 돌리지 않는다.

                                        테스트를 포함해야한다면 -x test 를 빼면 됩니다!

 

위 명령어를 통해 빌드가 성공하면 아래와 같은 명령어를 통해 libs 폴더 안에 jar 파일이 있는지 확인해봅니다.

빨간글씨의 jar파일이 있는 것을 확인한 후 아래 명령어를 통해 java를 실행시킵니다!

* library-app]$ java -jar build/libs/library-app-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev  : 자바 실행

그리고 나서 아래와 같은 코드가  보이면 배포에 성공한 것을 알 수 있습니다!

 

톰캣

위와 같이 Jar파일을 실행하면 서버가 동작하게 됩니다!  

왜냐하면 Spring Boot에는 톰캣이 내장되어 있기 때문입니다


예전에는 톰캣과 스프링이 분리되어 있어서 따로따로 설치하고 설정해줘야 했습니다.

스프링부트가 등장하고 나서는 부트 안에 톰캣이 들어있기 때문에 스프링부트만 설치해도 서버가 동작할 수 있습니다!

 

Web 접속하기

1. web에 접속하기 위해 먼저 방화벽 설정을 해야 합니다.

EC2 정보의 보안 탭에서 인바운드 규칙을 설정합니다.

지금 포트 범위가 22번만 연결되어있는데 범위를 더 확장시켜야 합니다.

위 화면에서 보안 그룹 아래 있는 url을 클릭합니다.

다음 화면에서 '인바운드 규칙 편집'을 클릭해 들어갑니다.

규칙 추가를 선택하고 포트범위와 소스를 변경합니다.

저는 공용 범위인 8080으로 변경했고 소스는 누구나 볼 수 있게 Anywhere로 설정했습니다.

2. WEB IP 주소 찾기

이제 접속을 위해서는 최종적으로 ip주소를 알아야 합니다!

위 사진의 주소를 복사합니다.

그리고 주소창에

http://[IP주소]:8080/v1/index.html 

이라는 주소를 입력합니다!

 

실제 제가 배포한 주소는 아래와 같습니다.

http://54.180.150.130:8080/v1/index.html 

 

이제 배포가 완료되었습니다!

 

실행중인 서버 중단하기

* ctrl + c

 

빌드된 프로젝트 제거하기

* ./gradlew clean

 


상시 서버 만들기

현재는 EC2의 접속을 끊으면 서버도 닫힙니다!

 

여기서 foreground 와 background 에 대한 개념을 알고 가야 합니다.

 

foreground은 우리가 보고 있는 프로그램을 말합니다.

문서를 보고 있다면 PDF프로그램이 foreground프로그램입니다.

 

background는 우리가 보고 있지 않은데 실행중인 프로그램입니다.

대표적으로 컴퓨터에서 조용히 돌아가고 있는 백신이 background 프로그램입니다!

 

따라서 상시 서버를 background로 동작하게 해야 합니다.

그 명령어는 아래와 같습니다.

* nohup [명령어] & :  background로 동작하게 만드는 명령어

 

리눅스에서 library-app으로 들어가서 명령어를 입력해줍니다.

명령어 입력 후 엔터를 한번 더 쳐주면 서버가 백그라운드로 동작하게 됩니다.

 

그다음 ls를 통해 확인을 하면 nohup.out이 깃에서 clone한 파일들 사이에 들어가게 됩니다.

이를 다른 곳으로 옮겨야 합니다.

 

* rm :파일을 제거하는 명령어

 -> rm nohub.out 으로 깃에서 nohup.out파일을 제거합니다.

 

파일을 제거했지만 여전히 백그라운드로 서버가 돌아가므로, 서버를 끄는 방법을 알아야 합니다.

 

백그라운드로 돌아가는 서버 끄는 방법

1. 백그라운드로 돌아가는 서버 찾기

ps aux : 현재 실행중인 프로그램 목록 찾기

2. 이 중에 필요한 프로그램 찾기

ps aux| grep java : 현재 실행중인 프로그램 중 java가 들어가는 프로그램 확인

이를 통해 서버가 백그라운드로 돌고 있는 것을 확인했습니다.

 

3. 프로그램을 종료하기

kill -9 프로그램번호 : 해당 프로그램 종료

프로그램번호는 ec2-user 다음에 나오는 번호입니다!

위 사진에서 1497955가 프로그램 번호입니다.

 

4. 상위 폴더로 나가기

cd ../

nohup.out 제거 후에 다시 위에서 했던 nohup 명령어를 입력해줍니다\

이때 --spring.profiles.active=dev &  를 빼먹지 않게 주의합니다.

그러면 아래와 같이 nohup.out 이 밖에 생긴것을 볼 수 있습니다!

이제 백그라운드 서버 설정까지 완료했습니다!

 

파일의 내용물 확인하기 (nohup.out에 담긴 서버 로그 알아보기)

 

1) 파일에 직접 들어가 내용물 읽는 방법

vi : 리눅스 편집기인 vim을 사용하여 파일을 연다.

ex) vi nohup.out  : vim을 이용해 nohup.out이라는 파일 열기

 

vi에서 나가기

esc 누른채로 :q 입력   ->  esc 누르기 + : 입력  + q 입력 + 엔터 치기

 

2) 파일에 들어가지 않고 현재 접속한 터미널에서 내용물 확인하는 방법

cat : 파일에 있는 내용물 모두 출력하는 명령어

ex) cat nohup.out

cat 은 파일 내용물 양이 많지 않고, 실시간 업데이트가 잘 되지 않는 프로젝트에서 사용합니다.

모든 로그가 다 뜨기 때문입니다.


tail :현재 파일의 끝 부분 출력하는 명령어

ex) tail nohup.out

cat의 내용이 너무 많을 때 사용하는 방법입니다.


tail -f: 현재 파일의 끝 부분을 실시간으로 계속해서 출력합니다

ex) tail -f nohup.out

 

아래와 같이 배포가 완료됩니다!

 

댓글