1. 개요 (Overview)
본 문서는 Oracle Cloud Infrastructure(OCI) 환경에서 신규 Ubuntu 24.04 LTS 인스턴스를 생성하고, 안정적인 웹 서비스 환경을 프로비저닝하기 위한 표준 절차를 정의한다. 본 가이드는 서버 생성, 네트워크 보안(포트 개방), 기본 방화벽 설정, 런타임 환경 구성을 포함한다.
2. 1단계: OCI 인스턴스 생성 및 가상 네트워크(VCN) 설정
2.1 인스턴스 프로비저닝
- OCI 콘솔에 로그인한 후 **[컴퓨트] > [인스턴스] > [인스턴스 생성]**으로 이동한다.
- 이미지 및 모양(Image and Shape) 섹션에서 [이미지 변경]을 클릭하여 Ubuntu 24.04 LTS를 선택한다.
- 네트워킹 섹션에서 공용 IP 주소가 할당되도록
공용 IPv4 주소 할당을 선택한다. - SSH 키 추가 섹션에서 새 키 쌍을 생성 및 다운로드하거나, 기존 보유 중인 공개 키(
.pub)를 업로드한다. - [생성]을 클릭하여 인스턴스를 활성화하고 할당된 **공용 IP 주소(Public IP)**를 확인한다.
2.2 수신 규칙(Ingress Rules) 추가 (웹 포트 개방)
외부 인터넷 트래픽이 웹 서버에 도달할 수 있도록 OCI 가상 클라우드 네트워크(VCN)의 보안 목록을 수정한다.
- 생성된 인스턴스의 상세 페이지에서 가상 클라우드 네트워크 및 해당 서브넷 링크를 클릭한다.
- **보안 목록(Security Lists)**에서 기본 보안 목록(Default Security List)을 선택한다.
- **[수신 규칙 추가(Add Ingress Rules)]**를 클릭하고 아래의 규칙들을 각각 등록한다.
| 소스 CIDR | IP 프로토콜 | 대상 포트 범위 | 설명 |
|---|---|---|---|
0.0.0.0/0 |
TCP | 80 |
HTTP 웹 트래픽 허용 |
0.0.0.0/0 |
TCP | 443 |
HTTPS 보안 웹 트래픽 허용 |
0.0.0.0/0 |
TCP | 3000 |
Node.js 등 개발 서버 포트 허용 |
3. 2단계: OS 초기 환경 설정 및 보안
3.1 SSH 원격 접속
다운로드한 SSH 개인 키의 권한을 변경한 후 인스턴스에 접속한다. (기본 사용자 명: ubuntu)
chmod 400 /path/to/your/private_key.key
ssh -i /path/to/your/private_key.key ubuntu@<인스턴스_공용_IP>
3.2 패키지 시스템 최신화
시스템 안정성과 최신 보안 패치 적용을 위해 패키지 인덱스를 업데이트하고 업그레이드를 수행한다.
sudo apt update && sudo apt upgrade -y
3.3 OS 내부 방화벽(iptables) 구성 및 해제
OCI Ubuntu 이미지는 자체 커널 방화벽(iptables) 규칙이 사전 적용되어 있어, 외부 VCN 보안 규칙을 통과하더라도 OS 내부에서 트래픽이 차단될 수 있다. 안정적인 웹 서비스 공급을 위해 관련 포트를 개방한다.
# HTTP(80) 및 HTTPS(443) 포트 개방
sudo iptables -I INPUT 6 -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT 6 -p tcp --dport 443 -j ACCEPT
sudo iptables -I INPUT 6 -p tcp --dport 3000 -j ACCEPT
# 재부팅 후에도 방화벽 규칙이 유지되도록 영구 저장
sudo apt install iptables-persistent -y
sudo netfilter-persistent save
sudo netfilter-persistent reload
4. 3단계: 웹 서버 및 개발 런타임 환경 구축
4.1 Nginx 웹 서버 설치 및 프록시 설정
고성능 HTTP 및 리버스 프록시 서버인 Nginx를 설치하고 활성화한다.
# Nginx 설치
sudo apt install nginx -y
# 서비스 활성화 및 시작 확인
sudo systemctl enable nginx
sudo systemctl status nginx
4.2 Node.js 개발 환경 구성 (NVM 기준)
다양한 Node.js 버전을 유연하게 관리하기 위해 **NVM(Node Version Manager)**을 통한 설치를 권장한다.
# NVM 설치 스크립트 실행
curl -o- https://githubusercontent.com | bash
# 환경 변수 로드
source ~/.bashrc
# Node.js LTS(최신 안정 버전) 설치 및 확인
nvm install --lts
node -v
npm -v
5. 4단계: 리버스 프록시(Reverse Proxy) 최종 연동 (선택 사항)
Node.js 애플리케이션(예: localhost:3000)을 외부 웹 포트(80/443)와 연동하기 위해 Nginx 설정을 변경한다.
- Nginx 기본 설정 파일을 편집한다.
sudo nano /etc/nginx/sites-available/default
location /블록을 찾아 아래와 같이 수정하여 프록시 패스를 지정한다.
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;
}
- 구문 구성을 검증하고 Nginx 서비스를 재시작한다.
sudo nginx -t
sudo systemctl restart nginx
6. 결론 및 유지보수 권장사항
본 매뉴얼에 따라 구축된 개발 서버는 외부 웹 트래픽을 수용할 준비가 완료되었다. 향후 프로덕션 환경으로 전환 시에는 Certbot(Let's Encrypt)을 활용한 SSL/TLS 암호화 적용 및 PM2를 활용한 Node.js 애플리케이션 프로세스 데몬화를 추가 수행할 것을 권장한다.