MinIO와 워드프레스 연동 Media Cloud 플러그인

워드프레스를 두개의 컨테이너로 운영 계획을 하고 있습니다.
이미지 공유를 어떻게 하면 좋을지 방법을 고민하고 있던중 개인적으로 사용하고 있는 오브젝트 스토리지가 떠올랐습니다.

MinIO

버킷 설정

MinIO는 민아이오라고 읽습니다. MinIO는 오픈소스 오브젝트 스토리지이며, AWS S3 API와 호환됩니다.
MinIO에 버킷을 생성하고 public으로 read할수있는 설정을 추가합니다.
아래 내용은 참고용입니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "*"
                ]
            },
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads"
            ],
            "Resource": [
                "arn:aws:s3:::wp-chattiboy"
            ]
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "*"
                ]
            },
            "Action": [
                "s3:ListMultipartUploadParts",
                "s3:PutObject",
                "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::wp-chattiboy/*"
            ]
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "*"
                ]
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::wp-chattiboy/*"
            ]
        }
    ]
}

CORS설정(옵션)

필요시 CORS를 설정하여 보안성을 향상 시킬 수 있습니다.

PlugIn Install & Activate

워드프레스 플러그인에서 minio로 검색하면 아래와 같은 플러그인이 조회됩니다.
설치하고 활성을하면 설정 마법사 화면이 나타납니다.

Plugin 설정

NEXT 버튼을 클릭합니다.

MinIO를 선택하고 NEXT를 클릭합니다.

Click NEXT

Set Your MinIO Info

Clict to Test Button

버킷이 Public으로 조회가 되어야 모든 확인이 v로 나타납니다.

FINISH & EXIST WIZARD를 클릭합니다.

이미지 업로드 체크

포스팅에 이미지를 넣어보고 업로드 여부를 확인해보면 아래와 같이 이미지 우측 하단에 구름 모양 아이콘을 볼 수 있습니다.

이번 포스팅에서는 연동 방법에 대하여 설명하였습니다.
이 설정을 이용하여 기존 서버의 스토리지 부담을 낮추고 여러 워드프레스를 운영할수 있는 방법을 적용해보았습니다.
다만, 플러그인 같이 설치되어야 하는 부분은 따로 마이그레이션이 필요합니다.