티스토리 뷰

부스트코스를 공부하면서 배웠던 서블릿과 JSP, 빌드 도구 Maven을 이용해서 조그마한 자바 웹 애플리케이션을 만들고 있었다.

로컬에서 테스트하면서 기능적인 부분을 거의 다 완성하고 나니 이걸 실제로 서버에서 돌리려면 어떻게 해야 하나, 라는 생각이 들었다. 이걸 누가 쓴다 치면 내 컴퓨터를 항상 켜놔야 서버가 돌아가는건데 그럴 수는 없으니까.

 

이럴 때 이용할 수 있는 서비스가 AWS 같은 클라우드 서비스다. 클라우드에서 VM을 만들고 그 안에 웹 서버 소프트웨어랑 내가 만든 애플리케이션을 넣어서 서버로 쓰는 것이다.

근데 이렇게 하려고 보니까 나는 윈도우에서 GUI로 작업을 했는데 서버용 VM은 리눅스 CUI라는 점이 생각났다. 윈도우에서 앱을 만들기 위해서 했던 과정들 (이클립스에서 Maven Project를 만들어서...) 을 리눅스에서 똑같이 해야 하나? 근데 리눅스에도 이클립스가 있나? 없으면 Maven은 어떻게 써야 하나? 리눅스라곤 접속해서 뭐 찾아보는 법만 알지 리눅스로 뭘 개발해본 적은 한번도 없어서 순간 막막함이 몰려왔다.

 

찾아보니까 다행히 리눅스 서버 내에서 복잡한 작업을 할 필요 없이, Maven을 이용해서 윈도우에서 작업하던 프로젝트를 그대로 리눅스 서버로 배포 (Deploy) 할 수 있는 방법이 있었다. 이 포스팅에서는 그 방법을 소개한다.

 

 

1. AWS VM 준비

- AWS 콘솔에서 EC2 -> 인스턴스 -> '인스턴스 시작' 버튼을 눌러 VM 인스턴스를 만든다.

> 이미지 선택에서 쓸 OS를 고르면 되는데 여기서는 Ubuntu 18.04 이미지를 선택했다

> 인스턴스 유형은 필요한 사양에 맞춰서 고른다. 테스트용이면 프리 티어도 적용되는 t2.micro를 고르자

> '6. 보안 그룹 구성' 으로 가서 22번, 8080번 포트를 허용하는 규칙을 만든다. 22번은 SSH로 VM에 접속하기 위해서 필요하고 8080은 톰캣 서버의 기본 포트 번호다.

> '시작하기' 를 누르면 키 페어 어쩌구 하는 창이 나오는데 '새 키 페어 생성' 을 선택하면 .pem 파일을 다운로드받는다. 파일을 잘 저장해두고 '인스턴스 시작' 을 누른다.

 

 

- 만들어진 VM 인스턴스에 접속하기 위해서 SSH 클라이언트 프로그램이 필요하다. 대표적인 SSH 클라이언트 프로그램인 PuTTY를 이용해서 VM 인스턴스에 접속해보자. 여기에도 가이드가 있다.

> PuTTYgen을 설치하고 실행한다. PuTTY에서는 인증용 키 파일로 .ppk라는 확장자를 쓰는데, 위에서 받았던 키 페어 파일은 .pem이다. PuTTYgen을 이용하면 .pem 파일을 .ppk로 변환할 수 있다.

> PuTTYgen 창에서 'Load' 클릭 -> 위에서 받았던 .pem 파일 선택 -> 'Save private key' 클릭 (경고창 무시하고 예) -> .ppk 파일 저장

> PuTTY를 설치하고 실행한다. 처음 뜨는 화면에서 'Host Name' 칸에 'ubuntu@(인스턴스의 퍼블릭 DNS)' 를 입력한다. 퍼블릭 DNS는 콘솔에서 인스턴스를 클릭하면 아래쪽에 표시된다. Port 번호는 22, 커넥션 타입은 SSH로 되어있는 것을 확인한다.

> 왼쪽의 카테고리에서 SSH -> Auth로 가서 'Browse...' 버튼을 클릭하고 위에서 만들었던 .ppk 파일을 선택한다.

> 'Open' 버튼을 누른다. 인증 어쩌구 하는 긴 문장이 나오는 창이 뜨면 '예' 를 누르면 인스턴스에 접속할 수 있다.

 

2. (AWS VM 측) Tomcat 설치 및 설정

