데브포일 홈
WordPress 자동화
Guest
STAGE 20 · Lv.97

사이트 복제와 대량 배포

사이트 복제 도구, WP-CLI 사이트 생성, 템플릿 사이트, 자동 배포 스크립트, 배치 작업을 마스터합니다.

사이트 복제와 대량 배포: 시간을 10배 절약하는 시스템

왜 사이트 복제 자동화가 에이전시의 생명선인가

WordPress 사이트를 수동으로 하나씩 설정하면 테마 선택, 플러그인 설치, 기본 설정, 콘텐츠 구성, 보안 강화, SSL 설정까지 최소 4-8시간이 소요됩니다. 에이전시에서 월 10개의 클라이언트 사이트를 구축한다면 매달 40-80시간을 순수 세팅에만 쓰는 셈입니다.


자동화된 복제와 배포 시스템이 있으면 이 과정을 10분 이내로 단축할 수 있습니다. 단순한 시간 절약을 넘어, 일관된 품질 보장, 인적 오류 제거, 즉각적인 스케일링이 가능해집니다.


사이트 복제가 필요한 핵심 시나리오:

- 에이전시 클라이언트 사이트 구축: 브랜드 템플릿 기반으로 빠르게 커스터마이징

- 멀티 니치 전략: 검증된 사이트 구조를 여러 니치에 복제

- 스테이징 환경 생성: 프로덕션 사이트의 정확한 복제본으로 안전한 테스트

- 프랜차이즈/체인점: 본사 템플릿 기반 매장별 사이트 대량 생성

- A/B 테스트: 동일한 사이트의 변형 버전을 만들어 비교 실험

- 재해 복구: 백업으로부터 사이트를 즉시 복원

- 개발/교육: 동일한 환경을 여러 개발자/학습자에게 제공

⏱️
4-8시간 → 10분
사이트 구축
시간 단축
🎯
100%
템플릿 기반
일관된 품질
🔄
50+
하루에 배포 가능한
사이트 수
💰
95%
반복 작업 비용
절감률

템플릿 사이트 설계와 구축

완벽한 템플릿 사이트 = 완벽한 복제의 기반

대량 복제의 핵심은 잘 만들어진 템플릿 사이트입니다. 템플릿은 실제 라이브 사이트가 아니라, 복제 전용으로 유지보수되는 "마스터 이미지"입니다. 템플릿을 얼마나 잘 설계하느냐에 따라 복제 후 커스터마이징에 드는 시간이 결정됩니다.


템플릿 사이트에 포함해야 할 요소:

- 최적화된 테마 설정 (로고, 색상, 폰트를 플레이스홀더로)

- 핵심 플러그인 설치 및 최적 설정 완료

- 보안 설정 (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와 레벨이 쌓입니다.
Google로 3초 만에 시작 →🧵 Threads로 시작무료 공개 강의 둘러보기 (Lv.1~3)