사이트 복제와 대량 배포
사이트 복제 도구, WP-CLI 사이트 생성, 템플릿 사이트, 자동 배포 스크립트, 배치 작업을 마스터합니다.
사이트 복제와 대량 배포: 시간을 10배 절약하는 시스템
왜 사이트 복제 자동화가 에이전시의 생명선인가
WordPress 사이트를 수동으로 하나씩 설정하면 테마 선택, 플러그인 설치, 기본 설정, 콘텐츠 구성, 보안 강화, SSL 설정까지 최소 4-8시간이 소요됩니다. 에이전시에서 월 10개의 클라이언트 사이트를 구축한다면 매달 40-80시간을 순수 세팅에만 쓰는 셈입니다.
자동화된 복제와 배포 시스템이 있으면 이 과정을 10분 이내로 단축할 수 있습니다. 단순한 시간 절약을 넘어, 일관된 품질 보장, 인적 오류 제거, 즉각적인 스케일링이 가능해집니다.
사이트 복제가 필요한 핵심 시나리오:
- 에이전시 클라이언트 사이트 구축: 브랜드 템플릿 기반으로 빠르게 커스터마이징
- 멀티 니치 전략: 검증된 사이트 구조를 여러 니치에 복제
- 스테이징 환경 생성: 프로덕션 사이트의 정확한 복제본으로 안전한 테스트
- 프랜차이즈/체인점: 본사 템플릿 기반 매장별 사이트 대량 생성
- A/B 테스트: 동일한 사이트의 변형 버전을 만들어 비교 실험
- 재해 복구: 백업으로부터 사이트를 즉시 복원
- 개발/교육: 동일한 환경을 여러 개발자/학습자에게 제공
시간 단축
일관된 품질
사이트 수
절감률
템플릿 사이트 설계와 구축
완벽한 템플릿 사이트 = 완벽한 복제의 기반
대량 복제의 핵심은 잘 만들어진 템플릿 사이트입니다. 템플릿은 실제 라이브 사이트가 아니라, 복제 전용으로 유지보수되는 "마스터 이미지"입니다. 템플릿을 얼마나 잘 설계하느냐에 따라 복제 후 커스터마이징에 드는 시간이 결정됩니다.
템플릿 사이트에 포함해야 할 요소:
- 최적화된 테마 설정 (로고, 색상, 폰트를 플레이스홀더로)
- 핵심 플러그인 설치 및 최적 설정 완료
- 보안 설정 (Wordfence, 로그인 제한, 파일 권한 등)
- SEO 기본 설정 (Rank Math/Yoast 초기 설정)
- 캐싱 설정 (Redis, 페이지 캐시)
- 기본 페이지 구조 (홈, 소개, 서비스, 문의, 개인정보처리방침)
- 이메일 발송 설정 (SMTP)
- Google Analytics / Search Console 연동 코드 (플레이스홀더)
- 커스텀 CSS/JS 기본 프레임워크
- .htaccess / Nginx 최적화 설정
#!/bin/bash
# ============================================
# 템플릿 사이트 자동 생성 스크립트
# 각 용도별 완벽한 템플릿을 자동으로 구축합니다
# ============================================
TEMPLATE_BASE="/var/www/html/_templates"
LOG="/var/log/template-builder.log"
log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a ${LOG}; }
# ============================================
# 블로그 템플릿 생성
# ============================================
create_blog_template() {
local TEMPLATE_PATH="${TEMPLATE_BASE}/blog"
local TEMPLATE_DB="template_blog"
local TEMPLATE_URL="http://localhost/templates/blog"
log "블로그 템플릿 생성 시작"
# 디렉토리 및 DB 생성
mkdir -p ${TEMPLATE_PATH}
mysql -u root -e "CREATE DATABASE IF NOT EXISTS ${TEMPLATE_DB} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
cd ${TEMPLATE_PATH}
# WordPress 코어 다운로드
wp core download --locale=ko_KR --allow-root
# wp-config.php 생성
wp config create \
--dbname=${TEMPLATE_DB} \
--dbuser=root \
--dbpass="" \
--extra-php /dev/null # Hello World
wp post delete 2 --force --allow-root 2>/dev/null # Sample Page
wp comment delete 1 --force --allow-root 2>/dev/null
# 불필요한 기본 플러그인/테마 제거
wp plugin delete hello akismet --allow-root 2>/dev/null
wp theme delete twentytwentytwo twentytwentythree --allow-root 2>/dev/null
# ========= 핵심 플러그인 설치 =========
# 보안
wp plugin install wordfence --activate --allow-root
wp plugin install limit-login-attempts-reloaded --activate --allow-root
# SEO
wp plugin install seo-by-rank-math --activate --allow-root
# 캐싱
wp plugin install redis-cache --activate --allow-root
wp plugin install wp-super-cache --activate --allow-root
# 이메일
wp plugin install wp-mail-smtp --activate --allow-root
# 유틸리티
wp plugin install tablepress --activate --allow-root
wp plugin install easy-table-of-contents --activate --allow-root
wp plugin install social-warfare --activate --allow-root
wp plugin install classic-editor --activate --allow-root
# ========= 기본 페이지 생성 =========
HOME_ID=$(wp post create --post_type=page --post_title='홈' --post_status=publish --porcelain --allow-root)
wp post create --post_type=page --post_title='블로그' --post_status=publish --allow-root
wp post create --post_type=page --post_title='소개' --post_status=publish --allow-root
wp post create --post_type=page --post_title='문의하기' --post_status=publish --allow-root
PRIVACY_ID=$(wp post create --post_type=page --post_title='개인정보처리방침' --post_status=publish --porcelain --allow-root)
# 홈페이지 설정
wp option update show_on_front 'page' --allow-root
wp option update page_on_front ${HOME_ID} --allow-root
# 개인정보 페이지 설정
wp option update wp_page_for_privacy_policy ${PRIVACY_ID} --allow-root
# ========= 메뉴 생성 =========
wp menu create "메인 메뉴" --allow-root
wp menu item add-post "메인 메뉴" ${HOME_ID} --title="홈" --allow-root
wp menu location assign "메인 메뉴" primary --allow-root
# Permalink flush
wp rewrite flush --allow-root
# 파일 권한 설정
find ${TEMPLATE_PATH} -type d -exec chmod 755 {} \;
find ${TEMPLATE_PATH} -type f -exec chmod 644 {} \;
chown -R nginx:nginx ${TEMPLATE_PATH}
log "블로그 템플릿 생성 완료: ${TEMPLATE_PATH}"
}
# ============================================
# 이커머스 템플릿 생성
# ============================================
create_ecommerce_template() {
local TEMPLATE_PATH="${TEMPLATE_BASE}/ecommerce"
local TEMPLATE_DB="template_ecommerce"
log "이커머스 템플릿 생성 시작"
# 블로그 템플릿과 동일한 기본 설치 (함수 호출)
# ... (기본 설치 코드 동일)
# 이커머스 전용 플러그인 추가
wp plugin install woocommerce --activate --allow-root
wp plugin install woocommerce-gateway-stripe --activate --allow-root
wp plugin install mailchimp-for-woocommerce --activate --allow-root
wp plugin install woo-variation-gallery --activate --allow-root
# WooCommerce 초기 설정
wp option update woocommerce_default_country 'KR' --allow-root
wp option update woocommerce_currency 'KRW' --allow-root
wp option update woocommerce_currency_pos 'right_space' --allow-root
wp option update woocommerce_price_thousand_sep ',' --allow-root
wp option update woocommerce_price_decimal_sep '.' --allow-root
wp option update woocommerce_price_num_decimals '0' --allow-root
wp option update woocommerce_weight_unit 'kg' --allow-root
wp option update woocommerce_dimension_unit 'cm' --allow-root
wp option update woocommerce_enable_reviews 'yes' --allow-root
# WooCommerce 페이지 자동 생성
wp wc tool run install_pages --user=1 --allow-root 2>/dev/null
log "이커머스 템플릿 생성 완료"
}
# ============================================
# 비즈니스 템플릿 생성
# ============================================
create_business_template() {
local TEMPLATE_PATH="${TEMPLATE_BASE}/business"
local TEMPLATE_DB="template_business"
log "비즈니스 템플릿 생성 시작"
# 기본 설치 + 비즈니스 전용 플러그인
# ... (기본 설치 코드 동일)
wp plugin install elementor --activate --allow-root
wp plugin install wpforms-lite --activate --allow-root
wp plugin install google-site-kit --activate --allow-root
wp plugin install schema-pro --activate --allow-root
# 비즈니스 페이지 구조
wp post create --post_type=page --post_title='서비스' --post_status=publish --allow-root
wp post create --post_type=page --post_title='포트폴리오' --post_status=publish --allow-root
wp post create --post_type=page --post_title='팀 소개' --post_status=publish --allow-root
wp post create --post_type=page --post_title='파트너' --post_status=publish --allow-root
wp post create --post_type=page --post_title='채용' --post_status=publish --allow-root
log "비즈니스 템플릿 생성 완료"
}
# 메인 실행
case ${1} in
"blog") create_blog_template ;;
"ecommerce") create_ecommerce_template ;;
"business") create_business_template ;;
"all")
create_blog_template
create_ecommerce_template
create_business_template
;;
*) echo "사용법: $0 {blog|ecommerce|business|all}" ;;
esac
무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.