클라우드 컴퓨팅이란?
- 기존의 물리적인 형태의 실물 컴퓨팅 리소스를 네트워크 기반 서비스 형태로 제공하는 것이다.
- 개인용 컴퓨터가 아닌 더 성능이 뛰어난 컴퓨터나 저장장치 등의 컴퓨터 자원을 다른 곳에서 빌려 사용할 수 있도록 처리해주는 IT기술. 클라우드 컴퓨팅 자원에 대해 언제 어디서나 인터넷을 통해 손쉽게 접근이 가능하고 최소한의 노력으로 컴퓨터 자원을 늘리고 줄일 수 있다.
클라우드 컴퓨팅은 세 가지로 나뉜다.
1. laas (Infrastructure as a Service)
- 인프라스트럭쳐를 제공하는 서비스
- 위 그림에서 볼 수 있듯이 사용자는 가상컴퓨터를 임대받아 그 위에 OS를 직접 올리고 상위계층만 구성하면 된다. 물리적인 서버, Network, 스토리지 등은 직접 준비하지 않아도 가능하다.
- 가상 서버 or 스토리지 or 가상 네트워크 등의 리소스를 서비스 형태로 제공한다.
- ex) AWS EC2, 구글 클라우드 플랫폼, 네이버 플랫폼, Azure Virtual Machines
2. paas(Platform as a Service)
- 개발자가 응용 프로그램을 작성할 수 있도록 플랫폼 및 환경을 제공한다.
- 어플리케이션에만 집중하므로 개발자가 빠르게 어플리케이션을 개발하고 서비스할 수 있다.
- node.js, Java와 같은 런타임을 미리 깔아놔서 소스코만 적어서 빌드하고 클라우드에서 컴파일하여 결과만 가져온다.
- ex) Google App Engine, SalesForce
2. SaaS (Software as a Service)
- 설치할 필요없이 클라우드를 통해 제공되는 소프트웨어이다.
- public cloud에 있는 소프트웨어를 웹 브라우저로 불러와서 언제든지 사용할 수 있다.
- ex) 웹 메일, 구글 클라우드, 네이버 클라우드, 드롭 박스
AWS란?
- Amazon Web Services
- 아마존에서 만든 클라우드 서비스로 가상 컴퓨터, 스토리지, 네트워크 인프라 등 여러 서비스를 제공한다.
1. AWS - EC2 인스턴스 생성하기 (우분투)
1. AWS 계정가입을 한다.
- 처음 가입하면 특정 범위(프리티어)에 한해서 12개월동안 무료이다.
2. 로그인 후 지역 설정을 한다. '서울'로 설정하여 서울에 있는 서버를 임대할 수 있다.
3. 서버 구축을 위해서 'EC2 -> 인스턴스 -> 인스턴스 시작' 에 들어간다.
단계 1: Amazon Machine Image(AMI) 선택 // 운영체제(OS)
- Ubuntu Server 18.04 LTS (HVM), SSD Volume Type 를 선택한다.
단계 2: 인스턴스 유형 선택
- 우리는 무료로 학습을 위해 인스턴스를 생성하는 것이므로 기본으로 선택된 것(프리티어)을 그대로 사용한다.
단계 3: 인스턴스 세부 정보 구성
- 따로 수정할 옵션 없이 그대로 다음으로 넘어간다.
단계 4: 스토리지 추가
- 프리티어 사용 가능 고객은 최대 30GB를 사용할 수 있다. 최대인 30GB로 설정해주었다.
단계 5: 태그 추가
- 수정, 추가 없이 [다음]을 클릭한다.
단계 6: 보안 그룹 구성
- 여러가지를 추가할 수 있지만, 우선 기본으로 설정되어있는 SSH을 가지고 시작한다.
단계 7: 검토 및 기존 키 페어 선택 또는 새 키 페어 생성
- '나'만 EC2에 접속을 할 수 있도록 한건데 이 키페어를 통해서 EC2에 접속할 수 있다.
- 새 키 페어 생성을 선택한 후 키페어 이름을 작성한다.
- 키 페어 다운로드를 클릭해서 다운받는다. + 키파일을 잃어버리면 접근할 수 없으므로 반드시 보관해야하고 외부에 노출되면 안된다.
- 다운로드가 완료되면 인스턴스 시작을 클릭한다.
단계 7: 인스턴스 생성 완료
- 이 과정으로 컴퓨터를 하나 임대했다고 보면 되고 인스턴스를 보기를 누르면 정상적으로 생성된걸 볼 수 있다.
2. AWS - EC2 인스턴스 탄력적 IP (고정IP)
위에서 만든 인스턴스의 퍼블릭 IP는 고정된 IP가 아닌 유동적인 IP주소이다.
EC2 인스턴스를 중지하고 다시 시작하게 되면 IP주소가 변경된다.
그렇기 때문에 유동적인 IP주소로는 실제 서비스를 운영할 수 없다.
안정적으로 서비스를 운영하기위해서는 인스턴스를 중지하고 재시작하더라도 항상 고정된 IP가 필요하다.
1. AWS 콘솔 접속
2. 네트워크 및 보안 -> 탄력적 IP 선택
3. [탄력적 IP 주소 할당] 버튼 클릭
4. Amazon의 IPv4 주소 풀이 기본적으로 선택되어져있다. 그대로 우측 하단에 [할당]버튼을 클릭한다.
5. 탄력적 IP 주소 확인
- 상단 메시지에 탄력적 IP주소가 할당되었습니다. 라고 출력된다.
- 탄력적 IP주소를 할당받았고 해당 고정 IP와 인스턴스 연결 작업을 해야한다.
- 우측 상단의 [탄력적 IP 주소 할당]을 클릭한다.
5. 탄력적 IP 주소 연결
+ 탄력적 IP 주소는 요금이 부과될 수 있다.
요금에 대한 안내 <- 이 곳에서 확인 할 수 있다. 학습용으로 진행하는데 요금이 부과되지않도록 조심하자~!
3. WinSCP로 서버 접속
1. WinScp 실행
- 위 링크에서 WinSCP 설치를 완료한 후 실행하면 해당 로그인 창이 뜰 것이다.
- 호스트 이름 : EC2 인스턴스의 퍼블릭 IP or 퍼블릭 DNS 를 입력한다.
- 사용자 이름 : AWS EC2 계정정보 : 접속할 계정 정보
- 비밀번호는 공란으로 둔다.
- EC2에는 키페어가 있어야 접속할 수 있기때문에 [고급]버튼을 클릭하여 키를 등록해야한다.
2. 키페어(pem파일) 업로드
- [고급] -> SSH 인증 -> 개인키 파일에 아까 인스턴스 생성 시 다운받은 pem파일을 업로드한다.
- puTTY 형식으로 변환하시겠습니까? -> [확인]
- 사용자 이름 하단 [저장] 후 [로그인]을 클릭한다.
3. 로그인 성공
로그인에 성공하면 AWS에서 임대한 서버의 디렉토리 구조를 확인할 수 있다. (ssh)
4. PuTTY (대표적인 원격 접속 프로그램)
- WinSCP 내에서 PuTTY 아이콘을 클릭하여 putty ssh 터미널을 열 수 있다. ( PuTTY 설치가 안되어 있다면 열리지않음)
- Putty ssh 터미널에서 필요한 Nginx, Mysql, php를 설치할 수 있다.
3. ubuntu 18.04 - nginx php mysql 설치
패키지매니저를 통해 패키지설치 진행
1. Nginx 웹 서버 설치
$ sudo apt update
$ sudo apt install nginx
+ 만약 방화벽이 실행중인 경우 포트를 열어주어야한다.
$ sudo ufw allow 'Nginx Full' //Nginx에 대한 연결 허용
$ sudo ufw status // 변경사항 확인
설치가 완료되면 서버 주소(퍼블릭IP)로 접속해본다.
하지만 사이트에 접속하지 못한다. 왜냐하면 http에 해당하는 이 IP로 접속하고 싶다고 요청을 했지만, Http에 대한 인바운드 규칙이 없기 때문이다.
따라서 HTTP에 대한 인바운드 규칙을 추가해야한다.
(*** http 규칙 소스는 보안 상 내 ip로 해야하지만 일단 이렇게 진행***)
인바운드 규칙을 추가한 후 브라우저를 열어 해당 IP에 접속해보면 이 화면이 출력될 것이다. 성공!
2. Mysql 설치
1. MySQL 데이터베이스 소프트웨어 설치
- 구성이 아직 완료되지 않았다.
$ sudo apt install mysql-server
2. MySQL 보안 설정
- 암호를 설정한다.
$ sudo mysql_secure_installation
$ sudo mysql
mysql> SELECT user, authentication_string, plugin, host FROM mysql.user;
# auth_socket으로 되어 있는 root plugin을 mysql_native_password로 바꿔준다.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
# FLUSH PRIVEILEGS 서버가 허가 테이블을 다시 로드하고 새 변경사항을 적용하도록 지시
mysql> FLUSH PRIVILEGES;
# 각 사용자의 인증방법 확인. root가 더이상 auth_socket를 사용하지 않음을 확인
mysql> SELECT user, authentication_string, plugin, host FROM mysql.user;
mysql> exit
암호로 인증하도록 root 사용자를 구성했으므로 sudo mysql로는 접근할 수 없다.
$ sudo mysql -u root -p
Enter password : 암호 입력
3. PHP 설치
$ sudo add-apt-repository universe
# php-fpm 모듈 및 추가 도우미 패키지 : PHP와 DB 백엔드와 통신할 수 있도록 허용
$ sudo apt install php-fpm php-mysql
# nginx 기본경로
$ cd /var/www/html
# phpinfo() 파일 생성
$ sudo vi index.php
+phpinfo() 코드 작성 후 저장
브라우저에 IP주소/index.php 로 이동해보면 index.php 다운로드가 된다. nginx와 연동이 안되었기때문에 phpinfo화면이 출력이 되지 않는 것이다.
# 연동
# 기본 서버 설정파일
$ sudo vi /etc/nginx/sites-available/default
주석제거
$ sudo service nginx restart
다시 서버에 접속해보면 index.php 화면이 잘 출력되는 것을 확인할 수 있다.
참고
sangminlog.tistory.com/entry/compare-apache-nginx
Nginx,Apache 비교 - velog.io/@ksso730/Nginx-Apache-%EB%B9%84%EA%B5%90
클라우드 컴퓨팅 - goddaehee.tistory.com/174, wnsgml972.github.io/network/2018/08/14/network_cloud-computing/
'서버세션 > Server' 카테고리의 다른 글
[DataGrip] MySQL 외부접속 (0) | 2021.04.20 |
---|---|
[웹 서버] Apache와 Nginx 차이점 (0) | 2021.04.19 |
[Local서버구축-2] 외부 접속을 위한 포트 포워딩 (Port Forwarding) (0) | 2021.04.19 |
[Local서버구축-1] Bitnami WAMP 설치 (Window, Apache, PHP, MySQL) (0) | 2021.04.18 |
[Ubuntu 18.0.4] APM 소스 설치 - PHP 7.4.1 (수동 설치, 컴파일 설치) (0) | 2021.04.15 |
댓글