워드프레스 다중 사이트 이미지 고유 서버 구축 성공기

0

🎉 media.panchock.net 공유 이미지 서버 구축 성공기

워드프레스 사이트들의 이미지 용량을 줄이고, 관리 효율을 높이기 위해 공통 이미지 서버(media.panchock.net)를 구축하고,
다른 워드프레스 사이트(panchokmool.co.kr)와 공유하는 데에 성공했습니다.
아래는 이 과정 중 성공한 단계들을 순서대로 상세하게 정리한 기록입니다.


1. 서브도메인용 공용 이미지 서버 media.panchock.net 구축

  • 경로: /home/media.panchock.net/public_html/uploads
  • 인증서 발급: certbot --webroot 방식으로 SSL 인증서 정상 발급 완료
  • Apache 가상 호스트 설정:
<VirtualHost *:443>
ServerName media.panchock.net
DocumentRoot /home/media.panchock.net/public_html

<Directory /home/media.panchock.net/public_html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/media.panchock.net/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/media.panchock.net/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/media.panchock.net/chain.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

2. 디렉토리 설정 (.htaccess)

/home/media.panchock.net/public_html/uploads/.htaccess에 다음 설정을 적용하여 보안 및 웹P 최적화 반영:

# 디렉토리 리스트 방지
Options -Indexes

# CORS 허용 (cross domain 이미지 호출 허용)
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>

# WebP MIME 타입 등록
<IfModule mod_mime.c>
AddType image/webp .webp
</IfModule>

3. 워드프레스 사이트에 심볼릭 링크로 공유 폴더 연결

예: panchokmool.co.kr의 업로드 디렉토리를 공유 폴더로 연결

rm -rf /home/panchokmool.co.kr/public_html/wp-content/uploads
ln -s /home/media.panchock.net/public_html/uploads /home/panchokmool.co.kr/public_html/wp-content/uploads

4. 워드프레스 functions.php 수정으로 공유 이미지 경로 매핑

function custom_upload_paths($uploads) {
$uploads['baseurl'] = 'https://media.panchock.net/uploads' . $uploads['subdir'];
$uploads['basedir'] = '/home/media.panchock.net/public_html/uploads' . $uploads['subdir'];
return $uploads;
}
add_filter('upload_dir', 'custom_upload_paths');
  • 결과적으로 모든 워드프레스 이미지 업로드가 media.panchock.net/uploads로 저장됨
  • 이미지는 다른 도메인에서도 잘 표시됨

5. 업로드 및 이미지 표시 테스트 완료

  • https://media.panchock.net/uploads/test-image.jpg → 정상 출력
  • 워드프레스에서 이미지 업로드 성공 확인
  • 미디어 라이브러리에 등록된 이미지들 정상 출력됨

🔒 기타 성공 항목

  • .htaccessAccess-Control-Allow-Origin "*" 설정을 통해 타 도메인에서 이미지 불러오기 문제 해결
  • Options -Indexes로 디렉토리 노출 차단
  • media.panchock.net의 SSL 인증 및 리디렉션 정상 처리

🔧 문제점 및 향후 해결 과제 (기록용)

❗ 1. 기존 이미지 미디어 라이브러리 미표시 문제

  • hongbomool.panchock.net에서 복사해온 uploads 폴더의 이미지 파일들은 media.panchock.net/uploads에는 존재하지만, panchokmool.co.kr/wp-admin/upload.php 미디어 라이브러리에는 나타나지 않음.
  • 원인: 워드프레스는 DB에 등록된 항목만 미디어로 인식하며, 단순히 파일이 존재한다고 자동 인식하지 않음.

❗ 2. 미디어 라이브러리 동기화 플러그인 문제

  • Media Sync, Media from FTP 등 대표 플러그인 테스트했으나, 일부는 작동 불가, 일부는 유료 제한 또는 개발 중지 상태.
  • 미디어 등록을 수동으로 처리하거나 커스텀 플러그인 개발이 필요함.

⛳ 다음 단계

  • 기존 복사한 이미지들을 워드프레스 미디어 라이브러리에 등록 (Media Sync 대안 고려)
  • 다양한 사이트에 같은 방식 적용
  • 캐시 설정 재점검 (현재 비활성화 상태)

이런 식으로 설정하면 워드프레스 사이트 간 이미지 중복 저장 없이 효율적으로 관리할 수 있습니다.
필요 시 추가적인 동기화 도구를 만들어 확장도 가능합니다.


📝 결론 및 앞으로의 계획

  • 현재 구조는 이미지가 media.panchock.net에서만 관리되고, 여러 사이트(예: panchokmool.co.kr, hongbomool.panchock.net)에서 공유해서 불러오는 방식
  • 이미지 용량 절감 및 중앙 관리가 매우 용이함
  • 실시간 이미지 동기화 플러그인을 통해 기존 이미지도 점차 워드프레스 미디어 라이브러리에 등록할 예정

💡 TIP

  • 캐시 플러그인 사용 시 혼선 방지를 위해 테스트 중에는 WP Super Cache 및 Redis Cache 플러그인을 모두 비활성화했습니다.
  • 업로드 경로를 변경할 때는 upload_dir 필터만 사용하고 UPLOADS 상수는 설정하지 않는 게 좋습니다.
댓글을 남겨주세요.

귀하의 이메일 주소는 공개되지 않습니다.