Установка и настройка WP-CLI на Linux

15 июля 2023 330 WordPress

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

Установка на shared хостинг

На шередах 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 подхватит при запуске и предопределит дефолтные значения из указанных там параметров.

Аргументы интепретируются в следующем порядке (в порядке уменьшения приоритета):

  1. переданные напрямую при запуске WP-CLI;
  2. из файла wp-cli.local.yml в текущей рабочей директории;
  3. из файла wp-cli.yml в текущей рабочей директории;
  4. из файла ~/.wp-cli/config.yml;
  5. дефолтные значения WP-CLI.

Конфиги бывают полезны при частых запусках и запусках через системный крон.

Например, у юзера только один WP сайт. Чтобы постоянно не указывать аргумент --path и не запускать команду в корне сайта, то можно предопределить дефолтное значение этого аргумента в конфиге. Создаем конфиг по пути ~/.wp-cli/config.yml и пишем там:

path: /home/user/public_html

Теперь нам не нужно будет указывать аргумент --path при запуске команд.

Подробнее про конфиги, а также переменные окружения можно почитать в офдоке.

Комментарии (0)

5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии