🎉 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
→ 정상 출력- 워드프레스에서 이미지 업로드 성공 확인
- 미디어 라이브러리에 등록된 이미지들 정상 출력됨
🔒 기타 성공 항목
.htaccess
내Access-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
상수는 설정하지 않는 게 좋습니다.