AWS EC2 활용하여 NPM 패키지 설치하기

ik_13038·2022년 8월 16일
0

라이징캠프 2주차

목록 보기
4/10
post-thumbnail

2주차 과제
Local 서버 구축 / Window/MacOS + Apache PHP MySQL (Bitnami) 👌
AWS 서버 구축 / Linux + Nginx PHP MySQ 진행 중..
Sub Domain에 각각 나만의 페이지 만들기

AWS EC2 활용한 NPM 패키지 설치


아마존 링크
먼저 위에 걸어놓은 링크를 타고 들어가서 AWS에 가입해야한다. 가입 과정은 생략하겠다.


가입 이후에는 지역을 서울로 설정하여 속도 저하를 방지할 수 있도록 하자!
가입 후 '내 콘솔로 로그인' 탭을 클릭 한 후에 EC2를 클릭하고 본인의 서버를 만들면 된다. 본인은 이전에 설치 경험이 있었던 Ubuntu 22.04 버전을 선택했다. 당연하겠지만 서버 만들 시에는 프리티어 사용 가능한 버전을 권장한다. 용량은 본인이 이전에 사용하고 있던 게 있었으므로 15GB 정도로 설정했었다. (30GB까지 무료이다.)

이후 보안 그룹 구성까지 오면 꼭 유형을 SSH로 설정해주어야 한다. Putty로 원격 접속이 가능하려면 해당 설정은 필수적이기 때문이다.

SSH란? : 원격지 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜이다. 뜻 그대로 보안 셸이다. 기존의 유닉스 환경에서 사용되던 텔넷에서 암호화 기능을 추가해서 나온 프로토콜 이라고 한다. 기본 포트 번호는 22번이다.

이후 키 페어를 생성하는 창이 나온다. 기존에 사용하던 키가 있을 시 사용해주도록 하며 만약 없을 시에 새 키 페어 생성을 누르고 저장하자. 이 파일은 절대 잃어버리면 안된다. 본인은 갖고 있던 게 있어 그대로 사용하기로 했다.


이후 인스턴스가 제작이 완료되었으면 해당 인스턴스에 탄력적인 IP 주소(Elastic IP)를 할당 받을 수 있도록 하자! 네트워크 및 보안 탭에 존재하며 자세한 설정 방법은 링크를 참고하도록 하자.

  • 탄력적 IP란? : 우리가 설정한 인스턴스의 IPv4의 주소는 주기적으로 바뀌는데 탄력적 IP는 고정 퍼블릭 IPv4의 주소를 제공한다. 따라서 한번 생성하면 서버를 실행할 때 주기적으로 IP주소를 바꿔 주지 않아도 된다.


탄력적 IP 주소 할당 주황 버튼을 클릭하여


우리가 제작한 인스턴스에 연결시켜 주도록 하자!
참고로 탄력적 IP는 IPv6은 지원하지 않으니 참고하길 바란다.


WinSCP 이용한 SSH 프로토콜 원격 접속

이제 WinScp에서 해당 툴을 다운로드 받아 EC2 서버를 직접 제어해보자.


다운로드가 완료되면 해당 창이 뜨는데 Host Name에 탄력적 IP 주소를 입력하고 user name은 ubuntu가 초깃값이므로 그렇게 설정하면 된다. password는 비워놓아도 된다.
Advanced를 클릭하자.


아까 AWS 홈페이지에서 다운로드한 Key는 당연하게도 갖고 있을 것이다. 이를 불러오도록 하자. 아마 pem 파일 형식으로 다운로드 되어 있을텐데 해당 키를 불러오면 자동으로 ppk 파일로 변환해준다. Ok를 누르고 Save해주도록 하자.


다행히 정상적으로 인스턴스가 실행 중이면 접속이 원활하게 된다. 해당 WinSCP 툴 내에 Putty를 지원한다. 클릭해보자.


정상적으로 접속되는 모습을 볼 수 있다.
이제 해당 화면에서 Nginx, Mysql, php 설치를 진행하면 된다!

그 이전에 앞서 언급했던 보안 그룹 구성을 떠올려보자. SSH 프로토콜을 허용함으로써 우리는 WinSCP 툴을 이용하여 빌린 AWS 서버에 접속하여 Putty로 접근할 수 있었다.
우리가 근데 이후 NPM을 모두 패키지 설치하고 접근하려면 해당 SSH 프로토콜만 인가하여 설정할 수 있을까? 애석하게도 그렇지 않다.

우리가 이전에 로컬 서버를 설정하며 접속했듯이 해당 AWS 서버 내에서 인바운드 규칙을 설정하여 특정 프로토콜에 대해 포트번호를 설정하여 접근 가능하게 설정해주어야 한다.