- 아래의 명령어를 입력해서 Tomcat 8을 설치한다.

> apt-get update를 해주지 않으면 tomcat8 설치 도중에 오류가 났다

> 우분투 apt-get의 특성상 tomcat8만 설치하면 tomcat8 실행에 필요한 다른 패키지들 (의존성. 예를 들어 JDK 등) 까지 같이 설치해준다. 다만 그냥 이렇게 하면 JDK 1.8 버전이 자동으로 깔리는데 혹시 더 높은 버전의 JDK를 써야할 경우 (윈도우 환경에서 더 높은 JDK 버전으로 작업하고 있었던 경우. 내가 그랬다...) JDK를 미리 설치한 뒤 tomcat8을 설치하자.

 

sudo apt-get update // apt-get으로 받을 수 있는 패키지 리스트를 업데이트한다
sudo apt-get install tomcat8 

브라우저에서 http://(인스턴스의 퍼블릭 IP주소):8080 으로 접속해서 아래와 같은 화면이 뜬다면 설치가 완료된 것이다.

 

 

- 톰캣 서버에 원격으로 배포를 하기 위해서 톰캣의 Manager 페이지를 이용할 것인데, 이 Manager 페이지에 접근하기 위해서는 추가로 해줘야 할 일이 있다.

> tomcat8-admin 이라는 패키지를 추가로 설치한다.

 

sudo apt-get install tomcat8-admin

> /etc/tomcat8 폴더로 이동해서 'tomcat-users.xml' 파일을 수정한다. <tomcat-users> ... </tomcat-users> 태그 사이에 아래의 내용을 넣어주면 된다. 관리자 계정을 정의하고 특정한 권한을 주는 것이다.

 

<role rolename="manager-script"/> 
<role rolename="manager-gui"/> 
<role rolename="manager-jmx"/> 
<role rolename="manager-status"/> 
<user username="아이디" password="비밀번호" roles="manager-gui,manager-script,manager-status,manager-jmx"/>

> 톰캣을 재시작한다.

 

sudo service tomcat8 stop
sudo service tomcat8 start

> 브라우저에서 http://(퍼블릭 IP주소):8080/manager 로 접속한다. 인증 창이 뜰텐데 위의 설정 파일에 넣어줬던 아이디와 비밀번호를 입력한다. 아래와 같은 화면이 뜨면 성공이다.

 

 

3. (윈도우 측) 이클립스에서 Maven Build

- Maven Project의 pom.xml 파일에 배포를 위한 플러그인을 추가한다.

> 파란색 글씨로 표시한 부분을 위에서 설정한 대로 편집한다.

 

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version> <configuration>
<warsourcedirectory>src/main/webapp</warsourcedirectory>
<webxml>src/main/webapp/WEB-INF/web.xml</webxml>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version> <configuration>
<url>http://(인스턴스 IP주소):8080/manager/text</url>
<path>/프로젝트명</path>
<username>아이디</username>
<password>비밀번호</password>
</configuration>
</plugin>

- 배포할 프로젝트를 이클립스에서 마우스 오른쪽 클릭하고 Run As - Run Configurations... 을 선택한다

> 왼쪽의 카테고리에서 Maven Build를 오른쪽 클릭 -> New 버튼 클릭

> Base directory를 Workspace에서 선택 (현재 프로젝트를 선택한다)

> Goals에 'tomcat:deploy' 라고 입력한다

> Run을 누르면 배포가 시작된다

 

- 브라우저에서 'http://(인스턴스 IP주소):8080/프로젝트명' 으로 접속해서 내가 만든 앱의 메인화면이 뜨는지 확인해보자.

 

 

4. (Optional) (AWS VM 측) 배포 결과 확인 및 path 설정

- /var/lib/tomcat8/webapps 폴더로 이동해보면 배포한 프로젝트 폴더랑 war 파일이 있는 것을 확인할 수 있다.

 

 

- 'IP주소:8080/프로젝트명' 이 아니라 'IP주소:8080' 만 입력하면 바로 내가 만든 앱이 뜨게 하고 싶다면, 톰캣의 설정 파일 중 server.xml이라는 파일에서 URL path 설정을 해주면 된다.

> /etc/tomcat8/server.xml 파일의 <Host> ... </Host> 태그 사이에 아래와 같은 코드를 입력

 

<Context docBase="프로젝트이름" path="/" reloadable="true"/>
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함