호스팅케이알 하위도메인은 기본 도메인의 DNS에 새 레코드를 추가해 만들 수 있습니다. 기존 메인 도메인은 그대로 유지하면서 studio.example.com처럼 새 주소를 만들고, 이 주소가 어느 서버로 갈지 A 또는 CNAME 레코드로 지정하면 됩니다.
필자의 경우 메인 도메인 example.com은 Google Blogger에 연결해서 운영하고, studio.example.com만 별도의 ChemiCloud 서버로 보내 cPanel의 Python App에 연결했습니다. 이처럼 메인 도메인과 하위도메인이 반드시 같은 서버를 사용할 필요는 없습니다.
이번 글에서는 실제로 진행한 순서대로 하위도메인 이름을 정하는 것부터 DNS 등록, ChemiCloud 연결, Python App에서 정상 작동하는지 확인하는 단계까지 설명합니다.
하위도메인이라는 개념부터 먼저 알고 싶다면
[‘하위도메인이란? 초보자가 알아야 할 서브도메인 핵심 8가지’ ] 참고
만들 하위도메인 이름 정한다

관리 화면을 열기 전에 가장 먼저 정할 것은 하위도메인의 이름입니다.
기본 도메인이 example.com 이라면 앞에 원하는 이름을 붙여 다음처럼 사용할 수 있습니다.
blog.example.com
shop.example.com
studio.example.com
edu.example.com
여기서 blog, shop, studio, edu가 하위도메인 이름입니다.
블로그를 따로 운영한다면 blog, 쇼핑몰이라면 shop, 교육용 사이트라면 edu처럼 실제 용도를 알아보기 쉬운 짧은 이름을 정하는 편이 관리하기도 편합니다.
이번 글에서는 다음과 같이 만들겠습니다.
- 메인 도메인: example.com
- 만들 하위도메인: studio.example.com
- DNS에 입력할 호스트 이름: studio
최종 주소는 studio.example.com이지만 호스팅케이알 DNS의 ‘호스트 이름’ 또는 ‘이름’ 칸에는 studio만 입력합니다.
아직 서버 주소나 A, CNAME이 무엇인지 몰라도 괜찮습니다. 먼저 ‘나는 studio.example.com이라는 주소를 만들겠다’는 것만 정하면 됩니다.
호스팅케이알에서 기본 도메인의 DNS 화면으로 들어간다


호스팅케이알에 로그인한 뒤 다음 순서로 이동합니다.
호스팅케이알 로그인 → 나의 서비스 → 도메인 → 하위도메인을 만들 기본 도메인 클릭 → 네임서버 / DNS → DNS 레코드 관리
이번 작업은 기존 도메인을 바꾸는 것이 아니라 studio라는 새 주소를 하나 추가하는 과정으로 그 기준이 되는 example.com을 선택합니다.


DNS 레코드를 추가하기 전 현재 네임서버도 확인합니다.
호스팅케이알 네임서버를 사용 중이라면 이 화면에서 계속 작업하면 됩니다.
또한 현재 홈페이지가 정상적으로 작동하고 있다면 @, www, MX, TXT 등 기존 DNS 레코드는 건드리지 않습니다. 이번 작업에서는 studio라는 새 레코드만 추가합니다.
하위도메인을 어느 서버에 연결할지 결정한다
DNS 값을 입력하기 전에 studio.example.com을 어디에서 운영할지 먼저 정합니다.
메인 도메인과 같은 서버를 사용할 경우
메인 사이트가 ChemiCloud나 Cloudways 같은 서버의 WordPress에서 운영되고 있고 하위도메인도 같은 서버를 사용할 예정이라면 기존 서버 IP를 사용할 수 있습니다.
기존: example.com → 기존 서버 IP
추가: studio.example.com → 같은 서버 IP
기존 DNS를 바꾸는 것이 아니라 studio라는 새 A 레코드를 추가하는 방식입니다.
메인 도메인과 다른 서버를 사용할 경우
필자는 이 경우에 해당합니다.
example.com → Google Blogger
studio.example.com
→ ChemiCloud
→ Python App
메인 도메인은 계속 Blogger에서 운영하고 하위도메인만 ChemiCloud 서버로 보냅니다.
따라서 기존 Blogger용 A 레코드와 www CNAME은 그대로 유지하고 studio만 새로 추가합니다.
ChemiCloud 서버 IP를 확인하고 A 레코드를 추가한다
필자의 studio.example.com은 ChemiCloud 서버에서 사용할 예정이므로 먼저 ChemiCloud의 서버 IP를 확인했습니다.

