AWS EC2 amazon linux 인스턴스 생성 및 spring 프로젝트 배포

2020. 6. 2. 17:53카테고리 없음

* CLI: command line lnterface

유닉스 기반의 리눅스, 우분투, centOS, 그리고 centOS 기반의 amazon linux는 windows처럼 편하게 GUI로 쓸 수 있는게 아니라 불편한 CLI, 즉 콘솔(또는 터미널)로 작업해야 한다.

 

spring project 배포를 위해 알아보다가 이왕에 하는거, aws를 써보자, 이왕에 aws 써보는거, linux로 해보자... 하다가.... 공부할 것이 매우 많아졌다. 깊이있게 하자면 끝도 없이 방대해서, 최대한 간단히 해보려 한다.

 

나는 windows를 쓰고 있기에 xShell이나 PuTTY등을 이용하여 $로 시작하는 console을 쓸 수 있지만, 또 프로그램을 깔고 싶지가 않았다. 어느 분이 생활코딩 aws 댓글로 git for windows를 설치하여, git bash가 있으면 이걸 쓰면 된다하신 것이 생각나서, git bash를 통하여 작업하기로 했다. 

 

* 인스턴스 연결

$ ssh -i {git bash 기준 상대경로로서의 key 위치} ec2-user@{내 인스턴스의 퍼블릭 DNS}
혹은
$ ssh -i {/d/자세한_키_주소} ec2-user@{내 인스턴스의 퍼블릭 DNS}

상대경로로 쓰면 분노할 일이 생기기 때문에 {/드라이브명/주소}로 쓰는 편이 좋다! 나는 c드라이브와 분리하려고 d,e,f 드라이브 중 한 곳에 저장했다.

 

내 아마존 인스턴스로 연결하면 다음과 같이 인터페이스가 바뀐다.

[ec2-user@ip-{내 public ip} ~]$   

ec2-user는 linux 계정명이고, ip가 내 아마존 인스턴스를 가리키고 있기에 '내 컴퓨터가 아닌 내 인스턴스에 위치하는구나'를 알 수 있다.

 

 

* git 설치

$ sudo yum install -y git
$ git --version 

 

 

* 자바, 톰캣 설치

http://progtrend.blogspot.com/2018/06/aws-amazon-linux-2-jdk-tomcat.html

 

* 자바 1.8 설치

$ sudo yum install -y java-1.8.0-openjdk-devel.x86_64

* 톰캣 설치

$ sudo yum install tomcat
$ sudo yum install tomcat-admin-webapps
$ sudo yum install tomcat-webapps
$ sudo yum install tomcat-docs-webapp

 

 

* 오라클 설치(express 11g)

계정을 root로 변경해야 오라클을 설치할 수 있다. 

-> root 계정 변환 및 리눅스 명령어 참고

https://jhnyang.tistory.com/136

 

** 콘솔에서 계정 옮기며 알게 된 사실들!

linux에서 모든 것의 루트, 즉 시작점이 되는 지점은 /이다. 

$ pwd(print working directory: 현재 작업중인 디렉토리 출력, 쉽게 말해 현위치)를 입력했을 때 /이면 $ cd .. 를 입력해도 계속 / 상태이다. 가장 상위 디렉토리라는 의미로 받아들일 수 있다.

$ cd ~를 치면 /root 가 현재위치가 되는데, 이는 root 계정으로 접근할 때의 루트이다. 

$ su ec2-user 를 입력하여 ec2-user 로 로그인하면, $ cd ~를 입력할 때, /home/ec2-user 로 이동한다. 해당 계정의 루트 폴더는 /home/ec2-user 인 셈이다.

가장 상위 디렉토리인 /에 $ mkdir {폴더이름} 으로 새 폴더를 만들면 mkdir: cannot create directory {폴더이름}: Permission denied 이라는 문구가 뜬다. root유저에게만 권한이 있는 것이다. 따라서 오라클 등의 설치를 위해서는 root 유저로 접속하여 진행하자!

 

 

-> 오라클 설치 참고: centOS 기준

https://xxsiyoung.tistory.com/3

*** 가장 좋은 공식 설치 가이드: https://docs.oracle.com/cd/E17781_01/install.112/e18802/toc.htm#XEINL102

 

Database Express Edition Installation Guide - Contents

Oracle® Database Express Edition Installation Guide 11g Release 2 (11.2) for Linux x86-64 E18802-03 July 2011 Welcome to Oracle Database Express Edition Installation Guide for Linux x86-64. This guide covers the following topics: Note: The most up-to-date

docs.oracle.com

 

1. 오라클 설치를 위해서 https://www.oracle.com/database/technologies/xe-prior-releases.html 에 접속하여, 맨 하단의 Oracle Database 11gR2 Express Edition for Linux x64를 다운받는다.

 

 

2. 파일질라나 vsftpd 이용하여 내컴(윈도우10)에 있는, 방금 다운받은 .zip 파일을 amazon linux에 생성되어 있는 usr/local/src/oracle_src로 옮긴다. (폴더 구조 보기도 편하니까, filezilla는 왠만하면 쓰기로..)

 

- 참고: https://medium.com/@decentralized0212/windows10%EC%97%90%EC%84%9C-aws-apache2-%EC%84%A4%EC%B9%98-%EB%B0%8F-ftp-filezila-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4-linux-16-04-a6a905fc67bd

- 참고2: https://babamba-playground.tistory.com/27

 

 

3. 시스템 요구사항에 따라 패키지 전부 설치

# yum install glibc make binutils gcc libaio

