# 서브도메인 관리 스크립트 ## 개요 이 스크립트들은 dliveletter.kr의 서브도메인을 관리하기 위한 도구입니다. ## 🚀 빠른 시작 (권장) ### rebuild_subdomains.sh - DB 기반 전체 재생성 가장 간단하고 효율적인 방법입니다. DB에 등록된 모든 서브도메인을 기준으로 Apache 설정을 재생성합니다. ```bash # 실행 권한 부여 chmod +x rebuild_subdomains.sh # MySQL 정보 수정 vi rebuild_subdomains.sh # 실행 ./rebuild_subdomains.sh # Apache 재시작 systemctl restart httpd ``` ### quick_rebuild.sh - 원클릭 재생성 확인 없이 즉시 재생성하고 Apache까지 재시작합니다. ```bash # 첫 실행 시 설정 파일 생성됨 ./quick_rebuild.sh # subdomain_config.conf 수정 vi subdomain_config.conf # 재실행 ./quick_rebuild.sh ``` ## 스크립트 목록 ### 1. manage_subdomain.sh 서브도메인의 추가, 제거, 목록 조회를 수행하는 메인 관리 스크립트입니다. #### 사용법 ```bash # 서브도메인 추가 ./manage_subdomain.sh add wizwin ep87579064668809f3d632cc # 서브도메인 제거 ./manage_subdomain.sh remove wizwin # 현재 등록된 서브도메인 목록 조회 ./manage_subdomain.sh list ``` #### 기능 - Apache VirtualHost 설정 자동 추가/제거 - subdomain_init.php 파일 자동 업데이트 - 설정 백업 및 복원 - Apache 설정 테스트 - 데이터베이스 정보 표시 ### 2. subdomain_db_sync.sh 데이터베이스와 Apache 설정 간의 동기화 상태를 확인하는 스크립트입니다. #### 사용법 ```bash ./subdomain_db_sync.sh ``` #### 기능 - DB에 등록된 서브도메인과 Apache 설정 비교 - subdomain_init.php 동기화 상태 확인 - 불일치 항목 표시 및 해결 방법 제안 ## 설치 및 설정 ### 1. 스크립트 실행 권한 부여 ```bash chmod +x manage_subdomain.sh chmod +x subdomain_db_sync.sh ``` ### 2. 데이터베이스 정보 설정 두 스크립트 파일을 열어서 다음 변수들을 실제 값으로 수정하세요: ```bash MYSQL_USER="your_mysql_user" MYSQL_PASS="your_mysql_password" MYSQL_DB="your_database" ``` ### 3. 경로 확인 스크립트 내의 다음 경로들이 올바른지 확인하세요: - `HTTPD_CONF="/usr/local/apache2/conf/httpd.conf"` - `SSL_CERT_PATH="/etc/letsencrypt/live/dliveletter.kr"` - `SUBDOMAIN_INIT="/www/infoway/_infoway/include/subdomain_init.php"` ## 작동 원리 ### 서브도메인 추가 시 1. Apache httpd.conf에 VirtualHost 블록 추가 2. SSL 인증서 설정 (Let's Encrypt 사용) 3. RewriteRule로 ep, gp 파라미터 자동 설정 4. subdomain_init.php에 해당 서브도메인 처리 코드 추가 5. 와일드카드 제외 목록에 추가 ### 서브도메인 제거 시 1. Apache httpd.conf에서 VirtualHost 블록 제거 2. subdomain_init.php에서 해당 코드 제거 3. 와일드카드 제외 목록에서 제거 ## 주의사항 1. **백업**: 모든 변경사항은 자동으로 백업되지만, 중요한 작업 전에는 수동 백업을 권장합니다. 2. **Apache 재시작**: 설정 변경 후 Apache 재시작이 필요합니다. 스크립트가 자동으로 물어봅니다. 3. **SSL 인증서**: 와일드카드 SSL 인증서(*.dliveletter.kr)를 사용하므로 별도의 인증서 생성은 필요 없습니다. 4. **데이터베이스 동기화**: DB의 ep_domain 필드와 Apache 설정을 일치시켜야 합니다. ## 문제 해결 ### Apache 설정 오류 ```bash # 설정 테스트 httpd -t # 마지막 백업에서 복원 cp /usr/local/apache2/conf/backup/httpd.conf.최신날짜 /usr/local/apache2/conf/httpd.conf ``` ### 서브도메인이 작동하지 않을 때 1. DNS 설정 확인 (*.dliveletter.kr A 레코드) 2. Apache 에러 로그 확인: `tail -f /usr/local/apache2/logs/error_log` 3. subdomain_db_sync.sh로 동기화 상태 확인 ## 자동화 vs 수동 관리 ### 현재 방식 (수동) - 각 서브도메인마다 개별 VirtualHost 설정 - 장점: 명확한 설정, 개별 관리 가능 - 단점: Apache 재시작 필요, 수동 작업 ### 자동화 방식 - 와일드카드 VirtualHost + PHP 처리 - 장점: Apache 재시작 불필요, 자동화 가능 - 단점: 복잡한 로직, 디버깅 어려움 현재는 수동 방식을 사용하며, 필요시 자동화 방식으로 전환 가능합니다.