본문 바로가기
리눅스

ubuntu] aws에 프로그램 배포하기

by 김마리님 2020. 7. 7.

aws란 아마존이 제공하는 웹 클라우드 서비스이다.

Iass 기반으로, 인프라를 제공해주는 사이트이다. (비슷한 맥락으로 cafe24가 있는데, 이 사이트 경우에는 paas로 플랫폼을 제공함)

https://aws.amazon.com/ko/free/

 

AWS 프리 티어

프리 티어를 이용해 60가지가 넘는 제품을 체험하고 AWS에 구축할 수 있습니다. 사용하는 제품에 따라 세 가지 유형의 프리 티어 오퍼가 제공됩니다. 각 제품에 대한 자세한 내용은 아래를 참조하

aws.amazon.com

먼저 이 서비스를 신청하기 위해서 필수로 필요한 것이 해외 결제용 카드이다(visa, masterPay가 가능한 계정).

계정을 생성하고, 카드를 등록한다. 그럼 1달러가 선으로 결제되는데, 이 금액은 카드 확인용이며 추후에 환불된다.

aws는 프리티어라고, 12개월동안 월 750시간의 서버를 무료로 제공하며, 12개월이 지난 이후 사용금액을 지불한다.

이제 서버를 열어보자.

먼저 서버를 근처에 두자. 아마존이 나와 호스팅 되는 서버가 가까울 수록 비용이 증가되는 경향이 있는데, 지금은 프리티어니까(ㅎ)

서버를 설정하고 서비스 - EC2로 이동한다. EC2는 아까도 말했다시피, 아마존은 클라우드 서비스이고, EC는 클라우드 서비스를 위해 제공된 빈 컴퓨터이다.

 

다음 인스턴스를 누르고 서버를 설정하는데, 우리는 서버를 이용해 배포만 할 예정이므로, 우분투 서버를 고른다.

 

이후에 사용할 가상 서버의 유형을 고르는데, 우리는 그냥 프리티어의 유형을 고른다 (제공하는 메모리가 1GB밖에 안된다니)

 

다음 검토 및 시작을 누르면 가상서버에 대한 다양한 설정을 만질 수 있는데, 가상서버의 보안을 설정해보자.

보안그룹 편집을 누르면 포트에 대한 편집을 할 수 있다.

선으로 열려있는 포트는 22번 포트이다. 이 포트는 well-known 포트로, 우리가 가상 컴퓨터로 입력하는 셀 명령어를 SSH(보안 서버)를 이용해 전달해 줄 것이다. 다음, 우리는 톰캣을 이용해 웹서버를 열 예정이므로 톰캣의 포트인 8000번을 새로 열어준다.

이 때, 소스 옆에 0.0.0.0의 입력을 통해 IP입력을 하면, 해당 포트를 통해 특정 ip만 접근 가능하도록 해준다.

 

다음 스토리지 편집을 해준다.

이 스토리지 편집을 통해 프리티어는 최대 30GB의 용량을 확보할 수 있다.

이후 시작을 누르면 키 페어에 대한 말이 나오는데, 처음 서버를 생성하는 것이라면 키 페어가 없을 것이다. 키 페어의 이름을 지정하고, 보안키를 다운로드 받는다.

 

이제 우리가 만들어둔 가상 컴퓨터에 셀 명령어를 입력해 조작해보자.

이 조작을 할 때 가장 많이 사용하는 프로그램 중 하나는 putty이다. 이걸 다운받자(32, 64 맞는 걸로 다운 받으면 되겠다.)

https://www.putty.org/

 

Download PuTTY - a free SSH and telnet client for Windows

Is Bitvise affiliated with PuTTY? Bitvise is not affiliated with PuTTY. We develop our SSH Server for Windows, which is compatible with PuTTY. Many PuTTY users are therefore our users as well. From time to time, they need to find the PuTTY download link. W

www.putty.org

이 프로그램의 문제는, 우리가 받은 보안키의 확장자는 pem이지만, putty는 ppk 형태의 보안키만 제공하기 때문에, 먼저 ppk로 보안키를 변경해야한다. 물론 ppk로 바꿔주는 프로그램을 putty가 제공한다.

