현재 Cloud 서비스는 GCP, AWS 등등 다양하지만 다들 일정 기간 동안만 무료로 하거나 일정한 크레딧을 지급하는 경우가 대다수이다.
하지만 Oracle에선 평생 무료인 Cloud 서비스를 제공하고 있고, 이는 Oracle Cloud에서 생성 가능하다.
클라우드 서비스 무료 이용
Oracle Cloud Free Tier는 기업에게 무제한으로 사용할 수 있는 상시 무료 클라우드 서비스를 제공합니다.
www.oracle.com
위 Oracle Cloud에서 로그인과 결제 수단까지 등록을 마쳐야 한다. 이때의 Region은 포스팅 날짜 기준 대한민국 춘천으로 설정하면 된다. 참고로 이때 설정한 Region은 추후에 수정이 불가하다.


위 로그인 절차를 마무리하면 Cloud 서비스를 사용할 수 있으며, 이제 Oracle Cloud 서버를 활용하기 위해 VM을 생성해 주어야 한다.


Build의 Create a VM Instance에 접근한 모습이다. 이 화면에서 VM에 대한 각종 설정을 완료해 줄 수 있다.
Image and shape
Image and shape 탭에선 기본적으로 Oracle Linux 8을 기본 Image로 설정하고 있으나 개인의 선호에 따라 원하는 OS를 선택 가능하다.

Image 외에 Shape은 추가적으로 설정할 필요는 없다.
Add SSH Keys

VM과 연결하기 위한 SSH 키 또한 설정해 주어야 하며 사용자의 상황에 따라 상이하겠지만 Key pair을 생성하는 것을 권장한다.
또한 이때 생성한 Key pair 중 개인 key가 없을 경우 서버로 SSH 연결 자체가 불가능하므로 반드시 Save private key를 통해 저장한 후, 안전한 위치에 백업해 두어야 한다.
위 필수적인 몇 가지 설정을 마친 후 Create 버튼을 클릭하면 VM 인스턴스를 생성 가능하고, 인스턴스를 생성했다면 실행되기까지 대기한 후 VM이 정상적으로 실행된 것을 확인 가능하다.

이제 SSH 접속등을 위해 공인 IP를 설정해주어야 한다.

인스턴스 탭을 쭉 내리면 Resources 탭을 확인 가능한데, 이때 Attached VNICs에 접근한다.

이후 Name에 접근, IPv4에 접근한 후, 아래 사진과 같이 Edit을 클릭해 준다.

그럼 아래와 같이 IP 주소를 편집할 수 있다.

현재 설정되어 있는 IP 주소는 임시 공용 IP이기에 이를 고정 IP로 변환해 주기 위해 No public IP로 설정해 준다.

이후 다시 Edit을 클릭해 예약된 공용 IP, 즉 Reserved public IP를 클릭하고, 공용 IP를 새로 발급받기 위해 Create new Reserved IP Address 속성을 선택해 준다.

위 내용을 Update 한 후 인스턴스를 재시작하면 공용 IP가 적용된다.
이제 다시 인스턴스 화면으로 돌아와 user명을 확인해 준다.

username을 확인하면 이제 SSH 연결을 위한 모든 준비가 완료되었다.
Host Oracle_Cloud_22.04
HostName [Public IP]
User [User name]
IdentityFile [Local Key file path]
VScode 기준 위와 같이 config 파일을 구성해 주면 SSH 연결이 가능하다.

Port 개방
이제 SSH로 연결을 완료한 Oracle Cloude를 웹 서버에서 접근이 가능하게 하려면 추가적인 작업이 필요하다.

80번 포트나 443번 등의 포트를 열어주기 위해 다시 인스턴스 탭에서 Attached VNICs, Subnet을 클릭한다.

이후 Name을 클릭하면 수신 규칙을 수정 가능하다.

Add Ingress Rules 버튼을 클릭하면 아래 사진처럼 수신 규칙을 추가 가능하다.

사진의 80번 포트 외에도 443, 3306 등의 포트를 추가로 설정해 주었다.
이렇게 추가한 포트번호는 아래 명령어를 통해 한번 더 리눅스 자체의 방화벽을 열어주어야 한다.
sudo iptables -A INPUT -p tcp --dport [ PORT ] -j ACCEPT
...
sudo netfilter-persistent save
sudo iptables -L --line
이제 아래의 명령어로 적용된 방화벽 규칙을 확인한다.
ubuntu@instance---:/$ sudo iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
위 명령어로 규칙을 확인했을 때의 결과이며, 5번 규칙에서 모든 패킷을 거부하는 방화벽이 기존에 존재했음을 확인 가능하다.
sudo iptables -D INPUT 5
이러한 규칙이 기존에 존재할 경우 위 명령어로 규칙을 제거함으로써 방화벽 설정을 최종적으로 수정해 준다.
NSG 설정
Oracle Cloude 서비스 특성상 네트워크 보안 그룹도 추가적으로 설정해 주어야 한다.

Virtual cloud networks를 클릭.

Network Security Groups를 클릭.

이후 원하는 포트번호를 위 사진과 같이 열어주면 된다.
Swap 메모리 설정
Oracle Cloude에선 기본적으로 1GB 메모리를 제공하지만, APM 설치만 해도 모자란 수준이기에 추가적인 메모리 할당이 필요하다.
SSH 연결 후 아래 명령어를 차례대로 입력한다.
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
free -m
인스턴스 재부팅 후에도 Swap 메모리가 유지되도록 자동 마운트를 하기 위해 아래 명령어를 추가한다
sudo vi /etc/fstab
/swapfile swap swap defaults 0 0

이후 인스턴스를 재부팅 한 다음, sudo swapon --show 명령어로 swap 메모리가 정상적으로 마운트 되었는지 확인하면 된다.

위 모든 과정을 끝낸 뒤, 아래의 명령어로 APM을 설치해 준다.
sudo apt update
sudo apt install apache2
sudo apt install mysql-server
sudo mysql_secure_installation
sudo apt install php libapache2-mod-php php-mysql
그럼 이제 사전에 발급받은 공인 IP로 접근이 가능하다.

'Dev' 카테고리의 다른 글
[JS] 자바스크립트 기본 개념 / DOM (0) | 2025.04.08 |
---|---|
[JS] 자바스크립트 기본 개념 / 변수 선언 방식 (0) | 2025.03.26 |
[JS] 자바스크립트 기본 개념 / 동기, 비동기 (2) | 2025.03.25 |
웹 사이트 내에서 문제 도커 컴포즈 파일 빌드하기 (0) | 2025.02.27 |
pm2 사용하여 Node.js 백그라운드 구동하기 (0) | 2025.02.27 |