일단 해당 포스트는 2024년 1월 9일 기준으로 작성된 것이므로 참고 바랍니다.
oracle cloud에서 ubuntu를 선택해주고 private , public key를 다운받는다.
그리고 key가 있는 곳 폴더의 터미널을 연 다음 아래 명령어를 입력해서 ssh를 켜준다.
$ sudo ssh -i {"ssh key 파일 이름"} ubuntu@{"인스턴스 ip"}
$ sudo su // 관리자 계정으로 진입. 더 이상 sudo를 입력하지 않아도 됨.
그리고 아래 명령어를 입력해서 ubuntu를 업데이트 해주자.
$ apt update -y && apt upgrade -yu
그리고 nvm을 통해서 npm , node를 동시에 깔아주자.
그리고 $ git clone {"repo-url"}
을 통해서 깃 레포를 복사해주면 끝!
그러나 ip를 고정하기 위해서 공용ip를 oracle cloud에서 받아야한다.
oracle cloud에서 네트워킹 > IP 관리 > 예약된 공용 IP
에 들어간다음 공용ip 주소예약을 클릭후 공용 ip를 발급받는다.
그리고 이걸 instance에 적용하면 된다.
컴퓨트 > 인스턴스 > 인스턴스 세부정보 > 연결된 VNIC > VNIC 세부정보 > IPv4 주소
에 들어가면 아래와 같이 나온다.
편집을 누르고 공용ip없음 클릭한다. 그리고 다시 편집을 눌러서
. 예약된 공용 ip를 누르고 기존에 예약된 ip주소에서 방금 만든 공용 예약 ip를 선택하고 업데이트한다.
그럼 이제 인스턴스가 다시 시작하든 뭘하든 ip가 변하는 일은 없을것이다.
도메인이 있다면 도메인에 공용ip를 등록해주면 된다.
참고로 , 필자는 namecheap
에서 도메인을 구매후 아래와 같이 도메인에 ip를 등록해주었다.
==> A record를 클릭후 value에다가 ip를 적고 저장하면 된다.
자 이제 ingress를 추가해주자.
우선 oracle instance에서 보안목록에 수신규칙을 추가해줘야한다.
아래 그림처럼 따라하자.
먼저 생성한 인스턴스 세부정보로 들어간 다음, 서브넷으로 들어가준다.
그리고 서브넷에서 보안목록을 클릭하고,
수신규칙을 추가해주면 된다. 여기에 소스 CIDR(Classless Inter-Domain Routing)에 0.0.0.0/0
으로 설정해준다. CIDR는 쉽게 말해 최신의 IP주소 할당법이다. 여기서 0.0.0.0/0
라고 입력하면 어떤 도메인에서 요청이 들어와도 다 허용 된다는 말이다.
그리고 대상포트범위에서 포트를 콤마로 구분하여 입력하면 허용 포트를 여러개 입력할 수 있다.
그리고 이제 방화벽을 허용해주어야 한다.
sudo iptables -I INPUT 5 -i ens3 -p tcp --dport [허용할포트번호] -m state --state NEW,ESTABLISHED -j ACCEPT
# 위에것이 안될 경우
sudo iptables -I INPUT -i ens3 -p tcp --dport [허용할포트번호] -m state --state NEW,ESTABLISHED -j ACCEPT
라고 하고
(이 행위를 인바운드 규칙을 설정
한다고 말할 수 있을 것 같다. 인바운드는 방문가능한 문을 허용하는 것을 의미한다고나 할까?)
tcp는 신뢰성을 우선시하고, 데이터가 보내어진 순서대로 들어올 수 있게 순서를 보장한다.
(반면 udp는 성능을 우선시하고 순서와 상관없이 모든 데이터가 그냥 들어오기만 하면 된다.)
sudo iptables --list
라고 하면 아래와 같이 나올것이다.
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT udp -- anywhere anywhere udp spt:ntp
ACCEPT tcp -- anywhere anywhere tcp dpt:3005 state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
여기서 NEW,ESTABLISHED
라고 되어있는곳에 아까 입력한 포트가 잇으면 방화벽이 잘 허용되었다고 보면 된다.
<출처>
1. https://scorpio-mercury.tistory.com/41
3. https://youtu.be/8vC-7ePgeLE?si=i67RzBnwWdKGSRqD