클라우드 저장소와 온-프레미스 저장소 비교
📌 온-프레미스(On-premise) 저장소란?
온-프레미스 저장소에서는 회사의 서버가 조직의 인프라 내에 호스트 되어 있으며, 많은 경우 사내에 물리적으로 존재한다. 서버는 회사와 사내 IT 팀 또는 IT 파트너가 직접 제어, 관리, 유지 및 조달하게 된다. 데이터와 기타 정보는 로컬 네트워크를 통해 컴퓨터 간에 공유된다.
📌 클라우드(Cloud) 저장소란?
클라우드 저장소에서는 AWS, Microsoft Azure와 같은 외부 서비스 공급자가 데이터를 호스트 한다.
클라우드 공급자가 모든 하드웨어, 소프트웨어 및 기타 자원 인프라를 조달하고 자사의 데이터 센터에 처리 및 관리하게 된다.
비즈니스는 인터넷을 통해 PC, 웹 브라우저 또는 모바일 앱에서 서비스에 액세스하고 계정을 관리한다.
간단히 말해서 온프레미스와 클라우드 시스템의 가장 큰 차이점은 “서비스를 제공함에 있어 사용하는 IT 자원을 누가 관리하느냐”에 있다. 온프레미스의 경우 서비스를 공급하는 서비스 제공자가 직접적으로 IT 자원을 관리하는 주체가 되고, 클라우드 시스템의 경우 서비스를 공급하는 제공자는 IT 자원을 사용할 뿐, 대부분의 IT 자원 관리는 클라우드 서비스 제공자에게 제공받게 된다.
📖 AWS 기본 설정
우선 AWS에 회원가입 및 로그인을 해주고
지역을 서울(Seoul)로 해줌으로써 서울에 있는 서버를 임대하겠다는 표시를 한다. (서울로 하지 않을 시 속도가 매우 느려질 수 있다.)
AMI(Amazon Machine Image) 선택
'EC2를 사용하여'를 클릭 후 원하는 운영체제를 선택한다. (필자는 ubuntu 18.04를 선택함)
AWS프리티어를 이용한다 : AWS 신규 고객에게만 제공
인스턴스 생성
보안 그룹 구성
쭉 6단계까지 진행한 뒤 보안 그룹 구성을 사용자 지정 포트 80(HTTP)과 3306(MySQL)을 지정해준다
키 페어 생성
ec2를 생성하고 자신만 접근할 수 있게 하기 위해서 키 페어를 생성해준다.
키페 어는 한번 생성하면 다시 받을 수 없고 외부에 노출돼서는 절대 안 된다.
탄력적 IP 연결
탄력적 IP란?
탄력적 IP 주소는 동적 클라우드 컴퓨팅을 위해 고안된 정적 IPv4 주소이다. 탄력적 IP 주소는 AWS 계정에 할당되며 릴리스할 때까지 할당된 상태로 유지된다. 탄력적 IP 주소를 사용하면 주소를 계정의 다른 인스턴스에 신속하게 다시 매핑하여 인스턴스나 소프트웨어의 오류를 마스킹할 수 있다.
발급받은 탄력적 IP주소를 기존에 만들었던 인스턴스와 연결해 준다.
그러면 이렇게 인스턴스와 탄력적 IP가 매핑된 것을 확인할 수 있다.
GUI 환경인 파일즐라에서 서버 접속하기
- 호스트(H)에는 인스턴스에 있는 퍼블릭 IP를 입력해준다.
- 로그온 유형은 키파일
- 사용자는 ubuntu
- 키파 일은 본인이 키파 일을 저장한 위치
정상적으로 GUI 환경 즉 파일즐라에서도 서버에 접속한 것을 확인할 수 있다.
터미널에서 서버에 접속하기
우선 cd 명령어를 통해 본인이 키 페어를 저장해놓은 디렉터리로 이동한다.
다음 위치에 있는 명령어를 그대로 복사해 터미널에서 실행한다.
❗오류
하지만 다음과 같은 오류가 발생했다.
찾아보니 pem파일을 비공개 전환하지 않고 실행해서 발생한 오류였다.
chmod를 통해 pem키 파일을 비공개로 설정하고 나니 해결되었다.
다음과 같이 화면이 바뀌었다면 정상적으로 서버에 접속한 것이다.
여기서부터는 리눅스 명령어를 통해 터미널 창을 컨트롤 가능하다.
📖 Nginix 설치
$ sudo apt update # 설치 가능한 패키지 리스트를 최신화
$ sudo apt install nginx # nginx 패키지 설치
아까 전 보안 그룹 구성에 미리 Http 포트 80번을 열어놨기 때문에
주소창에 퍼블릭 IP주소를 압력 하면 바로 정상적으로 접속할 수 있었다.
😎 Ngnix 접속에서 궁금했던 점 및 해결
Q) 터미널에서 아마존 웹서버를 종류 한 후에도 주소창에 퍼블릭 IP주소를 입력하면 정상 작동하였다.
왜 서버가 끊기지 않고 정상 작동하는 것일까?
A) SSH상태 쉽게 말해서 원격 접속에서 exit을 한 것이기 때문에 본 서버 컴퓨터 즉 AWS는 꺼지지 않았으므로 서버가 정상 작동한 것
📖 MySQL 설치
$ sudo apt install mysql-server # mysql 설치
$ sudo mysql -u root -p # mysql 실행
MySQL 보안설정
- VALIDATE PASSWORD PLUGIN을 사용할지 물음 → 사용한다면 보안 레벨을 0,1,2 중에 입력 가능 숫자가 클수록 보안도 커짐.
- root 비밀번호 설정
- anonymous User을 삭제할지 물음
- 외부에서 root계정으로 접근을 막을 건지 물음
- TestDB를 삭제할지 물음
- privileges table을 reload 할지 물음
보안 레벨은 0으로 설정해주었고 나머지는 모두 Y 해주었다.
설정한 비밀번호로 입력하니 정상적으로 MySQL이 실행되는 것을 확인할 수 있었다.
📖 PHP 설치
$ sudo apt install php-fpm php-mysql
위 명령어를 보면 php-fpm이라는 것을 볼 수 있는데 이는 ngnix와 php를 연동할 때 필요하다.
apache 서버와 비교하자면 apache 웹서버는 자체 내에서 php와 연동시키게 해주는 모듈을
configuration 파일로 자동으로 설정을 하도록 하고 있는 반면,
nginx에서는 php와 연동할 수 있도록 하는 php-fpm을 따로 설치해주고
nginx configuration파일에서 설정을 수동으로 해줘야 한다.
📖 Ngnix와 PHP연동
nginx php 연동을 위해, nginx configuration파일에서 설정을 수동으로 해줘야 한다.
nginx의 디폴트 파일은 /etc/nginx/sites-available/default이다.
보는 것처럼 location~ 부분의 2줄과 fastcgi~ 부분을 주석 해제한다.
그리고 주의해야 할 점은 나는 ubuntu 18.04 버전을 사용하므로 php-fpm 7.2 버전을 설치하므로 주석 해제한 부분의 숫자를 7.2로 변경해주어야 한다.
ngnix 기본 디렉터리(/var/www/html)에 php 파일을 만들어 준다.
$ cd /var/www/html
$ sudo vim index.php
<?php
phpinfo();
?>
:wq
Ngnix를 재시작해준다.
$ sudo service nginx restart
주소창에 퍼블릭 IP주소/index.php를 입력한다.
다음과 같이 정상적으로 phpinfo가 나오는 것을 확인할 수 있다.
Reference:
https://luminitworld.tistory.com/81?category=975147
https://mirae-kim.tistory.com/73
'Server Program' 카테고리의 다른 글
AWS Nginx에 HTTPS 적용하기 (Let's Encrypt) (0) | 2021.09.24 |
---|---|
도메인 구입(가비아) 및 설정 (0) | 2021.09.24 |
AWS Nginx에 PHPMyAdmin 설치하기 (0) | 2021.09.22 |
MySQL 외부접속 - MySQL Workbench 사용 (2) | 2021.09.22 |
Local 서버 구축 / 포트포워딩을 통한 외부접속하기 (0) | 2021.09.20 |