안녕하세요! 오늘은 호스팅어(Hostinger)를 활용해 하나의 메인 도메인에서 여러 프로젝트(IoT, 게임, 게시판 등)를 효율적으로 관리하는 **’도메인 아키텍처’**와 **’보안 관리’**에 대해 정리해 보려고 합니다.
1. 왜 서브도메인(Subdomain)인가?
메인 도메인 하나에 모든 파일을 때려 넣으면 나중에 유지보수가 지옥이 됩니다. micro2iot.com이라는 메인 땅 위에 별관을 짓는 서브도메인 전략이 필요합니다.
- 구조화:
game.,home.,api.처럼 용도별로 주소를 나누면 관리가 명확해집니다. - 독립성: 서브도메인 하나가 에러로 멈춰도 메인 블로그(워드프레스)는 안전합니다.
- 무한 확장: 대부분의 유료 호스팅은 서브도메인 생성이 매우 관대합니다. (최대 100개까지 가능!)
2. 데이터베이스(DB) 분리와 보안의 핵심
주소가 나뉘었다면 데이터가 담기는 그릇(DB)도 나눠야 합니다.
- 1 프로젝트 = 1 DB: 프로젝트마다 전용 DB를 만드세요. 그래야 백업(Dump)을 받을 때도 필요한 데이터만 깔끔하게 추출할 수 있습니다.
- 보안 파일의 외부 격리: DB 접속 정보(
ID/PW)가 담긴 설정 파일은 반드시public_html상위 폴더에 두세요. PHP의require_once를 이용해 불러오면 소스 코드가 유출되어도 DB는 안전하게 지킬 수 있습니다.
3. 백업은 개발자의 생명선
자동 백업만 믿지 마세요. 큰 업데이트 전에는 반드시 수동 백업을 생활화해야 합니다.
- 파일 백업: FTP나 관리 패널을 통해
public_html전체를 압축해서 다운로드합니다. - DB 백업: phpMyAdmin의 [내보내기(Export)] 기능을 통해
.sql파일을 확보하세요. - 복구 전략: 워드프레스라면
UpdraftPlus같은 플러그인을 활용해 구글 드라이브와 연동해두면 사이트가 통째로 날아가도 5분 만에 복구가 가능합니다.
4. 보안 코딩의 표준: SQL Injection 방어
직접 PHP 게시판을 만들 때 가장 중요한 것은 사용자의 입력을 믿지 않는 것입니다.
- Prepared Statement:
$stmt->prepare()방식을 사용하세요. 사용자가 입력한 데이터가 실행 명령어로 둔갑하는 ‘SQL 인젝션’ 공격을 원천 봉쇄할 수 있습니다. - 암호화: 비밀번호는 절대 평문으로 저장하지 마세요. PHP의 표준인
password_hash()와password_verify()를 사용하는 것이 현재 가장 안전한 표준입니다.
5. 운영의 팁: 서버 시간과 데이터 수집
홈서버(ESP32 등)와 웹 서버의 시간이 맞지 않아 고생하신 적 있나요?
- DB 타임스탬프 활용: 기기에서 시간을 보내지 말고, DB에 데이터가 들어오는 순간 서버가 자동으로 시간을 찍게(
CURRENT_TIMESTAMP) 만드세요. 서버의 시간은 전 세계 표준(NTP)과 동기화되어 있어 가장 정확합니다. - 크롤링의 한계와 대안: 최근 보안 강화로 외부 데이터 수집(로또 번호 등)이 어려워지고 있습니다. 이럴 땐 무리한 크롤링보다는 신뢰할 만한 외부 API를 쓰거나, 전용 관리자 페이지를 만들어 수동으로 데이터를 관리하는 것이 장기적으로 더 안정적입니다.
마치며 서버를 직접 운영한다는 것은 단순히 코드를 올리는 것을 넘어 **’나만의 작은 데이터 센터’**를 가꾸는 일과 같습니다. 오늘 정리한 구조를 바탕으로 더 단단하고 멋진 프로젝트들을 이어가시길 바랍니다!
서브 도메인 생성


답글 남기기