(* 왜 했나요?)

저는 약 1년 전, AWS 프리티어 혜택을 이용해서 웹 프로젝트를 배포한 경험이 있습니다.
당시에는 프리티어 계정을 생성하면 1년 간 무료로 서버를 사용할 수 있었는데요. (* 허용하는 부분 까지만)
1년 간의 프리티어가 종료됨에 따라, 새 계정을 생성하고 다시 프리티어 혜택을 받아서, 프로젝트의 전시를 이어갈 생각이었습니다.
하지만...
2025년 7월 15일부터 정책이 다음과 같이 변경되었음을 확인할 수 있었습니다.
- 6개월 간 사용 가능한 크레딧 제공
- 크레딧 소진 시 프리티어 종료
자세한 사항은 아래에서 확인할 수 있습니다.
https://library.gabia.com/aws/14099/
가비아 라이브러리
IT 콘텐츠 허브
library.gabia.com
그래서 어떻게 할까 고민하게 된 것입니다.
- 귀찮음을 감수하면서 6개월 마다 새 계정을 생성할까?
- 포트폴리오에서 프로젝트 링크를 삭제할까?
- ...그냥 돈 청구되는 대로 내버릴까?!!
'그냥 돈 청구되는 대로 내버릴까?!!' 라는 생각은
'조금만 저렴하면 할만할 것 같은데...'라는 생각으로 이어졌습니다.
그렇게 자원을 변경하는 등 방법을 찾다 보니, AWS의 Lightsail 서비스를 알게 됐습니다.
1. Lightsail 개요
Lightsail은 VPS(Virtual Private Server) 입니다.
가상 프라이빗 서버(VPS)는 애플리케이션 또는 웹사이트 실행에 필요한 모든 소프트웨어와 데이터를 호스팅하는 머신입니다. 가상이라고 불리는 이유는 타사 제공 업체에 의해 관리되는 서버의 기본 물리적 리소스 중 일부만 소비하기 때문입니다. 그러나 사용자는 해당 하드웨어의 전용 리소스에 액세스할 수 있습니다.
출처: https://aws.amazon.com/ko/what-is/vps/
VPS란 무엇입니까? - 가상 프라이빗 서버 설명됨 - AWS
VPS란 무엇인지 알아보고 비즈니스가 VPS를 사용하는 방식과 이유 및 AWS에서 VPS를 사용하는 방법을 설명합니다.
aws.amazon.com
쉽게 말해, 하나의 물리 서버를 여러 개의 가상 서버로 쪼개서 사용하는 것을 의미합니다. 하나의 물리 서버에 대해 여러 사용자가 공유해서 사용하는 느낌으로 이해할 수 있습니다.
아무튼, 그래서 Lightsail에 대해 둘러보다 보니, 여러 가지 장점이 보여서 선택했습니다.
- EC2에 비해 간편하고 직관적으로(쉽게!) 인스턴스 생성 가능
- 컨테이너, 스토리지, 데이터베이스도 마찬가지
- (AWS 하다가 넘어오니 아주 체감되었습니다.)
- 확장 쉬움
- EC2로 마이그레이션 용이 (!!)
- (+) 포트폴리오 용 프로젝트를 가동시키는 목적에서, 가격이 합리적
- (* 사실 이건 요금 나와봐야 아는 부분일 것 같습니다)
2. 인스턴스 생성
2.1. 기본 설정
https://ap-northeast-2.lightsail.aws.amazon.com/ls/webapp/home/instances
https://ap-northeast-2.lightsail.aws.amazon.com/ls/webapp/home/instances
ap-northeast-2.lightsail.aws.amazon.com


우측 상단에서 언어를 변경할 수 있습니다.
[인스턴스 생성] 클릭 > 인스턴스 이미지 선택
저는 Nginx 이미지를 선택할까 고민하다가, Ubuntu 이미지를 선택했습니다.
선택 사항 > SSH 키 > [+ 사용자 지정 키 생성] 클릭
저는 SSH로 접속하기도 하고, scp 명령어로 파일을 전송할 것도 있어서 키 페어를 생성했습니다.
(개인적으로는 언젠가 누구나 SSH를 쓸 일이 생길거라는 생각을 가지고 있습니다.)

생성하면 선택까지 자동으로 되는 것 같습니다.
2.2. 플랜 선택


저는 무난하게 [범용], [듀얼 스택], [월별 $7] 를 선택했습니다.
월별 $5를 하기엔 메모리 512MB는 너무 작을 것 같고, 월별 $12 부터는 SSD 스토리지 60GB가 과할 것 같다고 생각했습니다.
사실 제가 배포하려는 프로젝트는 AI가 실행되어야 해서 메모리 1GB도 작을 것 같지만...
swap으로 버텨보려는 생각입니다 ㅋ
(!) swap
참고: https://docs.redhat.com/ko/documentation/red_hat_enterprise_linux/7/html/storage_administration_guide/ch-swapspace
15장. Swap Space | 스토리지 관리 가이드 | Red Hat Enterprise Linux | 7 | Red Hat Documentation
64GB 이상의 RAM이 있는 시스템에서는 hibernation를 사용하지 않는 데는 두 가지 이유가 있습니다. 먼저, 컷팅을 위한 추가 공간 (및 자주 사용하지 않는 경우) 스왑 공간이 필요합니다. 둘째, 상주 데
docs.redhat.com
2.3. 생성됨

