https://hunsolo.tistory.com/55
프로젝트를 배포하기 위해 네이버 클라우드 플랫폼에서 가상 서버를 생성하였다.
본격적으로 배포를 하기 전 Putty와 FileZilla 라는 프로그램을 설치해야 한다.
두 프로그램에 대해 간단히 설명하자면
Putty : 가상 서버에 접속하기 위한 클라이언트 소프트웨어로 데이터를 암호화하고 보안성을 높이는 SSH 프로토콜을 지원하는 프로그램이다. Window 명령프롬프트나 CMDER 처럼 가상 서버에서 터미널의 기능을 할 수 있다.
FileZilla : 파일 전송 프로토콜 (FTP), FTPS (FTP Secure), SSH File Transfer Protocol (SFTP)를 지원하는 오픈 소스의 무료 FTP 클라이언트 및 서버 소프트웨어. 컴퓨터와 원격 서버 간에 파일을 전송하고 관리하는 데 유용하다. 나는 FileZilla를 이용하여 내 컴퓨터의 프로젝트 파일을 가상 서버로 복사하여 배포할 것이다.
1.우선 Putty 홈페이지에서 프로그램을 설치 후 가상 서버에 접속한다.
설치 후 실행해보면 위와 같은 창이 하나 뜰 것이다.
네이버 클라우드 플랫폼에서 생성한 가상 서버의 상세 정보를 클릭해보면 포트 포워딩 정보에
서버 접속용 공인 IP와 외부 포트가 보일 것이다. 이걸 입력해서 접속하면 된다. (설정을 저장해주자.)
Alert 창이 하나 나오는데 그냥 Accept 선택해서 접속하면 된다.
사용자 이름과 관리자 비밀번호를 입력해줘야 한다. 서버 생성 당시 발급받은 복잡한 비밀번호를 입력해주면 되는데 입력해도 화면엔 안보이니 메모해둔 비밀번호를 복사 후 마우스 우클릭 후 엔터 치면 편하다.
비밀번호가 정상적으로 확인 되면 위와 같이 나올 것이다. 이제 내가 배포하고 싶은 프로젝트의 언어를 가상 서버에 설치해줘야 한다. 로컬 컴퓨터에서도 스프링 부트를 사용하기 위해 Java를 설치했듯이 서버가 코드를 이해하고 구동시키기 위해서는 비슷한 과정을 거쳐야 한다.
2. 웹 서버 Apache2 및 프로젝트 언어 설치하기 (Java)
프로젝트를 구동하기 위해서는 웹 서버를 설치해주어야 한다.
Nginx, Apache2,Tomcat 등이 있는데 나는 Apache2를 설치했다.
우선 sudo apt-get update 후 sudo apt-get install apache2 명령어를 입력해주자.
$ sudo apt-get update
$ sudo apt-get install apache2
설치 후 sudo service apache2 start로 웹 서버를 실행 후 로컬호스트로 접속하면 아래와 같은 default 페이지가 나온다.
$ sudo service apache2 start
이렇게 나오면 Apache2가 잘 설치된 것이다.
이제 배포할 프로젝트에 맞는 언어를 설치해줘야 한다.
나는 스프링 부트 프로젝트만 Ubuntu에 배포할 예정이므로 Java를 설치해야 한다.
버젼 역시 내 프로젝트와 맞춰야 한다. Java11 버젼으로 개발한 프로젝트이니 11버젼을 설치하면 된다.
여기서 버젼을 잘못 선택하여 설치하면 후에 오류가 발생하므로 주의해야 한다.
$ sudo apt install openjdk-11-jdk
설치 후 java -version 명령어로 적절한 버젼이 설치되었는지 재확인 해보자. 나는 11 버젼을 정상적으로 설치한 것으로 확인되었다. 이제 여기에 내 프로젝트 파일을 옮긴 후 실행해주면 배포가 완료된다.
파일을 옮겨주기 위해 FileZilla를 먼저 설치해주자.
3.FileZilla 설치 후 프로젝트 파일 가상 서버로 이동하기
중앙에 초록색 버튼을 클릭해 프로그램을 설치해준다.
설치 후 실행해보면 위처럼 창이 하나 뜬다. SFTP 선택 후 키 파일을 추가해준다.
여기서 추가해야 할 키 파일은 네이버 클라우드 플랫폼에서 생성하고 저장한 인증 키다.
인증 키와 관리자 비밀번호는 꼭 잘 저장해두어야 한다.
키 확인 후 새 사이트를 생성해준다. 이 새 사이트가 곧 내가 생성하고 접속한 가상 서버를 의미하는 것이다.
프로토콜은 SFTP를 선택하고, Putty로 서버에 접속했던 것 처럼
호스트에는 서버 접속용 공인 IP, 포트에는 외부 포트 번호를 입력하고, 비밀번호는 관리자 비밀번호를 입력해 연결해줘야 한다.
연결이 완료되면 위처럼 분할 창이 나오는데, 왼쪽이 내 로컬 컴퓨터, 오른쪽이 가상 서버의 디렉토리이다.
이제 로컬 컴퓨터의 스프링 부트 프로젝트 파일(.jar)을 가상 서버 디렉토리로 이동해주면 배포 준비가 끝나는 것이다.
만약 프로젝트를 아직 build하지 않았다면 프로젝트 경로에서 터미널을 이용해 .jar 파일로 build 해줘야 한다.
나는 gradle로 개발했으므로 gradlew build 명령어로 build 해주었다.
$ gradlew build
# 위 명령어 오류시 ./gradlew build
위처럼 BUILD SUCCESSFUL이라고 나오면 정상적으로 build를 완료한 것이다.
가상 서버 디렉토리로 옮기는데까지 성공했다면 이제 배포해주면 된다.
sudo java -jar /경로/ "빌드파일 이름.jar" 명령어를 입력해주면 된다. 경로와 파일 이름은 내 환경에 맞춰 변경해줘야한다.
나는 /root 경로 밑에 back-0.0.1-SNAPSHOT.jar 파일이 있으므로 아래와 같이 입력했다.
$ sudo java -jar /root/back-0.0.1-SNAPSHOT.jar
명령어 입력 후 스프링부트 프로젝트 배포가 시작된다.
위처럼 오류 메시지 없이 로컬에서 스프링부트 서버를 가동했을 때와 똑같은 로그가 찍혔다면 성공적으로 배포된 것이다.
4. URL 접속하여 정상 배포 확인
이제 url에 공인 IP:포트 번호를 입력하여 접속 했을 때 스프링부트 페이지가 나온다면 성공이다.
*여기서 주의할 점은 서버 공인 IP와 서버 접속용 공인 IP를 헷갈려서는 안된다.
배포 후 url을 통해 접속하려면 위에 표시된 공인 IP(Instance ID)를 입력해야 한다. Putty와 FileZilla를 사용할 때 활용했던 서버 접속용 공인 IP는 말 그대로 서버 접속용이지 배포 된 IP 주소가 아니다. 포트 번호 또한 외부 포트가 아니라 스프링 부트 설정 파일 (.yml 혹은 .properties) 에서 기재한 포트번호를 치고 들어가야 한다.
이 공인 IP와 포트 번호를 도메인을 구입해 연동하면 우리가 흔히 아는 웹사이트들 처럼 https://hunsolo.tistory.com/ 같은 형식의 주소로 접속이 가능하다. 다만 나는 풀스택 웹사이트를 개발했고 프론트엔드를 배포한 구글 파이어베이스에서 발급받은 URL을 활용하여서 딱히 도메인이 필요하지는 않았다. 그래서 도메인 연동 과정까지는 다루지 않을 것이다.
정상적인 정보를 url에 입력했다면 스프링 부트 프로젝트의 초기 페이지가 나올 것이다.
나는 Spring Security를 설정했기 때문에 아래와 같은 화면이 나온다.
이제 백엔드 스프링부트 프로젝트를 가상 서버에 배포 완료하였다.
나는 리액트와 스프링부트 MySQL을 모두 연계한 풀스택 프로젝트를 개발하였고, 프론트엔드 / 백엔드 / DB를 모두 분리하여 배포할 것이다.
다음 포스트에서는 프론트엔드 리액트 코드 배포를 다룰 예정이고, 구글 파이어베이스 호스팅을 활용한 배포 과정을 기록하려 한다.
'Server' 카테고리의 다른 글
[Node.js] Node.js의 특징 (0) | 2024.01.16 |
---|---|
[Ubuntu] 애플리케이션 백그라운드 실행하기 (0) | 2023.09.22 |
[구글 파이어베이스 호스팅(Firebase Hosting)] 프론트엔드 리액트 프로젝트 배포하기 (0) | 2023.09.22 |
[네이버 클라우드 플랫폼(NCP)]프로젝트 배포하기 1.서버 생성 (1) | 2023.09.21 |
댓글