puttygen이라는 프로그램이 함께 다운로드 되는데, 이 프로그램을 실행해보자. 

 

Load를 통해 받은 파일을 올리면(pem 파일을 인식하지 못하니까 모든 파일 확장자를 통해 찾는다.) 자동적으로 키를 변환한다. 이 변환된 파일을 Save private key를 통해 저장한다.

 

다음 putty를 켠다.

 

Host에 아마존에서 부여받은 IP를 넣는다. 또, 우리는 리눅스 셀 명령어를 위해 켰으니 22번 포트를 사용한다.

또 세션을 저장해놓고 두고두고 사용하기 위해 세션을 저장한다.

다음, SSH 메뉴를 펴서 Auth 메뉴 속의 private key를 누르고, 아까 확장자를 변경한 ppk 파일을 로드한다.

 

(이 때 화면이 불편할 수 있는데, 이런 것은 Apperence와 colour에서 지정 가능하다. 지정하고 Session에 저장하는 것도 잊지 말기.)

 

이제 cmd 화

면이 뜰 것이다. 먼저 ubuntu 계정으로 로그인 한다(먼저 만들어져있는 계정임).

 

 

다음과 같은 화면이 뜬다면 로그인에 성공한 것이다.

리눅스는 먼저 파일을 가져올 저장소를 업데이트(갱신)/업그레이드 해야한다.

(명령어)

sudo apt-get update
sudo apt-get upgrade

 

이 때 sudo를 붙이는 것은 업데이트와 업그레이드를 관리자 권한으로 실행하기 위해서이다.

 

저장소를 업그레이드 했다면, 이제 웹서버용 톰캣을 설치한다.

기본적으로 설치는 search 명령어를 통해 찾지만, tomcat이 버전별로 있으므로, 사용할 버전은 grep 명령어를 통해 찾아준다. grep는 문자열을 필터링 해주는 명령어이다.

 

(명령어)

sudo apt-cache search tomcat | grep tomcat8

tomcat8이 저장소에 있음을 확인했다면, 톰캣을 설치한다.

 

(명령어)

sudo apt-get install tomcat8

 

톰캣은 설치 후 자동으로 실행되므로, 톰캣이 움직이고 있는지 확인해보자. 

현재 포트 실행을 알아볼 수 있는 명령어는 다음과 같다.

 

(명령어)

netstat -nlpt

다음과 같이 8080포트가 잡혀있다면 톰캣이 올바르게 설치된 것이다.

하지만 우리가 열었던 포트는 8000이기 때문에, 포트를 수정해야 한다.

 

이 방법은 두 가지가 있는데,

1) 아마존 인스턴스에서 8080 포트를 열기

2) 톰캣 서버의 서버 포트 설정을 8000번으로 변경하기

 

이 포스팅에서는 톰캣 서버의 포트를 변경할 것이다(8080포트는 oracle이 주로 사용하는 포트이다.).

먼저 톰캣이 어떻게 산재(?)해 있는지 확인하자. 리눅스는 윈도우와 다르게 파일을 다운로드 받으면 그 용도에 맞게 파일들을 분산하기 때문이다.

그러므로 먼저, 파일을 찾아보자.

 

(명령어)

sudo find / -name tomcat8

다음과 같이 다양하게 흩어진 톰캣을 찾을 수 있다. 여기서 server.xml 파일을 찾아야 한다. 아마 etc에 있을 것이다.

 

(명령어)

cd /etc/tomcat8
/etc/tomcat8$ ls

server.xml 파일이 있는 것을 확인하면, 이제 권한을 확인해보자. 이 파일을 자세히 보면 파일의 권한을 확인할 수 있다.

파일을 자세히 확인하는 옵션은 -l를 이용해 확인한다.

 

(명령어)

/etc/tomcat8$ ls -l

맨 왼쪽 네모 안에 있는 것이 권한이다

10개의 글씨(?)로 되어있는데,

1번 - : 형식을 의미한다. - 은 이것이 파일임을 의미한다.

2번 - ~ 4번 - : 소유자의 권한을 의미한다. 소유자는 root이므로 root는 rw-를 가지고 있는 셈이다. r은 read의 약자, w는 write의 약자이다

