728x90
반응형
- 1. AWS
- 외부에서 본인이 만든 서비스에 접근하려면 24시간 작동하는 서버 필수
- 집에 PC를 24시간 구동시킴
- 호스팅 서비스를 이용함
- 클라우드 서비스를 이용함
- 일반적으로 비용은 호스팅 서비스나 집 PC가 저렴하지만, 특정 시간에만 트래픽이 몰린다면 유동적으로 사양을 늘릴 수 있는 클라우드가 유리함
- 클라우드는 인터넷을 통해 서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공
- AWS의 EC2는 서버 장비를 대여하고, 그 안의 로그 관리, 모니터링, 하드웨어 교체, 네트워크 관리 등을 기본적으로 지원
- 클라우드는 인터넷을 통해 서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공
- 클라우드 형태
- 1) Infrastructure as a Service(IaaS, 아이아스, 이에스)
- 기존 물리 장비를 미들웨어와 함께 묶어둔 추상화 서비스
- 가상머신, 스토리지, 네트워크, 운영체제 등의 IT 인프라를 대여해주는 서비스
- AWS의 EC2, S3 등
- 2) Platform as a Service(Paas, 파스)
- Iaas에서 한 번 더 추상화한 서비스
- 한번 더 추상화하여 많은 기능이 자동화 되어 있음
- AWS의 Beanstalk, Heroku 등
- 3) Software as a Service(Saas, 사스)
- 소프트웨어 서비스
- 구글 드라이브, 드랍박스, 와탭 등
- 1) Infrastructure as a Service(IaaS, 아이아스, 이에스)
- AWS 장점
- 첫 가입시 1년간 대부분 서비스 무료(단, 서비스마다 제한 있음)
- 클라우드에서는 기본적으로 지원하는 기능이 많음
- AWS 국내 점유율이 높음
- 사용자가 많아 국내 자료와 커뮤니티가 활성화 되어 있음
- AWS 서비스는 IaaS를 사용할 예정
- AWS의 Paas 서비스인 빈스톡을 사용하면 대부분 작업이 간소화되지만, 프리티어로 무중단 배포가 불가능함..
2. AWS 회원가입
- 회원가입은 Master 혹은 Visa 카드가 필요하고, 무료 계정으로 만듦
- 영문 주소 기입
- 통장에 1달러 이상 있어야 함(테스트용)
3. EC2 인스턴스 생성
- EC2(Elastic Compute Cloud) : AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버
- 무료로 제공하는 프리티어를 사용함
- 월 750시간 제한
- EC2의 인스턴스 시작
- Amazon Linux 2 AMI 선택
- t2.micro 프리티어 버전 클릭(요금타입)
- 인스턴스 세부 정보 구성 별다른 설정 없이 다음으로 넘어감
- 30GB까지 프리티어로 이용 가능하기 때문에 최대 30GB로 변경
- 본인 서비스의 인스턴스를 나타낼 수 있는 값으로 등록(태그 추가)
- 보안 그룹 - 서버로 8080 포트외에는 허용하지 않는다는 역할을 하는 방화벽이 AWS에서는 보안 그룹으로 사용됨
- 포트 항목이 22인 경우, AWS EC2에 터미널로 접속할 때를 의미함
- 장소 변경시 IP를 다시 SSH 규칙에 추가하는 것이 안전
- 현재 프로젝트의 기본 포트인 8080을 추가
- 인스턴스 검토
- 인스턴스로 접근하기 위해서는 pem키가 필요하고, 할당할 pem키를 선택
- 인스턴스는 지정된 pem키와 매칭되는 공개키를 가지고 있어, 해당 pem키 외에는 접근을 허용하지 않음
- 일종의 마스터키이기 때문에 절대 유출되면 안됨
- pem키는 이후 EC2 서버로 접속할 때, 필수 파일이니 잘 관리할 수 있는 디렉토리로 저장
- 기존에 생성된 pem키가 있다면 선택하고 없다면 신규로 생성
- pem키까지 내려받았다면, 인스턴스 생성 시작페이지로 이동하고 인스턴스 id를 클릭하여 EC2 목록으로 이동함
- 인스턴스가 생성 중인 것을 확인할 수 있으며, Name 태그로 인해 Name이 노출되는 것도 확인 가능함
- 생성이 다 되면, IP와 도메인이 할당된 것을 확인할 수 있음
- 인스턴스로 접근하기 위해서는 pem키가 필요하고, 할당할 pem키를 선택
- EIP 할당
- AWS의 고정 IP를 Elastic IP라고 하며, EC2 인스턴스 페이지의 왼쪽 카테고리에서 탄력적 IP를 눌러 선택하고 주소가 없으므로 새 주소 할당 버튼을 클릭해서 할당 버튼 클릭
- 새 주소 할당이 완료되면 탄력적 IP가 발급됨
- 방금 생성한 탄력적 IP와 생성한 EC2 주소를 연결함
- 방금 생성한 탄력적 IP를 확인하고, 페이지 위에 있는 작업 버튼에서 주소 연결 메뉴를 선택
- 주소 연결을 위해 생성한 EC2 이름과 IP를 선택하고, 연결 버튼을 클릭함
- 연결이 완료되면 왼쪽 카테고리에 있는 인스턴스 탭을 클릭해서 다시 인스턴스 목록 페이지로 이동
- 해당 인스턴스의 퍼블릭, 탄력적 IP가 모두 잘 연결되었는지 확인함
- 생성한 탄력적 IP는 생성하고, EC2 서버에 연결하지 않으면 비용이 발생하므로, 생성한 탄력적 IP는 무조건 EC2에 바로 연결해야 하며, 만약 더는 사용할 인스턴스가 없을 때도 탄력적 IP를 삭제해야 함
4. EC2 서버에 접속
- 생성한 EC2로 접속
- 본인은 M1 맥북에어 사용자라, Mac 터미널을 활용함
- ssh -i pem 키위치 EC2의 탄력적 IP 주소
- AWS와 같은 외부 서버로 SSH로 접속을 하려면 매번 위와 같은 긴 명령어를 입력해야 함
- cp pem 키를 내려받은 위치 ~/.ssh/
- pem 키 위치를 명령어로 지정할 필요가 없음
- pem 키가 잘 복사되었는지 ~/.ssh 디렉토리로 이동해서 파일 목록을 확인
- cd ~/.ssh/
- ls -ll
- 복사되었다면 pem 키의 권한 변경
- chmod 600 ~/.ssh/pem키이름
- 권한을 변경했다면, pem 키가 있는 ~/.ssh 디렉토리에 config 파일을 생성
- vim ~/.ssh/config
- 본인이 원하는 Host 등록
- Host를 앞으로 접속할 키 값으로 보면 됨
- Host abc로 등록하면 ssh abc로 해당 EC2로 접속할 수 있음
- Host 외에 HostName은 탄력적 IP 주소를 사용하면 됨
Host 본인이 원하는 서비스명 HostName ec2의 탄력적 IP 주소 User ec2-user IdentityFile ~/.ssh/pem 키 이름 |
- 작성이 끝났으면 :wq 명령어로 저장 종료함
- 생성된 config 파일은 실행 권한이 필요하므로, 권한 설정을 다음과 같이 설정함
- chmod 700 ~/.ssh/config
- 실행 권한까지 설정했다면 다음 명령어로 접속
- ssh config에 등록한 서비스명
- yes를 입력하면 다음과 같이 EC2에 접속 성공
- 터미널에서 ssh 서비스명만 입력하면 접속할 수 있게 됨
5. 아마존 리눅스 2 서버 생성 시 꼭 해야 할 설정들
- java8 설치
- EC2에서 명령어 실행
- sudo yum install -y java-1.8.0-openjdk-devel.x86_64
- 설치 완료 후, 인스턴스의 Java 버젼을 8로 변경
- sudo /usr/sbin/alternatives --config java
- Java7 삭제
- sudo yum remove java-1.7.0-openjdk
- 현재 버젼이 Java8 확인
- java -version
- EC2에서 명령어 실행
- 타임존 변경
- EC2 서버의 기본 타임존은 UTC이며, 세계 표준 시간으로 한국의 시간대가 아님
- 한국의 시간과는 9시간 차이가 발생함
- 한국시간으로 변경
- sudo rm /etc/localtime
- sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
- 정상적으로 수행했다면 date 명령어로 타임존 KST로 변경된 것을 확인
- EC2 서버의 기본 타임존은 UTC이며, 세계 표준 시간으로 한국의 시간대가 아님
- Hostname 변경
- 여러 서버를 관리 중일 경우, IP만으로 어떤 서비스의 서버인지 확인이 어려움
- 각 서버가 어느 서비스인지 표현하기 위해 HOSTNAME을 변경함
- 다음 명령어로 편집 파일 열음
- sudo vim /etc/sysconfig/network
- 화면에서 노출되는 항목 중 HOSTNAME으로 되어 있는 부분을 본인이 원하는 서비스명으로 변경
- 변경 후 다음 명령어로 서버를 재부팅함
- sudo reboot
- 재부팅이 끝나고 나서 다시 접속해보면 HOSTNAME이 잘 변경된 것을 확인할 수 있음
- Hostname이 등록되었다면, 추가 작업 실시
- 호스트 주소를 찾을 때, 가장 먼저 검색해보는 /etc/hosts에 변경한 hostname을 등록함
- sudo vim /etc/hosts
- 다음과 같은 화면에 방금 등록한 HOSTNAME을 등록함
- 127.0.0.1 등록한 HOSTNAME
- 호스트 주소를 찾을 때, 가장 먼저 검색해보는 /etc/hosts에 변경한 hostname을 등록함
- 다음 명령어로 /etc/hosts 파일을 열음
- :wq 명령어로 저장하고 종료한 뒤, 정상적으로 등록되었는지 확인
- curl 등록한 호스트 이름
- 등록이 완료되면, 'Failed to connect to ~~' 라고 출력됨
- 여러 서버를 관리 중일 경우, IP만으로 어떤 서비스의 서버인지 확인이 어려움
728x90
반응형
'Web > SpringBoot' 카테고리의 다른 글
8. EC2 서버에 프로젝트 배포 (0) | 2022.03.07 |
---|---|
7. AWS 데이터베이스 서버환경 - AWS RDS (0) | 2022.03.05 |
5. Spring security와 OAuth2.0으로 로그인 기능 구현 (0) | 2022.03.03 |
4. 머스테치로 화면 구성 (0) | 2022.02.28 |
3. SpringBoot에서 JPA로 데이터베이스 활용 (0) | 2022.02.27 |
댓글