241217 가상화 (하이퍼바이저 프로그램 배포, AWS 실습)

241217 에이콘 아카데미 수업에 기반하여 작성되었음을 알립니다.


배포파일(jar)을 Ubuntu에 전송

윈도우, 스프링 부트로 만든 배포파일을 리눅스로 전송, FTP를 사용

우분투

$ ifconfig

우분투 ip : 192.168.159.128

스프링 부트

application.properties

spring.application.name=sprweb00sangdata

server.port=8080
spring.thymeleaf.cache=false

#mariadb server connect
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://192.168.159.128:3306/test #우분투 ip
spring.datasource.username=root
spring.datasource.password=1111
# jpa
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true
logging.level.org.hibernate.type.descriptor.sql=trace
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDBDialect

 

서비스 작동 확인

프로젝트 경로 확인 후 이클립스 꺼버리기!

프로젝트 경로 : C:\work\sprsou\sprweb00sangdata

💡 배포 순서
1. 콘솔로 이동 : 명령 프롬프트(cmd)로 이동 > cd C:\work\sprsou\sprweb00sangdata
2. 빌드하기 > gradlew build
3. 참고 : 빌드가 되지 않을 때 빌드 폴더를 삭제하고 다시 빌드하는 명령어 > gradlew clean > gradlew clean build 4. jar 파일 생성 확인 > cd build/libs > dir
5. 서버 배포 : 프로젝트명-0.0.1-SNAPSHOT.jar 파일만 복사해서 원하는 서버에 저장 후에 jar 파일을 실행시키면 실행 가능! > java -jar testproject-0.0.1-SNAPSHOT.jar

cmd

gradlew build

plain은 아님! 

work 디렉토리

사용할 디렉토리에 jar 파일 복사 붙여넣기!

실행 : java -jar (jar 파일이름)

작동 확인! (리눅스 서버)

Ctrl + c : 다시 서버 닫기


원격으로 리눅스 통신

🙏 원격으로 리눅스와 통신

ping test

💡 SSH(Secure Shell)
SSH(Secure Shell)는 원격 시스템에 안전하게 접속하기 위한 네트워크 프로토콜이다. 단순히 원격 접속뿐만 아니라 다양한 보안 기능을 제공하며, 파일 전송을 포함한 여러 작업을 암호화된 방식으로 수행할 수 있다. 파일 전송보다는 주로 원격 접속 및 보안 터널링에 더 중점을 둔다.


putty나 윈도우의 경우 powershell로 원격으로 접속할 수 있다. 실습은 putty 사용!
💡 FTP(File Transfer Protocol)
FTP(File Transfer Protocol)는 컴퓨터 간에 파일을 전송하기 위한 표준 네트워크 프로토콜이다. 주로 클라이언트와 서버 간의 파일 업로드 및 다운로드에 사용된다.

putty

putty 다운로드 https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

운영체제에 맞는 파일 (64-bit x86: 다운로드)

실행

 

그냥 될리 만무하다 설정이 필요!

Ubuntu Linux 실습 설정
--- SSH, FTP 서비스 진행할 때 Ubuntu에 설정해야 작업 ------------------------------------
원격 접속 툴 :
   1) Putty(SSH) ...
   2) 파일질라(FTP) ...
   3) Windows PowerShell( > ftp ip주소,  > ssh user@ ip주소 ) ...
* vsftpd는 Linux 서버에서 널리 사용되는 FTP 서버 패키지로 FTP 프로토콜을 통해 파일 전송 서비스를 제공할 수 있다.


1. vsftpd 패키지 설치
$ sudo apt update


$ sudo apt install vsftpd


vsftpd 서비스 시작 : 설치가 완료된 후, 서비스를 시작하고 활성화한다.
$ sudo systemctl start vsftpd
$ sudo systemctl status vsftpd

q를 눌러 나가기

$ sudo systemctl enable vsftpd : 비활성 상태인 경우 활성화

방화벽 해제

💡 방화벽(Firewall)
방화벽(Firewall)은 미리 정의된 보안 규칙에 기반한, 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템이다. 일반적으로 신뢰할 수 있는 내부 네트워크, 신뢰할 수 없는 외부 네트워크(예: 인터넷) 간의 장벽을 구성한다. 외부로 부터 내부망을 보호하기 위한 네트워크 구성요소의 하나로 서로 다른 네트워크를 지나는 데이터를 허용하거나 거부하거나 검열, 수정하는 하드웨어나 소프트웨어 장치이다. 참고로 UFW(Uncomplicated Firewall)은 데비안 계열 및 다양한 리눅스 환경에서 작동되어 사용하기 쉽게 설계된 넷필터 방화벽을 관리하는 프로그램이다