5번 - ~ 7번 - : 그룹의 권한을 의미한다. 그룹은 tomcat8이다. 그룹은 r--이므로 읽는 권한만 있다.

8번 - ~ 10번 - : 제3자(guest)의 권한을 의미한다. --- 이므로 아무런 권한이 없다.

 

우리는 ubuntu로 로그인 했으므로 제 3자의 권한을 가지고 있다. 관리자(sudo) 권한을 이용해 파일의 권한을 수정한다.

이 때 알아야 할 것이 있다. read가 가지는 권한의 수는 4, write는 2, x(실행)은 1의 권한을 가진다.

즉, 읽고 쓰고 싶다면 권한을 6을 주고, 읽고 실행하고 싶다면 5의 권한, 단순히 실행만 가능하게 하려면 1의 권한을 부여한다.

이를 바탕으로 권한을 부여해본다. 부여할 때, 부여하고 싶은 것만 부여하는 것이 아닌, 반드시 (소유자)(그룹)(3자)순으로 부여한다. 권한을 부여하는 명령어는 chmod이다.

 

(명령어)

sudo chmod 646 server.xml

 첫 6은 소유자, 두번째 4는 그룹, 세번째 6은 제3자이다.

 

이제 다시 ls -l을 이용해 권한을 재확인하자.

권한이 rw-로 변경된 것을 확인할 수 있다.

이제 이것을 에디터로 수정해 볼 것이다. 리눅스 에디터에는 vi와 nano가 있는데, 필자는 nano를 이용한다.

 

(명령어)

nano server.xml

(만일 포인터가 있는 곳에 파일이 없다면, 경로까지 지정해줘야한다.)

 

열린 nano를 따라 쭉 이동해보면, Connector 태그가 있다. 이 태그 속 포트를 8000으로 수정해준다.

ctrl+x를 통해 저장하고, 저장된 후 바로 enter을 입력하면 에디터 밖으로 이동할 수 있다.

 

톰캣의 설정이 변경되었으므로, 톰캣을 재시작 해줘야한다. 재시작하는 명령어는 restart 명령어이다.

 

(명령어)

sudo service tomcat8 restart

다시 netstat를 이용해 포트가 변경된 것을 확인해보자.

 

이제 톰캣의 설정은 완료되었다. 

이제 java 파일을 배포가능한 파일로 만든다. 요즘은 git clone을 많이 쓰지만, 좀 더 원초적인 war파일로 압축해보자.

war파일은 톰캣이 자동적으로 파일을 압축해제해주기 때문에 이 방법으로 export 하는 것이 좋다.

 

(STS 기준)

1. file-export

 

 

2. war 선택

 

3. war 파일이 저장될 위치 지정

(프로젝트 안에 파일이 많을 경우 파일 지정)

 

만들어진 war 파일을, 리눅스 파일을 배포하기 쉬운 툴로 배포한다.

winSCP 라는 프로그램을 다운로드 받자.

https://winscp.net/download/WinSCP-5.17.6-Setup.exe

 

Downloading WinSCP-5.17.6-Setup.exe :: WinSCP

Problems with the download? Direct download

winscp.net

파일을 다운로드 받고 켜서 아마존 호스트와 포트번호, 로그인 하는 아이디를(ubuntu)를 입력한다.

또, 고급으로 들어가 받아온 개인 키도 로드 한다.

마찬가지로 세션을 저장하고 로그인 하면 다음과 같은 화면이 등장한다.

웹서버가 로딩되는데는 webapps 내부 파일이 로딩되므로, webapps내부에 war 파일을 넣어야 하는데,

먼저 리눅스에서 권한을 확인하고, 권한을 재부여한다.

 

(명령어)

sudo chmod 777 webapps/

 

이후 다시 winSCP로 돌아와서 webapps 내부에 war 파일을 드래그 해서 넣고 새로고침 하면 자동적으로 파일이 풀려있다.

마지막으로, 아마존 IP와 포트번호, 컨텍스트 루트를 입력하면 파일이 열리는 것을 확인할 수 있다.

 

반응형