지식 베이스
Zinnector®로 배포하기: 연결, 확인, 푸시
로컬 프로젝트에서 라이브 사이트까지: API 키로 로그인하고, 프로젝트를 호스팅 슬롯에 연결하고, 슬롯과 PHP, 디스크, WordPress를 비교하는 사전 점검(pre-flight)을 확인한 뒤 푸시하세요. 여기에 재배포, 배포 기록, 문제가 발생했을 때의 빌드 로그 기능도 함께 제공됩니다.
로컬에서 프로젝트가 실행되면 네 가지 명령어를 통해 Zinn Digital® 호스팅의 라이브 사이트로 배포할 수 있습니다. 로그인, 프로젝트를 호스팅 슬롯에 연결, 사전 점검(pre-flight) 확인, 그리고 푸시입니다. 이 문서에서는 각 명령어, 출력되는 내용, 그리고 그 이후에 사용하는 명령어인 재배포, 배포 기록, 빌드 로그에 대해 차례대로 살펴봅니다.
API 키로 로그인하기
대시보드의 설정(Settings) → API 키(API keys)에서 키를 생성한 다음, 다음을 실행합니다.
zinnector login
키는 프롬프트에 직접 입력해야 하며, 절대로 커맨드 라인에서 인수로 허용되지 않습니다. 따라서 셸 기록이나 프로세스 목록에 남지 않습니다. CI 환경에서는 echo "$ZINN_API_KEY" | zinnector login --profile ci와 같이 파이프(pipe)로 전달하거나, ZINNECTOR_TOKEN을 설정하여 login 과정을 완전히 건너뛸 수 있습니다. 키는 저장되기 전에 검증되며, 파일 모드 600으로 저장됩니다. zinnector whoami --scopes를 실행하면 현재 로그인한 조직과 해당 키가 가진 권한을 확인할 수 있으며, 샌드박스 키는 별도로 표시됩니다.
프로젝트를 슬롯에 연결하기
zinnector link # 목록에서 사이트 선택
zinnector link example.com --repo acme/site --branch main
link 명령어는 사이트 ID를 zinnector.json에 기록하며, --no-repo를 전달하지 않는 한 플랫폼상의 사이트에 프로젝트의 git 원격 저장소를 연결하여 푸시를 통해 배포될 수 있도록 합니다. zinnector.json을 커밋해 두세요. 나중에 저장소를 복제(clone)한 동료가 별도의 안내 없이도 동일한 위치에 바로 배포할 수 있습니다. 여기에는 비밀 정보가 포함되지 않습니다.
사전 점검(pre-flight) 확인하기
zinnector check
이 명령어는 CLI가 존재하는 이유입니다. 프로젝트와 배포될 슬롯을 비교하여 모든 불일치 사항과 확인할 수 없었던 비교 항목들을 출력합니다.
- PHP 버전: 메이저 버전 간격은 사이트를 확실하게 중단시키므로 높음(high)으로 평가하며, 마이너 버전 간격은 낮게 평가합니다. 모든 것을 치명적으로 평가하면 경고를 무시하는 법을 배우게 되기 때문입니다.
- 슬롯이 사용자가 빌드한 버전으로 전환할 수 있는지, 슬롯의 PHP가 지원 종료(end of life)를 지났는지, 그리고 시스템이 해당 버전을 적용했는지 아니면 단순히 전달만 받았는지 여부.
- 슬롯에 실제로 남은 디스크 및 아이노드(inode) 여유 공간 대비 프로젝트의 용량 및 파일 수 — WordPress 트리 구조는 디스크 제한에 한참 못 미쳐도 파일 수 제한으로 인해 실행이 중단될 수 있습니다.
- 양쪽의 WordPress 버전, 슬롯의 프로비저닝 완료 여부, 그리고 푸시할 저장소가 연결되어 있는지 여부.
이는 경고일 뿐, 배포를 차단하지는 않습니다. 검사기가 알지 못하는 사이트의 특수한 상황을 사용자가 직접 알고 있을 수 있으므로, 모든 결과는 zinnector push --force를 통해 재정의(overrides)할 수 있습니다. 확인할 수 없었던 비교 결과는 통과(pass)가 아니라 알 수 없음(unknown)으로 보고되며, 요약에는 항상 그 개수가 표시됩니다. 기본적으로 로컬 PHP 버전은 zinnector.json에 선언된 버전입니다. --probe를 사용하면 로컬 런타임을 부팅하여 대신 측정합니다. --strict는 알 수 없음 항목이 있을 경우 0이 아닌 코드로 종료하므로 CI 게이트에서 유용합니다.
푸시(Push)하기
zinnector push
push 명령어는 사전 점검을 실행하고, 커밋을 푸시하며, 배포를 트리거하고 완료될 때까지 모니터링하면서 최종 상태와 배포된 커밋을 출력합니다. --dry-run은 배포를 제외한 모든 작업을 수행하며, --no-wait은 배포를 트리거한 후 바로 종료하고, --no-git은 푸시 없이 플랫폼에 이미 있는 내용을 그대로 배포합니다. 배포된 커밋이 방금 푸시한 커밋과 다를 경우, 그 사실을 알려줍니다.
문제가 발생했을 때
zinnector deploys example.com # 배포 기록 — 상태, 커밋, 트리거, 메시지
zinnector logs example.com --build # 가장 최근 배포의 빌드 로그
zinnector logs example.com --error # 사이트의 오류 로그
zinnector deploy example.com # 플랫폼에 이미 있는 내용 재배포
zinnector ai "why is my deploy failing?"
zinnector ai는 사용자의 계정으로 플랫폼 상에서 실행되므로 동일한 배포 기록과 로그를 조회할 수 있습니다. 프로젝트 내부에서 실행하면 디렉터리 이름, 버전, 사이트 ID 등 프로젝트의 형태만 전송하며, 파일 내용은 절대 전송하지 않습니다.