나는 오늘도 멋있다

AWS ec2설정 및 인스턴스 접속 본문

Web/JavaScript

AWS ec2설정 및 인스턴스 접속

나는 오늘도 멋있다 2024. 2. 6. 19:26
1. 모든 행동에는 목표를 정하고 근거가 있어야 한다.
2. 문제가 발생하면 해결이 아닌 원인을 찾아야 한다.
3. 다른사람의 관점을 고려해야한다.

 

학습목적

사용자가 웹서비스를 이용하기 위해서는 사용자 -> 웹브라우저 -> 서버 의 구조를 가진다. 모든 웹은 서버를 가지고 있어야 운영이 가능하다. 서버가 없는 웹이 있을까? 있다고해도 서비스할수 있는 웹은 아니라고 생각한다. 간단한 정보또한 서버에 저장하고, 클라이언트에서 이것을 활용해야한다. Server를 확보하기 위해서는 Server를 구입할수 있지만, 큰비용,서버환경,보안적인 문제 등이 있다. 하지만 추후에는 돈이 들어가지 않는 장점이 있다. 그렇기때문에 간단한 서비스를 배포하기에는 적합하지 않을 수도 있다. 예를 들어서도 내가 취업을 위한 포트폴리오를 배포한다고 했을때에도 비효율적이다. 말그대로 포트폴리오용을 배포하기위해 서버를 구입한다는것은 적자에 가까운것 아닐까? 이러한 문제점은 Server를 확보하는 방법중 Server를 호스팅 하는 방법이 있다. 말그대로 서버를 임대하는것으로, 특별한 환경 설정을 하지않고, 서버를 빌릴수 있고, 트래픽(서버의 사용량)에 따라 요금이 부과되기 때문에, 돈이 없는 나에게는 포트폴리용 서버로는 적절하다. 단점은 월마다돈이 나가지만, 이또한 트래픽과 연관되기때문에, 돈이 많이 나간다고 볼수도 없다. 이러한 이유로 많이들 사용하는 AWS의 ec2를 설정해보려 한다.


AWS란?

Amazon Web Servieces는 아마존(AWS)에서 제공하는 클라우드 서비스이다.  클라우드는 사용한 만큼만 비용을 지불하는 것으로,

물리적 데이터 센터와 서버를 구입,유지 관리하는 대신, 클라우드 공급자로부터 필요에 따라 컴퓨팅 파워, 스토리지, 데이터베이스

같은 기술 서비스에 액세스할 수 있다. 말그대로 서버를 AWS로부터 빌려서 운영하는데 필요한 비용과 시간을 절약할 수 있도록 도와준다.


 

서버구성

 

AWS EC2 인스턴스 설정
AWS를 배포하기 위해서는 EC2에서 인스턴스를 생성해야한다. 그래야 서버를 제어할수가 있다.
인스턴스는 클라우드의 가상 서버이다.
해당 이미지처럼 EC2를 눌러 페이지를 이동하면, 주황색으로 보이는 인스턴스 시작 버튼이 보인다. 

AWS EC2


 

서버이름설정
본인이 사용할 서버 이름을 설정하면 되고 나는 myServer로 설정했다.

서버 이름설정


OS 설정
AWS에서 신규 회원가입을 하면 프리티어 기능을 사용할수 있는데
프리티어는 12개월간 특정기능들을 무료로 사용할수 있게 해준다.(처음 사용을 시작한 시점)
나는 리눅스를 기반으로한 오픈소스 OS인 Ubuntu를 선택했다.
Amazon Machine Image(AMI)은 템플릿인데, 서버의 필요한 기능을 갖춘 인스턴스를 생성한다.
20.04를 선택한 이유는, 최신버전은 안정성이 보장되지 않는다고 생각하여 이전버전을 선택했다.
(사실 앞으로 사용할 라이브러리가 사용이 불가능 하다.)

OS설정


인스턴스 유형
유형에 따라 메모리, CPU가 달라지기 때문에 유형에 따라 서버의 성능이 결정된다.
나는 당연히 프리티어 기능을 사용했다.

서버용량 설정


키페어
내가 만든서버에 아무나 접속해서 사용할수 있다면, 내서버라고 할수없다. 새 키 페어 생성을 누르면...
이름은 자신이 원하는 이름으로 지정할수 있다.
유형은 RSA, .pem으로 선택하여 생성했다. 일반적으로 많이 사용되는 방식을 사용한 것 이기 때문에
이부분에서는 깊게 들어가지 않았다. 이후 생성을 하면 웹브라우저에서 다운로드가 되고,
해당파일을 잘 보관해야 한다.(폴더안에서 따로 관리하자) 해당 파일을 잃어버렸다면, 인스턴스를 다시 생성해야한다.

 