cPanel에서는 오른쪽 다음 위치에서 확인할 수 있습니다.
General Information → Shared IP Address
또는 ChemiCloud Client Area에서 다음 경로로 확인할 수 있습니다.
Client Area
→ Server Information
→ Server IP
이 값을 확인한 뒤 호스팅케이알 DNS 레코드 관리에서 새 레코드 추가를 누르고 다음처럼 입력합니다.

유형: A
호스트 이름: studio
값: ChemiCloud에서 확인한 Shared IP Address 숫자
TTL은 특별한 이유가 없다면 기본값을 유지합니다. 호스팅케이알은 안정적인 반영과 확인을 위해 기본 TTL 사용을 권장하고 있습니다.
저장 후 DNS 목록에 A / studio / ChemiCloud 서버 IP가 보이면 호스팅케이알에서 할 작업은 끝입니다.
다음 단계에서는 ChemiCloud cPanel에서 studio.example.com을 등록하고 Setup Python App의 Application URL과 연결합니다.
ChemiCloud cPanel에서 하위도메인을 Python App에 연결한다
DNS에서 studio.example.com을 ChemiCloud로 보냈다면 이제 ChemiCloud에서도 이 주소를 받아들이도록 설정해야 합니다.
먼저 cPanel 홈에서 다음 경로로 이동합니다.
ChemiCloud 로그인
→ 해당 호스팅 서비스 → cPanel 접속 → Domains 섹션에서 도메인 클릭 → Create A New DomainDomains 메뉴 활성화
최신 cPanel에서는 예전처럼 Addon Domains나 Subdomains 메뉴가 따로 보이지 않고 Domains 화면의 Create a New Domain에서 처리할 수 있습니다.
cPanel에 메인 도메인이 없다면 메인 도메인부터 먼저 등록한다
필자의 경우 cPanel에서 studio.example.com을 바로 등록하려 하자 다음 오류가 발생했습니다.
Could not determine the nameserver IP addresses for “studio.example.com”.
Please make sure that the domain is registered with a valid domain registrar.
ChemiCloud 상담원은 먼저 부모 도메인인 example.com을 cPanel에 Addon Domain으로 등록한 뒤 하위도메인을 추가하라고 안내했습니다.
최신 cPanel에서는 별도의 Addon Domains 메뉴를 찾을 필요 없이 다음 경로에서 메인 도메인을 등록할 수 있습니다.
cPanel
→ Domains
→ Domains
→ Create a New Domain
Domain:
example.com
Share document root:
체크하지 않음
→ Submit
하지만 필자의 경우 부모 도메인 example.com을 추가할 때도 같은 nameserver IP 오류가 발생했습니다.
여기서 기존 DNS나 네임서버를 임의로 변경하지 않는 것이 중요합니다. 필자의 메인 도메인은 이미 Google Blogger에서 정상적으로 운영되고 있었고, HostingKR의 기존 Blogger용 DNS를 그대로 유지하면서 studio.example.com만 ChemiCloud로 연결하려는 구성이었기 때문입니다.
이런 경우에는 ChemiCloud 기술지원팀에 서버 측 확인을 요청하는 편이 안전합니다.
필자는 상담원에게 다음 내용으로 상황을 전달했습니다.
I tried adding example.com first as an addon domain as instructed, but I receive the same error:
“Could not determine the nameserver IP addresses for example.com. Please make sure that the domain is registered with a valid domain registrar.”
example.com is a valid registered domain and its DNS must remain on my current DNS provider because the main domain is connected to Google Blogger.
I only want studio.example.com to point to my ChemiCloud Shared IP using an A record and use it with a cPanel Python App.
Could you please check the cPanel DNS/nameserver validation on the server and either manually add or allow example.com as an addon domain, then allow studio.example.com, without requiring me to change the domain’s nameservers to ChemiCloud?
1차 상담원도 같은 오류를 확인한 뒤 상위 기술팀에 티켓을 전달했습니다.
이후 ChemiCloud에서는 다음과 같이 답변했습니다.
“The domain example.com has now been successfully added as an addon to your cPanel. Our server couldn’t resolve example.com earlier; hence, the error. This has been addressed.”
즉 필자의 경우 도메인 등록 자체가 잘못된 것이 아니라 ChemiCloud 서버에서 부모 도메인을 정상적으로 resolve하지 못해 발생한 문제였습니다.

