※ 사전준비
1. AWS계정생성
2. AWS linux 인스턴스 생성
2-1. amazon linux 선택
2-2. pem키 생성
2-3. 체크박스 3개 체크
2-4. 30설정
3. putygen 키고 pem키 ppk키로 변경
3-1. 실행 및 load 클릭
3-2. pem키 찾아서 집어넣음
3-3. Save private key 클릭 후 ppk키 저장
4. PuTTY 실행
4-1. Host Name에 aws ip 입력
4-2. 좌측 메뉴탭에 SSH -> Auth -> Credentials 클릭 후 private key file for authentication에 ppk키 집어넣음
4-3. 다시 좌측메뉴탭 최상단 Session 탭 클릭
4-4. Saved Sessions 에 적당한 이름 넣고 Save 후 실행
5. ec2-user 입력
※ 설치
1. java
sudo yum install java-1.8.0-amazon-corretto-devel.x86_64
2. nginx
sudo yum install nginx
3. Tomcat9
sudo yum install tomcat9
※ 권한 설정
편의를 위해 읽기, 쓰기, 실행권한을 모두 주려고 한다.
tomcat의 server.xml / webapps, nginx의 nginx.conf를 수정해야 하니 세 디렉터리에 수정을 해야함
1. etc 디렉터리
sudo chmod -R 777 /etc/nginx/nginx.conf
sudo chmod -R 777 /etc/tomcat9/server.xml
2. usr 디렉터리
sudo chmod -R 777 /usr/share/tomcat/webapps
※ 실행 확인
1. 톰캣, nginx 실행
sudo service nginx start
sudo service tomcat9 start
aws인스턴스의 ip를 url에 입력하면 nginx 화면이 로드되어야 하고
ip:8080을 입력하면 당연히 화면이 안나와야 한다.
aws의 보안설정의 인바운드 규칙을 설정해줘야 한다.
2. 인바운드 규칙 설정
2-1. aws 좌측탭 보안그룹 클릭
2-2. 해당 인스턴스 클릭, 하단에 인바운드 규칙 클릭
2-3. 인바운드 규칙 편집
2-4. 포트범위 8080, 소스 Anywhere-IPv4 설정 (그 외 아무것도 건드리지 말자) 및 추가
이후 ip:8080 하면 톰캣의 404page가 로드된다.
※ 설정 변경
tomcat의 server.xml, nginx의 nginx.conf를 수정해야 한다.
1. tomcat의 server.xml 수정
- 경로 : /etc/tomcat9/server.xml
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common"
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" /> -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="" docBase="WarFile" reloadable="true" />
</Host>
기존 value값을 주석하고 위와같이 설정, Context의 docBase는 /usr/share/tomcat9/webapps에 집어넣은 war 파일명을 입력
2. nginx의 nginx.conf
- 경로 : /etc/nginx/nginx.conf
# start
# server {
# listen 80;
# listen [::]:80;
# server_name _;
# root /usr/share/nginx/html;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# error_page 404 /404.html;
# location = /404.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
# end
server {
listen 80;
server_name /;
location / {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
기존 server 코드 주석처리
위 내용은 localhost:8080을 80번 port로 forward하겠다는 뜻
※ war파일 배포
1. winSCP 실행
1-1. 호스트 이름은 인스턴스 ip 입력
1-2. 사용자이름은 ec2-user 입력
1-3. 비밀번호는 고급 클릭
1-3-1. 좌측 메뉴탭에 인증 클릭
1-3-2. 개인키 파일에 ppk파일 입력 및 확인
1-4. 여기서도 기본정보를 저장해주자
2. /usr/share/tomcat9/webapp 디렉터리 이동 후 좌측 로컬에서 우측 linux로 드래그
※ 작업 확인
1. 톰캣, nginx 재시작
sudo service nginx restart
sudo service tomcat9 restart
2. 인스턴스 ip를 url에 입력해서 내 war이 정상적으로 배포되었는지 확인하자!