로그인 파일


기타설정
이외에도 다른설정들이 있지만 나한테는 당장 필요하지않아 설정하지 않았고,  인스턴스 시작을눌러 인스턴스를 생성했다.


서버 접속
파일 권한 권한설정
키페어를 생성하고, 키페어를 보관하는 폴더로 이동하여, 해당 key_pair.pem 파일의 권한을 설정해줘야 한다.
권한을 설정하지 않으면 해당 키페어를 사용하여 인스턴스에 연결할 수 없다.
권한에는 여러 종류가 있지만, 나의 경우에는 새로운 유저를 추가하지 않고, 나만 사용할것이기 때문에
터미널로 key_pari.pem 파일이 있는곳으로 이동하여 sudo chmod 600 key_pair.pem 을 입력해 권한을 변경해주었다.
sudo(superUserDo)는 관리자 권한명령어 이며, chmod(changeMode) 명령어를 이용해
key_pair의 권한을 변경해준다는뜻이다. 600은 읽기, 쓰기에 대한 권한이다. (r:4, w:2,x:1)
(해당명령어시 비밀번호는 자신의 PC 비밀번호, 나는 mac이므로 mac 비밀번호를 입력했다.)

key_pair 파일권한 설정

(권한에 관한)

https://repost.aws/ko/knowledge-center/new-user-accounts-linux-instance

 

EC2 Linux 인스턴스에 대한 SSH 액세스 권한이 있는 새 사용자 계정 추가

SSH를 사용하여 Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스에 연결할 수 있는 새 사용자 계정을 추가하고 싶습니다.

repost.aws

 

(사용자추가)

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/managing-users.html

 

Linux 인스턴스에서 사용자 관리 - Amazon Elastic Compute Cloud

퍼블릭 키를 연속된 한 줄에 붙여넣는지 확인합니다. 퍼블릭 키는 여러 줄로 분할되지 않아야 합니다.

docs.aws.amazon.com

 


인스턴스 연결
터미널 창에서 SSH 명령을 사용하면 인스턴스에 연결할수가 있다.
key_pair.pem이 위치한 경로를통해 ssh명령어를 사용하여 AWS로 생성한 인스턴스에 접속할수 있는데
aws에 인스턴스에 지정된 퍼블릭IPv4 로 연결이 가능하다. (IPv6주소가 있는 경우도 가능하다.)
ssh -i key_pair.pem instance-user-name@instance-publicIPv4 형식이다.
ssh(Secuer Shell)는 원격으로 서버에 접속하기 위해 사용되는 보안 프로토콜이고,
-i(identity file) 옵션으로 key_pair.pem을 인증하도록 하고, instance-user-name은  초기에 설정한 OS의 이름을 따른다.
그렇다면 나는 Ubuntu를 선택했기 때문에 ssh -i key_pair.pem ubuntu@PbulicIPv4로 연결이 가능하다.

인스턴스 접속

 

(인스턴스연결)

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/connect-linux-inst-ssh.html

 

SSH를 사용하여 Linux 또는 macOS에서 Linux 인스턴스에 연결 - Amazon Elastic Compute Cloud

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

 

 

 

(호스트 이름변경)

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/set-hostname.html

 

Amazon Linux 인스턴스에서 호스트 이름 변경 - Amazon Elastic Compute Cloud

Amazon Linux 인스턴스에서 호스트 이름 변경 프라이빗 VPC에서 인스턴스를 시작하는 경우 Amazon EC2에서 게스트 OS 호스트 이름을 할당합니다. Amazon EC2에서 할당하는 호스트 이름의 유형은 서브넷 설

docs.aws.amazon.com

 

 

인스턴스 서버에 접속까지 진행했다. 이후에는 JSP 환경을 구축하여 SFTP를 이용해 파일을 전송하고

웹사이트에 정상적으로 접속이 가능한지도 테스트해봐야겠다.

'Web > JavaScript' 카테고리의 다른 글

ec2 인스턴스에 JSP 환경구축하기  (0) 2024.02.14
ESmodule 과 CommonJs 비교 (mjs, cjs)  (1) 2023.11.17