Установка и настройка WP-CLI на Linux
WP-CLI — это официальная утилита для управления сайтами на движке WordPress. Расскажу только как ее установить и настроить для использования в оболочке bash. Инфу по командам можно найти на офсайте утилиты и на wp-kama (если нужно на русском языке).
Установка на свой сервер/VPS
Самый простой вариант установки WP-CLI — скачивание в виде phar архива. Скачаем его в любую директорию через wget
или curl
:
wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
Сделаем его исполняемым:
chmod +x wp-cli.phar
И переместим его в /usr/local/bin/
с переименованием в wp
(эта директория должна быть в переменной $PATH
юзера, от имени которого WP-CLI будет запускаться; если выполняется под обычным юзером с sudo, то выполнить команду с sudo
):
mv wp-cli.phar /usr/local/bin/wp
Теперь WP-CLI будет доступен под командой wp
из любой директории.
ВАЖНО: не запускайте WP-CLI от рута или с sudo, это небезопасно.
Для проверки можно вызвать инфу об утилите:
wp --info
Тут можно будет увидеть инфу об окуружении, директориях, версию WP-CLI:
OS: Linux 5.10.0-22-amd64 #1 SMP Debian 5.10.178-3 (2023-04-22) x86_64
Shell: /bin/bash
PHP binary: /usr/bin/php7.4
PHP version: 7.4.33
php.ini used: /etc/php/7.4/cli/php.ini
MySQL binary: /usr/bin/mysql
MySQL version: mysql Ver 15.1 Distrib 10.6.14-MariaDB, for debian-linux-gnu (x86_64) using readline EditLine wrapper
SQL modes:
WP-CLI root dir: phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir: phar://wp-cli.phar/vendor
WP_CLI phar path: /home/user
WP-CLI packages dir:
WP-CLI cache dir: /home/user/.wp-cli/cache
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 2.8.1
На шередах WP-CLI бывает из коробки (например, у beget), но чаще всего его нет. Можно просто скачать phar архив и запустить его через PHP, но это неудобно. Чтобы он был доступен из любой директории и запускался, как обычная команда, то он должен быть помещен в любую директорию с бинарниками, перечисленными в переменной окуружения $PATH
юзера. Т.к. доступ к системным директориям на шередах ограничен, то WP-CLI не установить в обычные пути бинарников, но можно установить в бинарники юзера.
Для начала проверьте есть ли у юзера своя директория с бинарниками в переменной $PATH
:
echo $PATH
В выхлопе должно быть примерно такое:
/usr/local/bin:/usr/bin:/bin:/home/user/.local/bin
Здесь перечислены директории с бинарниками, разделенными двоеточием, где bash ищет бинарники при вводе команд. Если там есть директория в корне юзера (как в примере выше — /home/user/.local/bin
), то WP-CLI можно поместить туда (текущую директорию можно проверить командой pwd
). Если нет, то можно добавить свою через конфиги баша.
В большинстве случаев у обычных юзеров есть доступ к личным настройкам баша. Обычно это .bashrc
и/или .bash_profile
в корне домашней директории (сразу проверьте есть ли они).
Если есть, то создаем директорию для бинарников:
mkdir ~/.bin
Далее в .bashrc
и/или .bash_profile
добавляем строчку:
PATH=${PATH}:/home/user/.bin
Где /home/user
— путь к корню юзера.
Теперь перелогиниваемся и проверяем содержимое переменной $PATH
. Если все ок, то увидим в ней путь к добавленной директории.
Скачиваем WP-CLI:
wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
Делаем его исполняемым:
chmod +x wp-cli.phar
И перемещаем его в директорию ~/.bin
с переименованием в wp
:
mv wp-cli.phar ~/.bin/wp
Проверяем:
wp --info
Если увидим инфу о WP-CLI, то все ок.
Если же у нас говнохостинг, который запрещает менять настройки окружения и не предоставляет директорию для бинарников юзера, то придется запускать WP-CLI с указанием пути к нему (если находимся в другой директории, например, в корне сайта):
php /home/user/wp-cli.phar <параметры>
Либо указывать путь к корню сайта через --path
(если находимся не в корне сайта, а, например, в директории с WP-CLI):
php wp-cli.phar <параметры> --path=/path/to/project
А если если находимся не в корне сайта и не в директории с WP-CLI, то путь надо указывать и к WP-CLI и к корню сайта:
php /home/user/wp-cli.phar <параметры> --path=/path/to/project
Автодополнение команд
Для WP-CLI также подготовлен скрипт для автодополнения команд в баше по tab’у. Для установки просто скачиваем его в директорию /etc/bash_completion.d/
wget -O /etc/bash_completion.d/wp-completion https://raw.githubusercontent.com/wp-cli/wp-cli/master/utils/wp-completion.bash
На шередах этот файл можно закинуть в любую директорию и подключить в .bashrc
или .bash_profile
:
source /full/path/to/wp-completion.bash
После перелогина баш будет знать о командах и параметрах WP-CLI:
P.S.: автодополнение не будет нормально работать под рута по понятным причинам.
Обновление
Для обновления WP-CLI есть встроенная команда cli update
. Для обновления просто запускаем ее:
wp cli update
Также можно добавить обновление в системный крон (например, раз в неделю):
0 0 * * 1 /full/path/to/wp cli update --yes
Запуск WP-CLI под определенной версией php
По дефолту WP-CLI запускается под версией PHP, которая установлена по умолчанию в ОС. Проверить текущую версию можно через --info
либо через php
:
$ wp --info | grep PHP
PHP binary: /usr/bin/php7.4
PHP version: 7.4.33
$ php -v
PHP 7.4.33 (cli) (built: Jun 9 2023 07:37:37) ( NTS )
...
Но можно запустить под другой версией PHP. Для этого нужно знать имя либо полный путь к бинарнику нужной версии PHP и запускать примерно так:
/usr/bin/php8.0 /full/path/to/wp --info
Имена бинарников и пути к ним могут быть какими угодно, это зависит от способа установки PHP на сервер. Пути можно попробовать найти примерно так:
whereis php | tr " " "\n" | grep bin
В результате получим все пути, которые относятся к PHP, и выведутся только те, в которых есть bin
:
/usr/bin/php
/usr/bin/php7.3
/usr/bin/php7.4
/usr/bin/php8.0
/usr/bin/php8.1
/usr/bin/php5.6
/usr/bin/php7.0
/usr/bin/php7.2
/usr/bin/php7.1
/usr/bin/php8.2
Также можно создать алиас wp
в .bashrc
или .bash_profile
, например:
alias wp="/usr/bin/php8.2 /usr/local/bin/wp"
Проверяем после перелогина:
$ wp --info | grep php
PHP binary: /usr/bin/php8.2
php.ini used: /etc/php/8.2/cli/php.ini
Конфиги WP-CLI
Для того, чтобы предопределять глобальные параметры WP-CLI и аргументы его подкоманд, можно создать конфиги (./wp-cli.local.yml
, ./wp-cli.yml
, ~/.wp-cli/config.yml
), которые WP-CLI подхватит при запуске и предопределит дефолтные значения из указанных там параметров.
Аргументы интепретируются в следующем порядке (в порядке уменьшения приоритета):
- переданные напрямую при запуске WP-CLI;
- из файла
wp-cli.local.yml
в текущей рабочей директории; - из файла
wp-cli.yml
в текущей рабочей директории; - из файла
~/.wp-cli/config.yml
; - дефолтные значения WP-CLI.
Конфиги бывают полезны при частых запусках и запусках через системный крон.
Например, у юзера только один WP сайт. Чтобы постоянно не указывать аргумент --path
и не запускать команду в корне сайта, то можно предопределить дефолтное значение этого аргумента в конфиге. Создаем конфиг по пути ~/.wp-cli/config.yml
и пишем там:
path: /home/user/public_html
Теперь нам не нужно будет указывать аргумент --path
при запуске команд.
Подробнее про конфиги, а также переменные окружения можно почитать в офдоке.