우리네 장
[AWS] EC2 linux2 AMI 서버에 apache, tomcat 올려서 .war 실행해보기 본문
### 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 * ( 모든 파일에 대한 권한 변경 )
'작업 > 온라인 아카데미' 카테고리의 다른 글
Clean해지기 위한 아키텍쳐 적용기...!! (0) | 2024.01.05 |
---|---|
itms-services 프로토콜을 통한 S3 presigned url 접근 실패.. (1) | 2023.12.30 |
하이브리드 앱에서 Sticky Session 유지하기 ! (0) | 2023.12.30 |
중복 문제 해결을 위한, Synchronized 써보기 !! (1) | 2023.12.26 |