* 이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
(워드프레스 해부 ㊱) WP-CLI
이 시리즈 내내 wp ... 명령이 계속 나왔다. 그게 WP-CLI다 — 관리자 화면 없이 명령줄로 워드프레스를 다루는 도구. 마지막 편은 이걸 제대로 정리하며 대장정을 마무리한다.
WP-CLI가 강력한 이유는, 지금까지 배운 걸 전부 명령 한 줄로 할 수 있어서다. 글 관리, DB 조회, 옵션 변경, 플러그인·테마 설치, 사용자 생성 — 화면을 안 열고도 된다. 대량 작업·자동화·이전에 특히 빛난다.
직접 해보기
$ wp --info # 설치·버전 확인
$ wp option get siteurl # 옵션 조회
$ wp plugin install query-monitor --activate
$ wp user create bob [email protected] --role=editor
# 이전할 때 도메인 일괄 치환 (34편의 그 작업)
$ wp search-replace 'old.com' 'new.com' --dry-run # 먼저 미리보기
$ wp search-replace 'old.com' 'new.com'
$ wp db export backup.sql # 백업
특히 search-replace는 이전(34편)의 필수품이다. DB 안에는 직렬화된 데이터가 섞여 있어서 단순 SQL 치환은 위험한데, WP-CLI는 이걸 안전하게 처리한다. --dry-run으로 먼저 확인하는 습관을 들이자.
✅ 확인 —
wp --info가 버전·경로를 출력하면 WP-CLI가 정상 동작하는 것이다. 이 시리즈에서 우리가 데이터베이스를 뜯고 옵션을 조회한 게 전부 이 도구 위에서였다.
설치와 첫 명령
WP-CLI는 wp라는 실행 파일 하나가 전부다. 서버에 내려받아 실행 권한을 주고 경로에 두면 끝난다. 워드프레스 폴더 안에서 실행하면 자동으로 그 사이트를 대상으로 동작한다.
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
wp --info # 설치 확인
wp core version # 이 사이트의 워드프레스 버전
자주 쓰는 명령 지도
지금까지 시리즈에서 스쳐 지나간 명령들을 한 표로 모으면 이렇다. 관리자 화면에서 클릭으로 하던 걸 거의 다 명령으로 할 수 있다.
| 하는 일 | 명령 |
|---|---|
| 글 관리 | wp post list / create / delete |
| DB 백업·복원 | wp db export / import |
| 옵션 변경 | wp option get / update |
| 플러그인 | wp plugin install / activate / update –all |
| 사용자 | wp user list / create |
| 도메인 치환 | wp search-replace old new |
| 캐시·크론 | wp cache flush / wp cron event run –all |
진가는 반복·대량 작업에서 나온다
하나만 고치는 일이면 관리자 화면이 더 편하다. WP-CLI가 빛나는 건 수백 개를 한 번에, 또는 사람 손 없이 자동으로 처리할 때다. 모든 플러그인을 한 줄로 업데이트하고, 휴지통 글을 통째로 비우고, 이전할 때 도메인을 한 번에 바꾼다.
wp plugin update --all # 플러그인 전부 업데이트
wp post delete $(wp post list --post_status=trash --format=ids) # 휴지통 비우기
wp search-replace 'old.com' 'new.com' --dry-run # 이전 시 도메인 치환(미리보기)
원격과 자동화
--ssh 옵션을 주면 내 노트북에서 원격 서버의 워드프레스를 그대로 다룰 수 있다. 셸 스크립트나 크론에 넣어 백업·정리를 자동화하고, 배포 파이프라인에서 wp core update·wp plugin update를 돌리는 것도 흔하다. 반복되는 운영 작업일수록 WP-CLI로 옮기면 실수와 시간이 같이 줄어든다.
완성형 하나 — 주간 정비 스크립트
명령 나열을 넘어, 실제 크론에 걸어 쓸 만한 정비 스크립트 한 벌로 마무리하자. 이 정도면 ‘매주 손으로 하던 관리’가 통째로 사라진다.
#!/bin/bash
# weekly-maintenance.sh — 매주 일요일 새벽 크론
set -e
W="wp --path=/var/www/site"
$W db export /backup/db-$(date +%F).sql.gz # 1) 백업 먼저 (철칙)
$W plugin update --all # 2) 플러그인 업데이트
$W theme update --all
$W post delete $($W post list --post_status=trash --format=ids) \
2>/dev/null || true # 3) 휴지통 비우기
$W transient delete --expired # 4) 만료 트랜지언트 정리
$W cache flush # 5) 캐시 플러시
echo "OK $(date)" >> /var/log/wp-maint.log
순서가 곧 안전장치다 — 백업이 항상 1번이라, 이후 어느 단계가 사고를 내도 되돌릴 수 있다. set -e는 중간 실패 시 나머지를 진행하지 않게 한다.
그리고 search-replace의 --dry-run이 실제로 어떤 모양인지 — 실행 전 이 표를 보고 ‘어느 테이블이 몇 건 바뀔지’를 확인하는 것이다.
$ wp search-replace 'http://old.com' 'https://new.com' --dry-run
+------------------+-----------------------+--------------+------+
| Table | Column | Replacements | Type |
+------------------+-----------------------+--------------+------+
| wp_options | option_value | 6 | PHP | ← 직렬화 데이터
| wp_posts | post_content | 143 | SQL |
| wp_postmeta | meta_value | 12 | PHP |
+------------------+-----------------------+--------------+------+
Success: 161 replacements to be made. ← 아직 아무것도 안 바뀜
Type이 PHP인 행이 단순 SQL 치환이 위험한 이유다 — 직렬화된 문자열은 길이 정보까지 함께 고쳐야 하는데, WP-CLI가 그걸 처리해 준다. 숫자가 납득되면 --dry-run만 떼고 재실행한다.
위험 — 되돌리기 버튼이 없다
강력한 만큼 조심해야 한다. wp db import·wp post delete·wp search-replace는 확인 창 없이 즉시 실행되고 되돌리기가 없다. 운영 서버에서 돌리기 전엔 반드시 wp db export로 백업부터 받고, 치환은 --dry-run으로 미리 확인하는 습관을 들이자. 이 한 가지만 지키면 WP-CLI는 위험한 도구가 아니라 가장 든든한 도구가 된다.
서버에서 자주 막히는 지점
WP-CLI를 서버에서 처음 돌릴 때 걸리는 것들이 몇 가지 정해져 있다. Error establishing a database connection이 뜨면 wp-config.php의 DB 정보가 틀렸거나, 워드프레스 폴더 밖에서 실행한 것이다(--path=/경로로 지정하면 된다). 메모리 부족으로 죽으면 php -d memory_limit=512M $(which wp) ...처럼 한도를 올려 실행한다.
하나 더, 권한 문제다. 웹서버와 다른 계정으로 wp를 돌려 파일을 만들면 소유권이 꼬여 나중에 웹에서 접근이 안 될 수 있다. 그래서 보통 웹서버 계정으로 실행한다(예: sudo -u www-data wp ...). 이 세 가지 — 경로, 메모리, 권한 — 만 기억하면 서버에서의 WP-CLI는 거의 막히지 않는다.
이걸로 「워드프레스 해부」 36편 대장정을 마친다. 폴더 하나의 역할부터 요청 생명주기, 데이터베이스 스키마, 훅과 쿼리, 확장과 테마, 그리고 운영까지 — 워드프레스의 뚜껑을 열고 안을 다 들여다봤다. 이제 워드프레스가 “돌아가는 블랙박스”가 아니라, 구조가 보이는 시스템일 것이다. 여기까지 따라와 줘서 고맙다.
자주 묻는 질문 (FAQ)
WP-CLI는 뭔가요?
명령줄로 워드프레스를 다루는 도구입니다. 플러그인 설치, DB 검색·치환, 사용자 관리 등을 화면 없이 빠르게 합니다.
WP-CLI가 왜 편한가요?
반복·대량 작업과 자동화에 강합니다. 예를 들어 wp search-replace로 도메인을 한 번에 바꿀 수 있습니다.

답글 남기기