Technote

개발 워크플로우 입문

연재 WP-CLI 자동화 레시피 8부 중 1부

WP-CLI 설치와 첫 명령 — 서버와 로컬은 다릅니다

클릭으로 하던 일을 명령으로 옮기면 그 작업이 기록이 됩니다. 설치는 10분이면 끝나지만, 어떤 PHP 로 어떤 사용자로 도는지를 처음에 정해 두어야 나중에 헤매지 않습니다.

워드프레스 관리 화면은 훌륭합니다. 다만 관리 화면에서 한 일에는 기록이 남지 않습니다. 어떤 순서로 무엇을 눌렀는지 설명하려면 글로 다시 써야 하고, 같은 일을 스테이징에서 한 번 더 하려면 사람이 그 글을 보고 다시 눌러야 합니다.

WP-CLI 는 워드프레스의 공식 명령줄 도구입니다. 같은 일을 명령으로 하면 그 명령이 곧 문서이고, 스크립트이고, 나중에는 CI 가 실행하는 검사가 됩니다. 이 연재는 그 이동을 여덟 회차에 걸쳐 다룹니다.

명령이 클릭보다 나은 지점

속도가 이유의 전부는 아닙니다. 실제로 갈리는 것은 같은 작업을 두 번째로 할 때입니다.

같은 결과라도 두 번째 실행에서 비용이 갈린다

설치 — 파일 하나를 내려받는 일

WP-CLI 는 단일 .phar 파일로 배포됩니다. 내려받아서 실행 권한을 주고 경로에 두면 끝입니다.

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

중간의 --info 를 건너뛰지 마세요. 어떤 PHP 바이너리로 실행되는지, 그 PHP 의 버전과 설정 파일이 무엇인지가 여기서 나옵니다. 나중에 생기는 문제의 상당수가 웹서버가 쓰는 PHP 와 CLI 가 쓰는 PHP 가 다르다는 사실에서 출발합니다.

서버와 로컬에서 달라지는 것

같은 도구지만 실행 환경이 다르면 신경 쓸 지점이 달라집니다. 세 가지를 처음에 정해 두면 이후가 조용합니다.

처음에 정해 둘 세 가지 — 위쪽을 틀리면 파일 소유권이 어긋난다

실행 사용자가 가장 중요합니다. root 로 실행하면 WP-CLI 가 경고를 냅니다. --allow-root 로 넘길 수는 있지만, 그때 만들어진 캐시 · 업로드 · 로그 파일의 소유자가 root 가 되어 이후 웹서버가 그 파일을 쓰지 못합니다. 서버에서는 sudo -u www-data wp … 형태로 웹서버 사용자를 지정해 실행합니다.

PHP 바이너리는 로컬에서 문제가 됩니다. 시스템 PHP 와 로컬 개발 도구가 제공하는 PHP 가 다른 경우가 흔하고, 그러면 CLI 에서만 확장 모듈이 없거나 버전이 낮아 이상한 오류가 납니다. 해결은 간단합니다 — PHP 경로를 고정한 짧은 래퍼 스크립트를 저장소에 두고 팀 전체가 그것만 씁니다.

위치--path= 로 넘깁니다. 저장소 루트와 워드프레스 문서 루트가 다른 구조(예: 저장소 안의 wordpress/ 폴더)에서는 이 플래그가 없으면 명령이 어디서도 동작하지 않습니다.

첫 다섯 명령

설치가 끝나면 이 다섯 개를 순서대로 돌려 보세요. 사이트의 상태를 한 화면에서 파악할 수 있습니다.

wp --info
wp core version --extra
wp option get home
wp plugin list --status=active --field=name
wp db check

네 번째가 특히 유용합니다. 활성 플러그인 목록을 문서에 적어 둔 목록과 대조하면, 누가 언제 무엇을 더 설치했는지가 즉시 드러납니다. 이 한 줄이 나중에 CI 검사의 첫 항목이 됩니다(8회차).

첫날 만나는 두 가지 오류

“This does not seem to be a WordPress installation” — 현재 디렉터리에 워드프레스가 없다는 뜻입니다. --path 를 주거나 문서 루트로 이동합니다.

데이터베이스 연결 실패 — 웹에서는 사이트가 멀쩡한데 CLI 만 실패한다면, 대개 DB 호스트 이름이 CLI 환경에서 다르게 해석되는 경우입니다. 소켓 경로나 hosts 별칭이 웹서버 컨텍스트에서만 유효하게 설정돼 있는지 확인합니다.

플러그인 하나가 치명적 오류를 내서 명령 자체가 뜨지 않을 때는 --skip-plugins --skip-themes 로 최소 부팅해 들어갈 수 있습니다. 원인을 찾는 첫걸음이 이 플래그입니다.

관련 글은 개발 워크플로우 아카이브에 모여 있고, 이 사이트에서 배포하는 무료 진단 도구들은 무료 도구에서 명령줄 사용법과 함께 안내합니다.

다음 회차

도구가 준비됐으니 실제 데이터를 다룰 차례입니다. 다음 회차는 글과 텀을 명령으로 다루는 방법인데, 첫 규칙이 하나 있습니다 — 수정보다 목록이 먼저입니다.

이 주제의 다른 글

노하우 목록으로

개발 워크플로우 실무

워드프레스를 GitHub 에 올릴 때의 .gitignore

워드프레스 저장소에서 커밋해야 할 것과 절대 커밋하면 안 되는 것의 경계는 명확합니다. wp-config.php 한 파일이 저장소에 들어가는 순간 DB 비밀번호와 인증 솔트가 통째로 유출됩니다.

개발자 · 운영 · 관리자 5분 읽기

개발 워크플로우 실무

취향 논쟁을 규칙 확인으로 바꾸는 디자인 리뷰

"좀 답답해 보인다" 는 반박할 수 없고 고칠 수도 없습니다. 간격 척도 밖의 값, 팔레트 밖의 색, 기준 미달 대비, 빠진 상태 — 네 항목만 규칙으로 바꿔도 리뷰의…

디자이너 4분 읽기

₩270,000 · 신청하기