Notice
Recent Posts
Recent Comments
Link
투케이2K
91. (Aws/Amazon) [Amazon Elastic Compute Cloud] EC2 웹서버 구성 프로세스 및 절차 정리 본문
Aws (Amazon)
91. (Aws/Amazon) [Amazon Elastic Compute Cloud] EC2 웹서버 구성 프로세스 및 절차 정리
투케이2K 2025. 7. 18. 19:58728x90
반응형
[개발 환경 설정]
개발 환경 : Aws / Amazon Web Services

[설명 정리]
// --------------------------------------------------------------------------------------
[개발 및 환경]
// --------------------------------------------------------------------------------------
- 인프라 : Aws / Amazon Web Services
- 기술 구분 : Aws / EC2 / 가상 서버 / 웹 서버
- 사전) EC2 간단 설명 정리 :
>> Aws EC2 란 AWS 클라우드에서 온디맨드 확장 가능 컴퓨팅 용량을 제공하는 서비스입니다
>> Aws EC2 의 기능 :
- 인스턴스 : 가상 서버
- Amazon Machine Images (AMIs) : 서버에 필요한 구성 요소(운영 체제와 추가 소프트웨어 포함)를 패키징하는 인스턴스용 사전 구성 템플릿
- 인스턴스 타입 : 인스턴스의 다양한 CPU, 메모리, 스토리지, 네트워킹 용량 및 그래픽 하드웨어 구성
- Amazon EBS 볼륨 : Amazon Elastic Block Store(Amazon EBS)를 사용하는 데이터에 대한 영구 스토리지 볼륨
- 인스턴스 스토어 볼륨 : 인스턴스를 중단, 최대 절전 모드로 전환 또는 종료할 때 삭제되는 임시 데이터용 스토리지 볼륨
- 키 페어 : 인스턴스에 대한 보안 로그인 정보. AWS는 퍼블릭 키를 저장하고 사용자는 프라이빗 키를 안전한 장소에 저장합니다
- 보안 그룹 : 인스턴스에 도달할 수 있는 프로토콜, 포트 및 소스 IP 범위와 인스턴스가 연결할 수 있는 대상 IP 범위를 지정할 수 있는 가상 방화벽
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[1] : EC2 인스턴스 생성
// --------------------------------------------------------------------------------------
1. AWS 콘솔에 로그인 후 EC2 서비스로 이동
2. 인스턴스 시작 > Amazon Linux 또는 Ubuntu 선택
3. 인스턴스 유형 선택 (예 : t2.micro - 프리 티어)
4. 키 페어 생성 및 다운로드 (SSH 접속용)
5. 보안 그룹 설정:
>> 포트 22 (SSH)
>> 포트 80 (HTTP)
>> 포트 443 (HTTPS, 필요 시)
>> 포트 3000 (Node.js 기본 포트, 필요 시)
// --------------------------------------------------------------------------------------
[2] : EC2 인스턴스에 SSH 접속
// --------------------------------------------------------------------------------------
1. AWS 콘솔을 통한 웹 기반 접속과 Putty 같은 외부 SSH 클라이언트를 사용하는 방법 모두 가능
>> EC2 보안 그룹에서 **포트 22 (SSH)**가 열려 있어야 접속 가능합니다
>> 접속이 안 될 경우, IP 주소나 키 파일 경로, 사용자 이름(ec2-user/ubuntu)을 확인이 필요합니다
>> Amazon Linux : ec2-user
>> Ubuntu : ubuntu
2. AWS 콘솔에서 접속 (브라우저 기반) :
>> AWS EC2 대시보드에서 인스턴스를 선택
>> 상단 메뉴에서 "연결" 클릭
>> "EC2 Instance Connect" → 브라우저 기반 SSH 접속
>> 별도의 설정 없이 바로 접속 가능 (단, Amazon Linux 또는 Ubuntu에서만 지원)
3. Putty를 통한 SSH 접속 (Windows 사용자)
>> 사전) 준비 사항
- EC2 생성 시 받은 .pem 키 파일
- Putty 설치: https://www.putty.org
>> .pem 파일을 > .ppk 로 변환 (Putty 용 키)
- Puttygen 실행
- Load 클릭 > .pem 파일 선택
- Save private key > .ppk 파일 저장
>> Putty 로 접속
- Host Name : ec2-user@<EC2 Public IP> (Amazon Linux) 또는 ubuntu@<EC2 Public IP> (Ubuntu)
- Port : 22 (SSH 접속 포트)
- Connection > SSH > Auth > .ppk 파일 선택
- Open 클릭 > SSH 접속 성공
4. 참고 : 일반 SSH 클라이언트 (Mac/Linux/WSL)
>> ssh -i "your-key.pem" ec2-user@<EC2 Public IP>
>> chmod 400 your-key.pem
// --------------------------------------------------------------------------------------
[3] : Node.js 및 npm 설치 (전역(Global) 설치)
// --------------------------------------------------------------------------------------
1. Node.js와 npm은 시스템 전체에서 사용할 수 있는 실행 환경을 제공하기 때문에, 특정 프로젝트 폴더가 아닌 EC2 인스턴스 전체에 설치해야 합니다
>> Node.js 설치 시 npm 도 자동으로 설치됩니다
>> 이후에는 npm install 명령어만 사용하면 됩니다 (node 프로젝트에서 개별 사용 중 인 라이브러리 다운로드)
2. Amazon Linux 기준 설치 예시 :
>> curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
>> sudo yum install -y nodejs
3. Ubuntu 기준 설치 예시 :
>> curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
>> sudo apt-get install -y nodejs
4. 설치 후 확인 방법 :
>> node -v
>> npm -v
// --------------------------------------------------------------------------------------
[4] : Node.js 프로젝트 경로 생성 및 웹 서버 코드 업로드
// --------------------------------------------------------------------------------------
1. 홈 디렉토리로 이동
>> cd ~
2. 프로젝트 폴더 생성
>> mkdir my-node-project
>> cd my-node-project
3. Git 에서 프로젝트 클론
>> git clone https://github.com/your-repo.git .
>> .을 붙이면 현재 디렉토리에 바로 클론됩니다
4. 참고 : 여러 프로젝트를 운영할 경우, /home/ec2-user/projects/ 같은 상위 폴더를 만들어 관리하면 더욱 효율적 관리 가능
5. 참고 : 로컬에서 scp 로 프로젝트 업로드도 가능합니다
>> scp -i "your-key.pem" -r ./your-app-folder ec2-user@your-ec2-public-ip:/home/ec2-user/projects/
// --------------------------------------------------------------------------------------
[5] : Node.js 프로젝트에서 사용 중 인 라이브러리 모듈 설치 진행
// --------------------------------------------------------------------------------------
1. AWS Linux (또는 다른 리눅스 서버) 에 Node.js를 설치한 후, 웹 애플리케이션에서 사용하는 라이브러리들은 별도로 설치해야 합니다
>> Node.js는 런타임만 제공할 뿐, 여러분의 프로젝트에서 사용하는 라이브러리(예: express, mongoose, axios 등)는 package.json에 정의된 대로 직접 설치해야 합니다
2. Node.js 프로젝트에서 사용 중 인 라이브러리 모듈 설치 :
>> 프로젝트 폴더로 이동
>> npm install 실행 > 필요한 라이브러리 설치
- npm install 명령은 package.json 파일을 읽고, 필요한 모든 라이브러리를 node_modules 폴더에 설치합니다
- 프로젝트 예시 구조 :
your-app/
├── app.js
├── package.json
└── node_modules/ ← npm install 후 생성됨
- package.json 예시 :
{
"name": "my-app",
"version": "1.0.0",
"main": "app.js",
"dependencies": {
"express": "^4.18.2",
"mongoose": "^7.0.0"
}
}
- npm install 을 실행하면 express 와 mongoose 가 자동으로 설치됩니다
- 만약 package.json 이 없는 경우는 직접 필요한 라이브러리를 설치해야 합니다
* npm install express
* npm install mongoose
// --------------------------------------------------------------------------------------
[6] : Node.js 프로젝트 실행 및 웹서버 구동
// --------------------------------------------------------------------------------------
1. Node.js 프로젝트로 이동 후 서버 실행 수행 :
>> cd your-app-folder
>> npm install
>> node app.js (node app.js 또는 npm start 로 서버 실행)
2. 참고 : 백그라운드 실행 pm2 사용 (애플리케이션 실행 관리)
>> npm install -g pm2
>> pm2 start app.js
>> pm2 startup
>> pm2 save
// --------------------------------------------------------------------------------------
[7] : 보안 그룹 및 방화벽 확인 및 웹서버 동작 확인
// --------------------------------------------------------------------------------------
1. EC2 보안 그룹에서 포트 3000 또는 사용 중인 포트가 열려 있는지 확인
2. 브라우저에서 http://your-ec2-public-ip:3000 접속 시도
// --------------------------------------------------------------------------------------
[+] : 참고 추가 사항 정리 (안정적 운영)
// --------------------------------------------------------------------------------------
1. 로그 관리 :
>> pm2 logs 또는 console.log 를 파일로 리디렉션
>> CloudWatch Logs 연동도 가능
2. 도메인 연결 및 Reverse Proxy (선택 사항)
>> 도메인 구매 및 DNS 설정
- 도메인을 구매한 곳 (예 : 가비아, 후이즈, Namecheap, GoDaddy) 에서 DNS 설정을 변경합니다.
- A 레코드를 EC2의 공인 IP 주소로 설정합니다.
>> EC2에 Nginx 설치 및 Reverse Proxy 설정 (Nginx를 사용해 포트 80/443으로 연결)
- Nginx 설치 :
* sudo yum install nginx -y # Amazon Linux
* sudo systemctl start nginx
* sudo systemctl enable nginx
- Nginx 설정 파일 수정 :
* sudo nano /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name example.com www.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
>> SSL 인증서 설치 (Let's Encrypt)
- Certbot 설치 :
* sudo yum install -y certbot python3-certbot-nginx
- 인증서 발급 및 자동 설정 :
* sudo certbot --nginx -d example.com -d www.example.com
* 도메인 이름은 실제 구매한 도메인으로 변경하세요.
* 성공하면 Nginx 설정이 자동으로 HTTPS로 바뀝니다.
>> 인증서 자동 갱신 설정
- sudo crontab -e
>> 접속 테스트
- 브라우저에서 https://example.com 접속
- 인증서가 적용되었는지 확인
3. 보안 강화
>> SSH 키 관리 (루트 접근 제한, 키 교체 주기)
>> UFW 또는 iptables로 추가 방화벽 설정 (Ubuntu에서 사용 가능)
>> 필요 없는 포트는 닫기
4. 자동 백업 및 모니터링 (선택 사항)
>> EC2 스냅샷
>> CloudWatch 로 CPU, 메모리, 디스크 모니터링
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
[Amazon Elastic Compute Cloud] EC2 개념 및 설명 정리
https://blog.naver.com/kkh0977/223733098795?trackingCode=blog_bloghome_searchlist
[Amazon EC2 인스턴스 유형]
https://docs.aws.amazon.com/ec2/latest/instancetypes/instance-types.html
// --------------------------------------------------------------------------------------
728x90
반응형
'Aws (Amazon)' 카테고리의 다른 글
Comments
