OCI: wordpress와 mariadb를 사용해서 OCI에 웹 서비스 구축하기
저는 cafe24에서 제공하는 매니지드 워드프레스(wordpress) 서비스를 이용해서 해당 사이트를 운영하고 있었습니다. 그런데 Oracle Cloud Infrastructure(OCI)에서 2개 인스턴스까지 평생 무료로 사용할 수 있다고 해서, 이 번에 큰맘 먹고 cafe24에서 운영하던 사이트를 OCI로 이전했습니다. 저만 따라하면 누구든지 OCI에 웹 서비스를 구축할 수 있습니다. 아래 이미지는 전체적인 Architecture입니다.
아래는 제가 사용한 Resource들과 생성한 이름들입니다. OCI에 웹 서비스를 구축하려면 Resource들에 대한 이해는 필요하다고 생각합니다. 잠깐 검색하는 시간을 가져보시면 어떨까요?
- Compartment : web-compartment
- Virtual Cloud Network : webvcn
- Subnets : public-subnet4wordpress, private-subnet4mariadb
- Internet Gateway : web-internet-gateway
- Route Tables : Default Route Table for webvcn, Default Route Table for private subnet
- Security Lists : Security List for Public subnet WordPress, Security List for Private subnet Mariadb
- Reserved Public IP : web-public-ip
- Instances : vm4wordpress(10.0.100.100), vm4mariadb(10.0.200.200)
Resource들에 대한 이해가 끝나셨다면 천천히 따라오세요.
1. Compartment 생성
- Resource 경로 : Navigation menu > Identity & Security > Compartments > Create Compartment
- Compartment Name : “web-compartment”
2. Virtual Cloud Network 생성
- Resource 경로 : Navigation menu > Networking > Virtual cloud networks > Create VCN
- VCN Name : “webvcn”
3. Subnet 생성
- Resource 경로 : webvcn 클릭 > Subnets > Create Subnet
- Subnet Name :
- Public subnet : “public-subnet4wordpress”(10.0.100.0/24)
- Private subnet : “private-subnet4mariadb”(10.0.200.0/24)
4. Internet Gateway 생성
- Resource 경로 : Navigation menu > Networking > Virtual cloud networks > “webvcn” 클릭 > Internet Gateways > Create Internet Gateway
- Internet Gateway Name : “web-internet-gateway”
5. Route Table 생성 및 할당
- Public subnet을 위한 Route Table 생성 및 할당
- Route Table 생성
- Resource 경로 : “webvcn” 선택 > Route Tables > “Default Route Table for webvcn” 클릭 > Routing Rules > Add Route Rules
- Target Type 항목은 “Internet Gateway”를 선택하고, Target Internet Gateway 항목은 앞 단계에서 생성한 “web-internet-gateway”를 선택합니다.
- Route Table 할당
- Resource 경로 : “webvcn” 선택 > Subnets > “public-subnet4wordpress”의 Edit
- Route Table 항목에서 “Default Route Table for webvcn” 선택
- Resource 경로 : “webvcn” 선택 > Subnets > “public-subnet4wordpress”의 Edit
- Route Table 생성
- Private subnet을 위한 Route Table 생성 및 할당
- Route Table 생성
- Resource 경로 : “webvcn” 선택 > Route Tables > Create Route Table
- Route Table Name : Default Route Table for private subnet
- Target Type 항목은 “Private IP”를 선택하고, Target Selection 항목은 “vm4wordpress”의 Private IP(10.0.100.100)를 입력합니다.
- Route Table 할당
- Resource 경로 : “webvcn” 선택 > Subnets > “private-subnet4mariadb”의 Edit
- Route Table 항목에서 “Default Route Table for private subnet” 선택합니다.
- Route Table 생성
6. Security List 생성 및 할당
- Public subnet을 위한 Security List 생성 및 할당
- Security List 생성
- Resource 경로 : “webvcn” 선택 > Security > Create Security List
- Security List Name : Security List for Public subnet WordPress
- Ingress Security Rules 등록 :
– 1번 룰: ssh 접속을 하기 위해 필요
– 2번 룰: http 인터넷 서비스를 위해 필요
– 3번 룰: https 인터넷 서비스를 위해 필요
– 4번 룰: MTU 탐지 (Path MTU Discovery) 정상 동작 필요
– 5번 룰: 경로 오류, 장애 확인 시 필요
– 6번 룰: 네트워크 연결 확인 (ping), 정상적으로 서비스를 구축한 이후에는 6번 룰은 삭제해도 됩니다
- Egress Security Rules 등록
- Security List 할당
- Resource 경로 : “webvcn” 선택 > Subnets > “public-subnet4wordpress” 선택 > Security > Add Security List
- “Security List for Public subnet WordPress” 선택합니다.
- Security List 생성
- Private subnet을 위한 Security List 생성 및 할당
- Security List 생성
- Resource 경로 : “webvcn” 선택 > Security > Create Security List
- Security List Name : Security List for Privae subnet Mariadb
- Ingress Security Rules 등록 :
– 1번 룰: “vm4wordpress” 인스턴스를 경유해서 ssh 접속을 하기 위해 필요
– 2번 룰: mariadb의 디폴트 포트
– 3번 룰: “vm4wordpress” 인스턴스와 연결되었는지 확인, 정상적인 서비스 후 3번 룰은 삭제할 수 있습니다.
- Egress Security Rules 등록 :
- Security List 할당
- Resource 경로 : “webvcn” 선택 > Subnets > “priavate-subnet4mariadb” 선택 > Security > Add Security List
- “Security List for Privae subnet Mariadb”를 선택합니다.
- Security List 생성
7. Reserved Public IP 생성
인스턴스에 Public IP가 등록되어 있어야 외부 인터넷에서 인스턴스에 접속(ssh/http/https)할 수 있습니다. Public subnet에 인스턴스 생성 시 자동으로 부여되는 Public IP는 reboot 시 변경되기 때문에 Reserved Public IP를 할당받아서 외부에서 접속할 수 있는 인스턴스(“vm4wordpress”)에 할당하면 reboot 시에도 변경되지 않는 고정 IP를 설정할 수 있습니다.
- Resource 경로 : Navigation menu > Networking > Reserved public IPs > Reserve public IP address
- Reserved public IP Name : web-public-ip
8. Intance 생성 및 Reserved Public IP 할당
- Resource 경로 : Navigation menu > Compute > Instances > Create compute instance
- Instance Name : 워드프레스(wordpress)와 마리아DB(mariadb)를 설치하기 위해 각각의 인스턴스(vm4wordpress, vm4maradb)를 생성합니다.
- 인스턴스 생성 시 사용한 옵션:
- Image 영역 :
Ubuntu 이미지(Canonical Ubuntu 24.04) 적용합니다. 제 실력이 부족한지 Oracle 이미지와 Rocky 이미지 적용 시 패키지 업데이트와 설치가 안되었습니다. - Primary VNIC IP address 영역 :
– IPv4 address는 자동으로 할당하거나 저처럼 수동으로 할당할 수도 있습니다.
– Public subnet에 생성되는 vm4wordpress 인스턴스를 생성할 때는 Public IPv4 address를 설정하는 영역이 활성됩니다. 아래와 같이 선택하지 않습니다. 다음 단계에서 Reserved Public IP(“web-public-ip”)로 할당하겠습니다. 그래와 인스턴스를 reboot할 때 public ip가 변경되지 않습니다. 웹 서비스를 구축할 때 중요합니다.
- Add SSH keys 영역 :
모든 인스턴스의 SSH key(private key, public key)를 로컬PC로 다운로드합니다.(외부에서 ssh로 인스턴스에 접속할 때 필요합니다.)
- Image 영역 :
- “vm4wordpress” 인스턴스에 Reserved Public IP 할당
- Resource 경로 : Compute > Instances > “vm4wordpress” 선택 > Attached VNICs > “vm4wordpress” 선택 > IPv4 Addresses > Edit
- Public IP Type 영역 : “Select Existing Reserved IP Address”를 선택한 후 Drop down list box에서 “web-public-ip”를 선택합니다.
- Resource 경로 : Compute > Instances > “vm4wordpress” 선택 > Attached VNICs > “vm4wordpress” 선택 > IPv4 Addresses > Edit