[ Project ] AWS 가입 및 프로젝트 배포하기
1. AWS 가입 및 가상 클라우드 서버 대여
1-1. AWS 가입
AWS 사이트 가입
결제 수단 등록
헤더 우측상단 지역 선택 (서울)
[무료 클라우드 컴퓨팅 서비스 - AWS 프리 티어
Q: AWS 프리 티어란 무엇입니까? AWS 프리 티어는 고객에게 서비스별로 지정된 한도 내에서 무료로 AWS 서비스를 살펴보고 사용해 볼 수 있는 기능을 제공합니다. 프리 티어는 12개월 프리 티어, 상
1-2. AWS 클라우드의 가상서버 사용
1) EC2 접속
2) 우측 인스턴스 페이지 이동
3) 인스턴스 시작 버튼 클릭
- 애플리케이션 및 OS 이미지(Amazon Machine Image) : 우분투 사용
- 인스턴스 유형 - 프리티어 사용
- 스토리지 추가 - 기본 8GB 프리티어 최대 (30GB)
- 키 페어 생성 : 생성된 키 파일을 안전한 곳에 보관해야함. 연결시 필요하며 다시 다운 받을 수 없다.
- 키페어 이름 : 프로젝트 명 등..
- 키페어 유형 : RSA
- 프라이빗 키파일 형식 : .pem
- 인스턴스 시작
1-3. AWS 클라우드의 가상서버 설정
1) 퍼블릭 IP 고정 아이피로 설정
컴퓨터를 종료했다가 키더라도 변경이 없이 이용가능하다.
기존 퍼블릭 IP는 변동되는 아이피로 탄력적(고정) IP로 설정해준다.
- 네트워크 및 보안 > 탄력적 IP > 상단 탄력적 IP 주소할당 버튼 클릭
- 상단 '작업' 셀렉트에서 > 탄력적 IP 주소 연결 > 만들었던 인스턴스에 연결하여준다.
1-4. DB 연결을 위한 인바운드 규칙 추가
- MYSQL/Aurora , 사용자
2. 가상 클라우드 접근 툴 다운로드
2-1. putty
빌린 서버의 ssh프로토콜 터미널로 접근 할수 있게 해주는 프로그램
[Download PuTTY: latest release (0.78)
This page contains download links for the latest released version of PuTTY. Currently this is 0.78, released on 2022-10-29. When new releases come out, this page will update to contain the latest, so this is a good page to bookmark or link to. Alternativel
www.chiark.greenend.org.uk](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html)
2-1. winscp
서버의 ftp 로 접근할 수 있게 해주는 프로그램
https://winscp.net/eng/download.php
[WinSCP :: Official Site :: Download
WinSCP 6.1 Download WinSCP 6.1 is a major application update. New features and enhancements include: Local file manager mode (two local panels). Windows 11 flat style graphics. SSH core upgraded to PuTTY 0.78. That includes support for OpenSSH certificates
winscp.net](https://winscp.net/eng/download.php)
2-3. winscp 와 putty 연동
- winscp 창에서 control + alt 또는 톱니바퀴 아이콘 (설정)
- 통합 > 프로그램 > putty 설치 경로 연결
※ 필요한 설치와 명령을 내리기 위해서는 putty 터미널 접속 (번개 모양)하여 설정할 수 있다.
3. 가상 클라우드 접근 및 설정변경
3-1. winscp 가상 서버 연결
- 호스트 이름 : AWS 생성한 고정 IP
- 사용자 이름 : 우분투를 빌렸을 경우 ubuntu
- 비밀번호: 인스턴스 서버 생성시 다운받았던 키페어 사용
- 고급 > 인증 > 개인키 파일 > 경로를 넣어주면 된다. (경로에서 모든 개인키 파일로 파일 찾기)
3-2. putty 터미널에서 Backend 설치
- root로 계정 변환 :sudo su
- ubuntu 업데이트 : apt-get update
- 웹서버 설치 : apt-get install nginx
- 포트 번호로 사이트에 들어갈 수 있는데, aws에서 설정이 필요하다.
- AWS 보안 > 인바운드 규칙 > 보안그룹
- 인바운드 규칙편집 > 규칙추가 > HTTP> Anywhere Ipv4 저장
- java 설치
- 현제 자바 버전 확인
java -version
- 필요한 자바 버전 설치
sudo apt update
sudo apt install openjdk-17-jre-headless
- node.js 설치 : apt-get install nodejs
- 노드 버전 업데이트
- 현제 버전 및 설치 확인
- node -v
- npm -v
3-2. putty 터미널에서 DB 설치(MySQL)
1) mysql 설치
sudo apt-get install mysql-server
2) mysql 외부 접속 설정
로컬 컴퓨터에서 mysql 접속이 가능하도록 수정이 필요하다.
$ /usr/bin/mysql -u root -p
기본적으로 password는 존재 하지 않는다 enter 시 접속 이 가능한데, 초기에 루트 계정 비밀번호 설정 이 필요하다.
3) root 계정 비밀번호 변경
ALTER USER 'root'@'localhost' IDENTIFIED BY '새로운비밀번호';
FLUSH PRIVILEGES;
4) 모든 IP 허용 (프로젝트에서 사용하는 계정을 생성하고 권한을 부여해준다.)
root로 접속해도 되지만 root가 아닌 별도의 아이디를 사용하는 것이 보안상 유리하다.
모든 % ip에서 허용 , localhost는 포함되지 않는다.
mysql> create user 'root'@'%' identified by 'password';
mysql> grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;
- 추가로 프로젝트에서 사용하는 데이터 베이스도 생성해준다.
CREATE DATABASE travl_db;
5) LISTEN IP 대역 변경
mysql 설정 파일을 수정해야한다.
- 경로 접속
cd /etc/mysql/
- 내부 파일을 확인하고 파일이 존재한다면 열기
vi /etc/mysql/mysql.conf.d/mysqld.cnf
- 파일 수정 ( i > # 주석처리 )수정 완료 = esc
- 저장하고 나가가기 (:wq!)
- 강제 저장 (w!)
- 혹시 readonly로 에러가 난다면 sudo 계정으로 파일을 열어 수정 후 강제 저장을 해주면 된다.
# bind-address = 127.0.0.1
또는
bind-address = 0.0.0.0
- mysql 재 시작 : service mysql restart
4. mysql Workbench 를통해 DB접속
mysql외부 접속시 클라이언트 프로그램이 필요.
4-1. 설치 mysql Workbench
로그인 필요없이 다운로드 버튼 클릭
https://dev.mysql.com/downloads/workbench/
[MySQL :: Download MySQL Workbench
Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Red Hat Enterprise Linux / Oracle Linux Fedora macOS Source Code Select OS Version: All Windows (x86, 64-bit) Recommended Download: Other Downloads: Windows (x86, 64-bit), M
dev.mysql.com](https://dev.mysql.com/downloads/workbench/)
4-2. 서버 DB 연결 MySQL connections + 버튼 클릭
- Hostname : 생성한 인스턴스 ip
- username : 외부 접속을 설정한 계정
- 비밀번호 : 계정 비밀번호
test connection : 커넥션이 안된다면 port문제 . (AWS 인바운드 규칙 추가 필요)
5. 프로젝트 배포
5-1. 기본 실행
터미널을 닫을시 서버가 종료된다.
java -jar 프로젝트경로/[프로젝트 이름]-0.0.1-SNAPSHOT.jar
5-2. 백그라운드 실행(screen)
터미널을 닫아도 서버를 계속 사용할 수 있는 방법이다.
1) screen 세션 생성
screen -S test
2) screen **세션 리스트 확인**
screen -ls
3) screen 세션 접속(Attached)
screen -r test
4) screen에서 실행 서버 열기
nohup java -jar [프로젝트 이름]-0.0.1-SNAPSHOT.jar &
5) screen Attached 세션에서 빠져나가기(Detach) / 콘솔 나가기
ctrl+a, d
exit;
5-3. 백그라운드 실행(sbb - nano)
1)터미널 sbb 폴더 생성
경로 : home / ubuntu / sbb
2) 프로젝트 jar 파일 넣기
3) nano 편집기 명령어 수행nano start.sh
- start.sh 파일 내용 편집
아래 내용을 입력 하고<Ctrl+O>
파일 저장<Ctrl+X>
편집기 종료
JAR 변수는 배포파일명이고 LOG 변수는 로그를 출력할 파일명이다.
#!/bin/bash
JAR=자르파일명.jar
LOG=/home/ubuntu/sbb/sbb.log
nohup java -jar $JAR > $LOG 2>&1 &
*4) 스크립트명 실행권한부여 *
chmod +x start.sh
*5) 서버 실행 *./start.sh
5-4. 백그라운드 로그 확인
nohup.out은 nohup으로 실행한 애플리케이션의 로그를 볼 수 있는 파일이다.
종료하고 싶은 경우 control + c하면 애플리케이션 종료 없이, 로그 보기만 종료할 수 있다.
tail -f nohup.out
5-5. 백그라운드 실행 종료
- 백그라운드 실행을 종료할 때는 실행 중인 포트에서 동작하고 있는 프로세스 id를 파악해서 종료시켜야 한다.
sudo lsof -t -i:8087
- 프로세스 종료
kill -9 [프로세스 id]