현재 인바운드 규칙 설정 값은 SSH만 허용되어 있다. 여기서 우리는 규칙을 추가해보자.

인스턴스 클릭 후 보안 - 보안 그룹을 클릭하면 위 화면으로 이동한다. 규칙을 편집해보자. 자세한 내용은 링크를 참고하면 도움이 될 것이다.


보안그룹->인바운드 규칙 편집 -> 규칙 추가 -> 유형:HTTP -> 소스: anywhere 로 설정하고 규칙을 저장 한다.

이처럼 여러가지 유형들을 허용해주었는데 각각 순서대로 Http, Https, Mysql, ssh이다. 이렇게 설정해주면 Http 웹 브라우저를 통한 접근, Mysql 툴을 통한 접근 모두 가능할 것이다.
사진 상에서는 IPv4 체계로만 접근을 허용했는데 IPv6 체계도 허용하게해도 상관 없다. 물론 보안상의 문제를 생각했을 때 본인 IP 주소를 통해서만 접근하는 것도 테스트 중에는 나쁘지 않을 것이다.


NPM 패키지 설치 - nginx

$ sudo apt update
$ sudo apt install nginx

패키지 설치이므로 오류가 날 확률을 적을 것이다..
아까 전에 Http/Https로 접근을 허용했으므로 웹브라우저로 접근하여 잘 설치되었는지 확인해보자. 퍼블릭 IPv4 주소를 주소창에 입력해보자.

잘 작동되는 모습이다!


NPM 패키지 설치 - MySQL

$ sudo apt install mysql-server
$ sudo mysql
$ sudo mysql_secure_installation

sudo mysql까지는 정상적으로 설치가 될 수 있으나 필자는 마지막 코드 부분에서 에러가 났다..

sudo mysql_secure_installation: 비밀번호와 보안설정을 해주는 명령어이다.
마지막 줄 명령어를 입력하면 총 5가지의 질문이 나온다.
VALIDATE PASSWORD PLUGIN을 사용할 것인가? : 사용한다고 설정하면 설정하고 싶은 보안등급의 강도가 나온다. 0,1,2 중 선택한 보안등급에 따른 비밀번호를 설정해준다.
Anoymous User을 remove 할 것인가? : Y
외부에서 root계정으로 접근 할 것인가? : Y
TestDB를 remove 할 것인가? : Y
privileges table을 reload 할 것인가? : Y

원인 1.

보안등급 강도를 적당한게 최고지 싶어서 1로 설정했는데 생각보다 1의 조건이 빡빡했다.. 0, 1, 2 점점 숫자가 높을수록 조건이 빡빡하다.
이 설정을 초기화하는 방법은 링크에 감사하게도 잘 나와 있었다.


접속하여 확인해보자. 참고로 root 초기 비밀번호는 ubuntu이다.

비밀번호 조건을 낮춘 이후 다시 설정하려 해보자.. 이번에는 다른 오류가 나온다.

Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.

뭐 대충 Alter User 통해 root 계정 인증절차를 새로 밟으라는 소리 같다.
구글링을 통해 방법을 알아냈다.


아주 간단한 방법이다. 해당 계정의 비밀번호를 '' 사이에 설정해주자.

그러자 마지막 커맨드 또한 정상적으로 잘 작동되었다.


NPM 패키지 설치 - Php

$ sudo apt install php-fpm php-mysql 

여기서 php-fpm은 php와 nginx를 서로 연동시킬 때 필요한 것이라고 한다.

$ cd /var/www/html
$ sudo vi phpinfo.php

<?php
phpinfo();
?>
$ sudo service nginx restart

이전에 소스 설치 때 한 작업과 비슷하다. phpinfo로 이동할 수 있게끔 파일을 생성해주자.

이후 브라우저에서 인스턴스 IP주소/phpinfo.php로 이동하면!

연동이 안되어 파일을 다운로드 받고 접속은 되지 않는다..해결해보자!
nginx와 php는 연동시킬 때 nginx의 기본 설정파일에 들어가서 수동으로 설정해주어야 한다고 한다.

$ cd /etc/nginx/sites-available
$ sudo vi default


위처럼 주석 처리된 몇몇 부분을 풀어주면 된다.
이후 다시 nginx를 다시 재시작해주고 브라우저에서 새로고침을 하면!

? 왜 안되나 싶었는데 생각해보니 우리가 설치한 ubuntu가 22.04 버전이었다.. 그럼 php 버전도 7.4가 아닌 최신버전을 쓰지 않을까 싶어 확인해보았다.

그럼 그렇지 7.4에서 8.1로 변경시켜주자.

잘 작동되는 모습이다.

profile
글 연습, 정보 수집

0개의 댓글