3. 네트워킹 설정
해당 인스턴스 > 네트워킹 > [+ 규칙 추가]
3.1. SSH 규칙 추가
[소스 IP 주소]에 내 IP 입력
(* 네이버 검색창에서 '내 IP' 검색하면 확인 가능)
(+) 소스 IP 주소 뒤 '/32'
: CIDR(Classless Inter-Domain Routing) 표기법으로, "이 IP 주소 하나만 허용한다"라는 의미
4. 프로젝트 설치 및 구동
웹 프로젝트를 인스턴스에 설치하고, 실행시킵니다.
저는 git clone으로 다운받았는데, scp로 전송하는 방법도 가능할 것 같네요.
(생략)
(참고)
제가 배포하려는 웹 프로젝트는 이런 구조이며, docker compose로 관리했습니다.
docker compose build 만 수행하면 한 번에 실행되도록...
사용자 브라우저
↓
Nginx
↓
Gunicorn
↓
Django
| 구성 요소 | 역할 |
| Nginx | 웹 서버(Web Server) |
| Gunicorn | WSGI 서버 |
| Django | 웹 애플리케이션 |
| (Nginx + Gunicorn + Django) | 전체적으로 WAS 역할 수행 |
5. 도메인 설정
5.1. 도메인 등록
도메인 및 DNS > [도메인 등록]
[도메인 이름 지정] 후 [가용성 확인]
[자동 도메인 갱신], [도메인 연락처 정보], [개인 정보 보호] 등 설정하고
[도메인 등록]
5.2. DNS 레코드 설정
해당 도메인 > [DNS 레코드] > [+ 레코드 추가] > 레코드 유형 선택 등 내용 입력 후 [저장]
6. HTTPS 연결 (SSL/TLS 인증서)
여기서도 다시 고민이 발생했습니다.
- Lightsail에서 만들었다가, 이러면 로드밸런서 or CDN을 사용해야 해서 추과 과금 발생...
- HTTPS 하지 말까? (;;)
6.1. Let's Encrypt
그러던 중 알게된 것이 Let's Encrypt 입니다.
https://letsencrypt.org/ko/
Let's Encrypt
Let's Encrypt는 비영리 단체 인터넷 보안 연구 그룹(ISRG)이 제공하는 무료, 자동화된 개방형 인증 기관입니다. 올해 비영리 단체의 활동에 대한 자세한 내용은 2025 연례 보고서에서 확인하세요.
letsencrypt.org
Let's Encrypt에서는 무료로 TLS 인증서를 발급해주고 있습니다.
특히, Certbot 이라는 오픈소스를 사용해서 SSL 인증서를 쉽게 발급하고 자동으로 갱신할 수 있도록 처리할 수 있다고 합니다.
Apache, Nginx 등 주요 웹 서버에 쉽게 부착할 수 있다고 해서, 사용하게 되었습니다.
(너무 감사하시다...)
6.2. Cerbot
6.2.1. Cerbot 설치
sudo apt update
sudo apt install certbot -y
6.2.2. 도메인에 대한 TLS 인증서 발급
sudo certbot certonly --standalone -d 도메인
sudo certbot certonly --standalone -d 어쩌구.컴
- certonly: 인증서만 발급받고 웹 서버 설정은 자동으로 건드리지 않음
- --standalone: Cerbot이 자체 임시 웹 서버를 띄워서 도메인 소유권을 검증
- (* 그래서, 이미 웹 서버가 실행중이라면 충돌이 발생할 수 있음)
- -d 도메인: 인증서를 발급받을 도메인 지정

이메일 입력, 약관 동의 등

- fullchain.pem
- privkey.pem
생성 완료
그럼 이제 이 인증서를 Nginx에 적용해줘야 합니다.
저같은 경우에는 docker compose를 사용해 프로젝트를 관리하고 있으므로,
인증서 관련 설정을 위해 이런 단계를 거쳤습니다.
- docker-compose.yml 수정
- nginx 설정 수정
- docker compose 빌드
(참고) 프로젝트 디렉토리 구조, 수정 내용
프로젝트 구조
docker-compose.yml
version: '3.8' services: web: build: . container_name: 컨테이너명 volumes: - static_volume:/app/static expose: - "8000" nginx: image: nginx:stable container_name: nginx-proxy ports: - "80:80" - "443:443" volumes: - static_volume:/app/static - ./nginx/default.conf:/etc/nginx/conf.d/default.conf - /etc/letsencrypt:/etc/letsencrypt:ro depends_on: - web volumes: static_volume:
nginx/default.conf
server { listen 80; server_name 도메인; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name 도메인; ssl_certificate /etc/letsencrypt/live/api.liquest.click/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/api.liquest.click/privkey.pem; location / { proxy_pass http://web:8000; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; } }

잘 실행되는 것까지 확인할 수 있었습니다.
또한, 인증서는 기본적으로 90일동안 유효하다고 안내가 나왔으나,
인증서 자동 갱신까지 설정할 수 있는 것으로 알고 있습니다.
저는 추후(ㅎㅎ) 90일이 지나기 전에 Dockerfile에서 설정해 두려고 합니다.
Lightsail이 추상화가 잘 되어 있다고 해야 할까요?
직관적인 인터페이스로 이용이 확실히 쉽다고 느꼈습니다.
포트폴리오 프로젝트 관리에 애용할만 한 것 같습니다.
'공부 > IT 인프라' 카테고리의 다른 글
| 리눅스마스터 2급 합격 후기 (3일 벼락치기) (0) | 2026.01.02 |
|---|---|
| [Docker] Docker Compose (2) | 2025.06.10 |
| [AWS] 요금 청구서 구경하기 (1) | 2025.06.06 |
| [AWS] EC2에 https 적용하기 (with. CloudFront) (1) | 2025.06.05 |
| [AWS] EC2에 https 적용하기 (with. ALB) (1) | 2025.05.22 |