지원팀이 서버 측 문제를 처리하고 example.com을 cPanel에 Addon Domain으로 등록한 뒤에는 다시 cPanel → Domains → Create a New Domain으로 들어가 studio.example.com을 정상적으로 추가할 수 있었습니다.
유형: Registered Domain
Domain: studio.example.com(전체 주소를 입력)
Share document root: 체크하지 않음
Document Root: 자동 입력값 유지
→ Submit
Share document root를 체크하면 cPanel의 기존 Primary Domain과 같은 콘텐츠를 사용하게 되므로 별도의 Python App을 운영하려면 체크하지 않습니다.
같은 오류가 발생한다면 문제를 해결하기 위해 기존 Blogger용 DNS나 네임서버부터 변경하지 말고, 먼저 현재 DNS가 정상인지 확인한 뒤 ChemiCloud 지원팀에 위와 같은 내용으로 서버 측 검증을 요청하는 것이 좋습니다.
Setup Python App에서 studio.example.com을 연결한다
하위도메인 등록이 완료되면 cPanel 홈으로 돌아갑니다.
cPanel → Software → Setup Python App → Create Application

필자의 환경에서는 다음처럼 설정했습니다.
Python version: 3.12.14
Application root: studio_app
Application URL: studio.example.com
Application URL 오른쪽 경로: 비워둠
Application startup file: passenger_wsgi.py
Application Entry point: application
Environment variables: 처음에는 추가하지 않음
Python 버전 목록은 서버 환경에 따라 다를 수 있습니다. 필자의 cPanel에서는 3.12.14를 선택했고 실제 정상 작동까지 확인했습니다.
Application root는 Python 앱 파일이 저장되는 폴더입니다.
Application URL에는 앞에서 등록한 studio.example.com을 선택합니다.
Application startup file에는 passenger_wsgi.py를 사용했고, Entry point의 application 값은 앱 생성 후 자동으로 입력됐습니다.
입력이 끝났다면 CREATE를 누릅니다.
생성이 완료되면 화면 상단에 다음과 같은 가상환경 명령이 표시될 수 있습니다.
source /home/사용자명/virtualenv/studio_app/3.12/bin/activate …
이 문장은 오류가 아닙니다. SSH나 Terminal에서 해당 Python 가상환경에 들어갈 때 사용하는 명령입니다.
실제 프로그램의 requirements.txt를 설치하기 전이라면 Run Pip Install도 아직 누를 필요가 없습니다.
OPEN을 눌러 정상 연결을 확인한다
Python App 생성이 끝나면 Application URL 옆의 OPEN을 눌러봅니다.
정상적으로 연결됐다면 기본 테스트 화면에서 다음과 같은 문구를 확인할 수 있습니다.
It works!
Python 3.12.14
필자의 경우 이 화면까지 확인하면서 다음 연결이 정상적으로 완료된 것을 확인했습니다.
studio.example.com
→ HostingKR DNS
→ ChemiCloud 서버
→ cPanel
→ Python App
이제 도메인과 Python 실행환경 연결은 끝났습니다.
실제 자동화 프로그램을 운영하려면 다음 단계에서 studio_app 폴더에 Python 코드를 올리고 requirements.txt 설치, 환경변수 등록, API 연결 등을 진행하면 됩니다.
과정에서 자주 막히는 부분
Could not determine the nameserver IP addresses 오류
cPanel에서 부모 도메인이나 하위도메인을 추가할 때 이 오류가 발생한다면 먼저 실제 도메인이 정상 등록되어 있고 DNS가 조회되는지 확인합니다.
필자의 경우 ChemiCloud 서버가 부모 도메인을 resolve하지 못해 발생했고 지원팀 상위 기술부서에서 처리한 뒤 정상적으로 등록할 수 있었습니다.
메인 도메인이 Blogger에 연결되어 있다면 이 오류를 해결하려고 기존 네임서버나 Blogger DNS를 임의로 변경하지 않습니다.
브라우저에서 연결이 비공개가 아니라는 경고가 나온다면
Python App을 만든 뒤 Application URL 옆의 OPEN을 눌렀는데
‘연결이 비공개로 설정되어 있지 않아요’
라는 경고가 나온다면 하위도메인용 SSL 인증서가 아직 발급되지 않았을 가능성이 높습니다.
이때 브라우저의 ‘고급’을 눌러 억지로 접속하기보다 ChemiCloud cPanel에서 SSL부터 발급합니다.
cPanel → Security → SSL/TLS Certificates → Wizard
‘Issue a certificate’ 목록에서 studio.example.com을 선택한 뒤
Continue → Let’s Encrypt Certificate를 눌러 인증서를 발급합니다.
인증서 발급에는 몇 분 정도 걸릴 수 있습니다. studio.example.com 옆에 녹색 자물쇠가 표시된다면 이미 유효한 SSL 인증서가 설치된 상태입니다.
SSL 발급이 끝난 뒤 다시 https://studio.example.com으로 접속합니다.
필자의 경우 SSL 적용 후 Python App 화면에서
It works!
Python 3.12.14
가 정상적으로 표시되는 것을 확인했습니다.
DNS에는 studio가 있는데 Python App이 열리지 않는다
다음 순서로 확인합니다.
1. 호스트 이름이 studio로 등록됐는지
2. A 레코드 값이 실제 ChemiCloud Shared IP Address인지
3. cPanel Domains에 studio.example.com이 등록됐는지
4. Setup Python App의 Application URL이 studio.example.com인지
5. Python App이 실행 중인지
DNS에 studio가 있다는 것은 목적지 서버만 지정한 상태입니다. 서버 쪽 도메인 등록과 Python App 연결까지 끝나야 실제 앱에 접속할 수 있습니다.
마무리: 메인 도메인과 달리 하위도메인만 다른 서버에 연결
이번 작업에서 가장 중요한 점은 기존 메인 도메인을 바꾸지 않았다는 것입니다.
필자의 구성은 다음과 같습니다.
example.com → Google Blogger 유지
studio.example.com → ChemiCloud Python App
기존 Blogger용 @ A 레코드와 www CNAME은 그대로 두고 studio라는 A 레코드만 추가했습니다.
메인 도메인과 하위도메인은 같은 도메인 계열이지만 반드시 같은 서버에서 운영할 필요는 없습니다.
DNS에서 각각의 호스트가 바라볼 목적지를 나눌 수 있기 때문에 메인 사이트는 Blogger에 두면서 Python 자동화 프로그램만 별도의 ChemiCloud 서버에서 운영하는 구성도 가능합니다.
이번 글에서는 하위도메인을 만들고 Python App에서 It works 화면까지 확인했습니다.
다음 글에서는 이 Python App에 실제 자동화 프로그램을 올리고 패키지와 환경변수까지 설정하는 과정을 이어서 설명합니다.
공식 출처·확인처
ChemiCloud – What Is My Server’s IP Address?
ChemiCloud – How to Create an Addon Domain in cPanel
ChemiCloud – How to Create a Subdomain in cPanel
ChemiCloud – How to Setup Python Application in cPanel
함께보면 좋은 글
하위도메인이란? 초보자가 알아야 할 서브도메인 핵심 8가지
5화 클라우드웨이즈 해지 방법|서버 삭제·결제 중단, 케미클라우드 이전 마무리