서비스 포트 리스닝(대기) 상태 확인
sudo lsof -i -P -n | grep LISTEN    또는    netstat -tulpn | grep :21

현재 21번만 뚫려있음, 22번을 뚫어줘야 함!

 

$ sudo nano /etc/vsftpd.conf     해서 파일을 수정한다.
  listen=YES : YES로 설정하면 vsftpd는 독립형 데몬으로 동작하여 IPv4 소켓을 통해  21번 포트를 열고 접속 대기
  listen_ipv6=NO : NO로 설정하면 vsftpd가 IPv6 소켓을 사용하지 않고 IPv4 전용으로 동작

 

혹시 Putty 툴을 위한 접속이 안되는 경우 아래 작업을 수행시킨다.

SSH 서버 구동 여부 확인: 리눅스 서버에서 SSH 데몬(보통 openssh-server)이 설치되고 실행 중인지 확인해야 한다.
$ sudo systemctl status ssh
만약 inactive 또는 not found라면

$ sudo apt install openssh-server 설치

$ sudo systemctl start ssh
$ sudo systemctl enable ssh

$ sudo systemctl status ssh

Windows PowerShell로 원격 접속 시도

원격접속성공

exit 빠져나오기

ftp 접속 확인

다시 putty로 원격 접속 시도

접속 성공 변경 사항이 우분투와 똑같음!

파일 생성도 같다! ssh 마무리


Filezilla

(FTP 소프트웨어)를 설치해 배포파일(jar)을 Ubuntu에 전송.   https://cafe.daum.net/flowlife/9A8Q/205

설치

설치 완료

내 컴퓨터                                                                   리눅스

 

드래그 앤 드롭으로 전송

                                                                                     후

$ sudo java -jar 배포파일명.jar

우분투에서 배포 파일을 실행할 때는 관리자 권한으로 하자.

실행

윈도우에서는 안됨! 우분투에서 8080포트 열어줘야함! 방화벽 문제를 해결해보자!

 

$ sudo nfw status

Windows의 방화벽에서 포트 80(HTTP) , 8080 또는 443(HTTPS)을 허용하도록 설정. 또한 서버(Ubuntu)의 UFW에서 해당 포트가 열려 있는지 확인.

$ sudo ufw allow 80/tcp
$ sudo ufw allow 8080/tcp
$ sudo ufw allow 443/tcp


$ sudo ufw status

윈도우에서도 접근 가능한 모습

짜란~


AWS 실습

위 방법은 프로젝트 규모가 커지거나 많아진다면 한계가 있다. 그렇기에 AWS 사용 방법을 알아보자!

EC2

리전 선택

리전 전세계의 데이터센터, 자신과 가까운 리전을 선택하는 것이 좋음. 리전마다 가격의 차이가 있다!

인스턴스 시작(생성)

애플리케이션 및 OS 이미지(Amazon Machine Image)

여러개의 소프트웨어를 묶어 압축한 것을 Image 라고 한다. 도커에서 나오는 개념

# 온디맨드 : 사용한만큼 사용료 지불

파일질라와 연결할 때 필요! 키페어를 꼭 가지고 있어야한다.

대기 중 상태

기다리면 실행 중으로 바뀜

체크해보면 인스턴스 정보 확인 가능, 퍼블릭 IPv4 주소를 확인할 수 있다. 서비스를 중지했다가 다시 실행하면 주소가 바뀜 결제하면 유지되는데 우리는 현재 단계에서 굳이 과금할 필요 없다~!

보안

포트 허용해주기

방화벽으로 막아놔서 ping 안됨!

보안그룹 클릭

인바운드 규칙 편집

인바운드 규칙 생성

ping test 가능

보안 그룹

현재 보안그룹 default, launch-wizard-1 사용

인스턴스 연결

 

우분투 화면, 우분투 버전 확인

 

아파치 서버 설치

$ sudo apt update

$ sudo apt install apache2

$ systemctl status apache2

설치 후 active 상태 확인

접속

AWS : 43.202.60.193

 

apache 방화벽 풀기

$ sudo ufw allow 'Apache Full'

$ sudo status ufw

$ sudo nano /var/www/html/index.html

$ sudo nano /var/www/html/nice.html

생성 확인

접속

인스턴스 중지

 

 

로그아웃하고 재로그인

다시 시작할때 인스턴스 시작을 눌러준다.

아까 생성한 키페어도 삭제해줘도 괜찮음

종료됨으로 바뀌었는지 꼭 확인하기!

보안 그룹 삭제