OCI: wordpress와 mariaDB로 무료 웹 서비스 구축 설정하기

저는 cafe24에서 제공하는 매니지드 워드프레스(wordpress) 서비스를 이용해서 해당 사이트를 운영하고 있었습니다. 그런데 Oracle Cloud Infrastructure(OCI)에서 2개 인스턴스까지 평생 무료로 사용할 수 있다고 해서, 이 번에 큰맘 먹고 cafe24에서 운영하던 사이트를 OCI로 이전했습니다. 저만 따라하면 누구든지 OCI에 웹 서비스를 구축할 수 있습니다. public instance에는 wordpress를, private instance에는 mariadb를 설치했습니다. wordpress와 mariadb를 설치하는 절차는 제 브로그에서 맛보기로 확인할 수 있지만, OS별 최신 패키지 설치 절차는 인터넷을 참고하시는 게 좋습니다. 아래 이미지는 전체적인 Architecture입니다.
OCI에 구축한 웹 서비스 아키텍쳐
아래는 제가 사용한 Resource들과 생성한 이름들입니다. OCI에 웹 서비스를 구축하려면 Resource들에 대한 이해는 필요하다고 생각합니다. 잠깐 검색하는 시간을 가져보시면 어떨까요?

  1. Compartment : web-compartment
  2. Virtual Cloud Network : webvcn
  3. Subnets : public-subnet4wordpress, private-subnet4mariadb
  4. Internet Gateway : web-internet-gateway
  5. Route Tables : Default Route Table for webvcn, Default Route Table for private subnet
  6. Security Lists : Security List for Public subnet WordPress, Security List for Private subnet Mariadb
  7. Reserved Public IP : web-public-ip
  8. Instances : vm4wordpress(10.0.100.100, public subnet), vm4mariadb(10.0.200.200, private subnet)

Resource들에 대한 이해가 끝나셨다면 천천히 따라오세요.

1. Compartment 생성

  • Resource 경로 : Navigation menu > Identity & Security > Compartments > Create Compartment
  • Compartment Name : “web-compartment”
    Create Compartment

2. Virtual Cloud Network 생성

  • Resource 경로 : Navigation menu > Networking > Virtual cloud networks > Create VCN
  • VCN Name : “webvcn”
    Create Virtual Cloud Network

3. Subnet 생성

  • Resource 경로 : webvcn 클릭 > Subnets > Create Subnet
  • Subnet Name :
    1. Public subnet : “public-subnet4wordpress”(10.0.100.0/24)
    2. Private subnet : “private-subnet4mariadb”(10.0.200.0/24)

    Create Subnet


여기서 잠깐!
서브넷을 생성했으면 WordPress용 인스턴스(vm4wordpress)는 Public Subnet에, MariaDB용 인스턴스(vm4mariadb)는 Private Subnet에 생성합니다.

Create instance
그리고, 인터넷을 통해 접근/접속할 수 있도록 vm4wordpress 인스턴스에 Reserved Public IP를 할당합니다.


4. Internet Gateway 생성

  • Resource 경로 : Navigation menu > Networking > Virtual cloud networks > “webvcn” 클릭 > Gateways > Create Internet Gateway
  • Internet Gateway Name : “web-internet-gateway”
    Create Internet Gateway

5. Route Table 생성 및 할당

  • Public subnet을 위한 Route Table 생성 및 할당
    1. 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”를 선택합니다.
        Public subnet route table
    2. Route Table 할당
      • Resource 경로 : “webvcn” 선택 > Subnets > “public-subnet4wordpress”의 Edit
        Public subnet route table
      • Route Table 항목에서 “Default Route Table for webvcn” 선택
        Public subnet route table
  • Private subnet을 위한 Route Table 생성 및 할당
    1. 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)를 입력합니다.
        Private subnet route table
    2. Route Table 할당
      • Resource 경로 : “webvcn” 선택 > Subnets > “private-subnet4mariadb”의 Edit
      • Route Table 항목에서 “Default Route Table for private subnet” 선택합니다.

6. Security List 생성 및 할당

  • Public subnet을 위한 Security List 생성 및 할당
    1. 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번 룰은 삭제해도 됩니다
        Public subnet security list
      • Egress Security Rules 등록
        Public subnet security list
    2. Security List 할당
      • Resource 경로 : “webvcn” 선택 > Subnets > “public-subnet4wordpress” 선택 > Security > Add Security List
      • “Security List for Public subnet WordPress” 선택합니다.
        Public subnet security list
  • Private subnet을 위한 Security List 생성 및 할당
    1. Security List 생성
      • Resource 경로 : “webvcn” 선택 > Security > Create Security List
      • Security List Name : Security List for Private subnet Mariadb
      • Ingress Security Rules 등록 :
        – 1번 룰: “vm4wordpress” 인스턴스를 경유해서 ssh 접속을 하기 위해 필요
        – 2번 룰: mariadb의 디폴트 포트
        – 3번 룰: “vm4wordpress” 인스턴스와 연결되었는지 확인, 정상적인 서비스 후 3번 룰은 삭제할 수 있습니다.
        Private subnet security list
      • Egress Security Rules 등록 :
        Private subnet security list
    2. Security List 할당
      • Resource 경로 : “webvcn” 선택 > Subnets > “priavate-subnet4mariadb” 선택 > Security > Add Security List
      • “Security List for Private subnet Mariadb”를 선택합니다.
        Private subnet security list

7. 패키지 설치/업데이트 및 인스턴스 간 통신을 위한 iptables 정책 설정하기

  • vm4wordpress 인스턴스는 Public Subnet에 생성되어 있고, Public IP를 할당했기 때문에 외부 저장소를 통해 패키지를 설치/업데이트를 할 수 있습니다.
  • vm4mariadb 인스턴스는 Private Subnet에 생성되기 있기 때문에 직접 인터넷에 연결할 수 없고, vm4wordpress 인스턴스를 통해서만 패키지를 설치/업데이트할 수 있습니다. 이를 위해서는 자체 방화벽 허용 정책을 별도로 등록해야 합니다.

8. 외부에서 ssh로 인스턴스에 접속하기

9. HTTPS 접속을 위한 인증서 설치하기

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다