우리네 장

[AWS] EC2 linux2 AMI 서버에 apache, tomcat 올려서 .war 실행해보기 본문

작업/온라인 아카데미

[AWS] EC2 linux2 AMI 서버에 apache, tomcat 올려서 .war 실행해보기

qpmi1zm29 2021. 3. 26. 14:32

### EC2 linux2의 기본 user는 'ec2-user' 고정 

###환경 변수란? ###

 

엄청 큰 범위의 전역 변수 느낌?

OS가 참조하는 변수를 의미한다.

 

만약에 환경 변수가 설정 되어있지 않으면, cmd창에서 'java -version'과 같은 명령어는 실행되지 않는다.

 

jdk 는 개발과 실행 모두를 위한 directory이고, jre는 실행만을 위한 directory라서 

개발 시에는 jdk가 안정성이 더 높다.

 

EC2에서는 지원하는 linux를 'yum list java'로 확인 할 수 있고 install 명령어로 설치 가능하다.

 

java 명령어는 java 파일을 compile해서 실행하는 명령어이고,

javac 명령어는 java 파일을 class파일로 compile 해주는 명령어 이다.

 

 

---> 그래서 java를 설치 했고, 사용하려는 tomcat은 jdk위에서 돌아가기 때문에

환경 변수를 설정해 주었다.

 

' vi /etc/profile '

맨 마지막 줄에

export JAVA_HOME, JRE_HOME, PATH, CLASSPATH 를 설정해 준다.

JAVA_HOME, JRE_HOME 설정 시 bin까지 내려가지 X

-----------------------------------------------------------------------------------------------------------------------------------

 

###apache 설치

 

AWS 공식 가이드 문서에 EC2 linux2 를 위한 명령어가 나와있다.

 

sudo yum update -y :  모든 소프트웨어를 최신 상태로 업데이트 해준다. (-y옵션 : 묻지 X)

 

sudo yum install -y httpd : 아파치 설치

 

systemctl start / stop httpd : 아파치 실행 및 멈춤

 

systemctl enable httpd : 서버가 가동될 때 자동으로 아파치 실행해주는 설정 명령어

 

 

**** 아파치의 기본 포트는 80번 포트이고, /var/www/html 이 기본 문서 루트 경로이다. 

소유자는 root 이다. 

 

-----------------------------------------------------------------------------------------------------------------------------------

### DB

 

나의 경우는 PostgreSql RDS가 이미 만들어져 있는 상태였다.

 

RDS 서비스를 사용하지 않고,

그냥 EC2에다가 DB를 설치해도 상관 없다. 

 

단지 EC2에서 DB 접근을 위한 목적이라면 client 프로그램만 설치해도 된다.

--> 이럴거면 linux 보다는 local에 있는 client 프로그램으로 접근하는게 더 편할 거 같다.

 

 

application이 돌아가기 위해서는 당연히 DB와 연결이 되어 있어야 한다.

--> EC2 인스턴스에서 별도의 설치 X

     tomcat의 context.xml에 DB정보를 설정해 주거나, 

     스프링을 사용한다면 datasource-context.xml에서 datasource bean을 알고있는 RDS 정보로 설정해주면 된다.

 

 

-----------------------------------------------------------------------------------------------------------------------------------

### S3

 

아직 초기 구성 단계의 application이라서 이미지나 동영상을 서버에서 가져오거나 업로드 시킬 일이 없다.

( 나중에 기능이 추가 된다면 어떻게 될지 모르겠다 )

 

그러나 EC2를 처음 구성해 보기 때문에 tomcat .zip 파일을 S3에 업로드 한 뒤

EC2 에서 받아서 사용해 보았다. ( 그냥 편하게 FTP 써도 된다. )

 

1 ) 먼저 해당 S3 자원에 접근할 수 있는 IAM이 필요하다

    ( 내가 가지고 있는 자원들에 대한 권한을 부여하는 과정 --> 다른 사용자가 위 IAM을 가지고 나의 자원에 접근할 수 있다. )

각 자원 별, 액션 별로 생성이 가능하다.

 

2 ) 발급 받은 AccessKey, SecretAccessKey 를 잘 보관하고 있는다.

 

3 ) EC2 에서 'aws configure' 명령을 실행하고 발급 받은  AccessKey, SecretAccessKey 로 인증을 진행한다.

-------> AWS CLI 사용

 

4 ) 'aws s3 ls'  명령어 : 접근 가능한 s3의 목록이 나온다.

 

5 ) 'aws s3 cp <source> <target> [--options]' 객체 복사 명령어

S3의 자원에 접근 해서 EC2로 가져올 수 있다.

 

aws s3 cp s3://bucket-name/filename.txt ./

aws s3 cp s3://bucket-name/example s3://my-bucket/

 

-----------------------------------------------------------------------------------------------------------------------------------###tomcat

 

/bin 아래 exe 파일이 있는 tomcat은 윈도우용 tomcat으로 linux 서버에서는 작동하지 않는다.

.tar.gz 확장자로 끝나는 tomcat 파일을 사용한다. ( 중요 )

 

linux내에서 yum install로도 tomcat을 설치할 수 있는데 평소 사용하던 tomcat 과 구성이 달라서 비권장한다.

 

/conf/context.xml 에 DB 설정을 해준다.

실행할 war 파일은 /webapps 에 올려놓는다.

( 같은 이름의 다른 버전의 war파일 사용 시, war가 풀린 폴더는 삭제하고 tomcat을 재실행 해야 한다. )

 

나의 경우는 VM arguments를 추가했어야 했는데,

/bin/catalina.sh 파일을 수정한다.

JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS" 위에 작성한다.

JAVA_OPTS ="-DSMART_HOME=/data/config/SMART_HOME"

 

혹시나 실행이 안됀다면,

/logs/catalina.out에 tail 명령으로 에러 로그를 확인한다.

 

/bin/sh startup.sh

/bin/sh shutdown.sh 로 tomcat을 키고 끌 수 있다.

sh파일이 실행이 되지 않으면 권한을 변경해 준다.

chmod 775 * ( 모든 파일에 대한 권한 변경 )