공식 가이드에서 다음과 같이 설치할 패키지들과 적합한 버전을 소개하고 있다.

- glibc 크거나 같아야합니다 2.3.4-2.41

- make 크거나 같아야합니다 3.80

- binutils 크거나 같아야합니다 2.16.91.0.5

- gcc 크거나 같아야합니다 4.1.2

- libaio 크거나 같아야합니다 0.3.104

 

 

4. 스왑 공간 요구 사항 충족

참고: https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-memory-swap-file/

 

스왑 파일을 사용하여 Amazon EC2 인스턴스의 스왑 공간으로 메모리 할당

Amazon EC2(Amazon Elastic Compute Cloud) 인스턴스에서 스왑 파일로 사용할 메모리를 할당하려고 합니다. 어떻게 해야 합니까?

aws.amazon.com

Oracle Database XE에 필요한 최소 스왑 공간은 RAM 크기의 2GB 또는 2 배 중 작은 쪽이다.

이 설정을 해주지 않으면, 아래와 같은 경고 문구가 출력되면서 실패한다.

This system does not meet the minimum requirements for swap space.  Based on
the amount of physical memory available on the system, Oracle Database 11g
Express Edition requires 1966 MB of swap space. This system has 0 MB
of swap space.  Configure more swap space on the system and retry the
installation.

위에 보면 나는 1966 MB만 필요하다고 하지만, 나도 초보이고 나중에 문제 생기기 싫어서 그냥 넉넉히 2기가를 할당해주었다.

# sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

결과:

2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB) copied, 31.7339 s, 67.7 MB/s

이하의 명령어는 메모리 할당을 마쳤기 때문에 상기 aws 답변 가이드와 동일하다...

남은 명령어는 해당 페이지 참고~~

 

5. .zip파일 풀고 cd Disk1 하여 rpm 실행한다~

# rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm

설치하면 설정을 건드리게 되는데 나는 톰캣 포트번호인 8080과 오라클의 8080이 겹쳐서 어느 블로그에서 본 대로 오라클을 9000으로 설정해주었다.

Specify the HTTP port that will be used for Oracle Application Express [8080]:9000

sys 비번도 잘 입력해주면(절대 까먹지 말자..) 설치는 일단 끝!

 

 

6. Oracle Database XE 환경 변수 설정

 

마찬가지로 공식 가이드를 보자~

갑자기 당황스럽게 shell에 맞는 파일에 들어가서 환경변수를 설정해야 한다는데, 나는 shell이 뭔지 모른다.

검색해봤다: https://jhnyang.tistory.com/57  : 와 여기 대박 강의 맛집이다.. 설명 너무 좋고 완전 강의식으로 작성해주셨다~

 

[리눅스]셸(Shell)이란? 셸의 변경, 쉘 개념, 기능, 종류와 특징(sh, bash, csh, tcsh, ksh)

리눅스 완전 정복 : 리눅스 목차 셸 스크립트 프로그래밍을 하려면 셸이 무엇인지 먼저 알아야겠죠! 셸(Shell)이란? 리눅스의 셸은 명령어와 프로그램을 실행할 때 사용하는 인터페이스입니다. 좀

jhnyang.tistory.com

 

더 검색하다가 겁나 좋은 리눅스 튜토리얼 사이트를 찾았다!!

https://www.tutorialspoint.com/unix/unix-what-is-shell.htm

 

Unix / Linux - What is Shells? - Tutorialspoint

Unix / Linux - What is Shells? A Shell provides you with an interface to the Unix system. It gathers input from you and executes programs based on that input. When a program finishes executing, it displays that program's output. Shell is an environment in

www.tutorialspoint.com

In Unix, there are two major types of shells −

- Bourne shell − If you are using a Bourne-type shell, the $ character is the default prompt.

- C shell − If you are using a C-type shell, the % character is the default prompt.

 

나는 대충 git bash로 버무리고 있는데, 내가 사용하는 것이 Bourne shell [bɔ́:rn] type이고, bash shell임을 알게 되었다~ 

드디어 git bash가 왜 bash인지 알게 되었구나~ 하하하하

 

그동안 명령어를 치고 사용자를 바꿔가면서 알았지만, $, #을 가리켜 프롬프트라고 하고, #는 root유저에 한해 나타나는 프롬프트인 것도 알게 되었다.

 

환경변수 설정은 그냥 하라는 대로

$ ./oracle_env.sh

한 줄 입력했다.

 

 

7. 막힌 부분... 

공식 가이드를 따라했는데 여기부턴 설명이 부실해서 블로그를 참고했다.

참고: https://kuookuoo.tistory.com/entry/DB-%EC%98%A4%EB%9D%BC%ED%81%B4-11g-XE-%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%84%A4%EC%B9%98

 

[DB] 오라클 11g XE 리눅스 설치

너무나도 유명한 오라클 11g XE를 설치해 보도록 하겠습니다. 오라클 11g XE의 XE는 express edition의 약자 입니다. XE는 라이센스와 기능 그리고 성능등에 제한이 있지만.. 개인용 혹은 소규모 시스템

kuookuoo.tistory.com

- su - oracle 해주면 설치 시 자동생성된 oracle 계정으로 갈아탈 수 있는데, 프롬프트가 $나 #에서 -bash-4.2$ 로 바뀐다.

- 위 블로그에서 가르쳐주는 대로 ORACLE_BASE 설정해주면 cd ~ 했을 때 해당 경로로 이동한다. 

 

- sqlplus 접속해서 help나 나가기를 하고 싶을 때:

For a list of known commands enter HELP and to leave enter EXIT.