Эта статья - дополненный (комментариями и скриншотами) перевод статьи июньского номера Joomla Community Magazine за 2022 год, автор - Brendan Hedges. Далее повествование автора.
В Joomla 4 из коробки поставляется новый, улучшенный CLI (интерфейс командной строки), который входит в состав в ядра. Теперь вы можете выполнять задачи технического обслуживания, даже не заходя на свой веб-сайт. Давайте выясним, как это сделать.
"Одна Joomla для всех" - это громкое заявление! Но это действительно так. С одной стороны, Joomla - это удобная CMS с интуитивно понятной панелью администратора даже для начинающих пользователей. И в то же время Joomla - это мощное CMS-приложение [под капотом - полноценный PHP-фреймворк - Т.С.], которое обладает множеством функций для продвинутых пользователей. Таким образом, Joomla идеально подходит для всех веб-приложений: от простых 5-страничных сайтов-визиток до сложных и высоконагруженных интернет-магазинов. [Кстати, по теме: История взлёта и падения новостного сайта от 10 тысяч до 1 млн уников в сутки и обратно и при чём тут Joomla! - Т.С.]
На самом деле, если вы просмотрите JED (каталог расширений Joomla), Вы найдёте там расширения, позволяющие сделать практически всё, что бы Вы ни захотели создать. Если для вашего будущего веб-сайта нет расширения - не волнуйтесь. Существуют доступные расширения, которые помогут вам создать свое собственное индивидуальное расширение для Joomla.
Вы даже можете начать с нуля и использовать стандартную и хорошо структурированную платформу Joomla для создания собственного расширения. В случае успеха вы можете добавить его в JED и позволить другим пользователям использовать ваше расширение.
Это было бы круто, правда?
Одна из особенностей Joomla, в частности Joomla 4, дающая такие возможности - это новый улучшенный [по сравнению с Joomla 3 - Т.С.] CLI (интерфейс командной строки), поставляемый в ядре Joomla 4.
Давайте посмотрим на CLI и узнаем для чего его можно использовать.
С годами технологии совершенствуются, Joomla позволяет выполнять определенные задачи все легче и проще, даже не заходя в админку сайта. Недавно мы говорили о планировщике задач Joomla [Joomla Community Magazine: Get to know the new Joomla! Task Scheduler - текст на английском языке - Т.С.], который позволяет настраивать задания Cron для повторяющихся задач из самой Joomla. Существует также Joomla API, который можно использовать для управления Joomla с удаленного источника / веб-сайта. Существует также интерфейс командной строки Joomla.
Joomla CLI - это способ подключения к вашему сайту на Joomla и выполнения задач с удаленного терминала, например, по SSH с панели управления хостингом вашего веб-сайта.
Это особенно удобно и экономит время, если вы запускаете несколько сайтов с одного аккаунта хостинга.
Давайте начнем со знакомства с интерфейсом командной строки.
Что такое CLI?
Интерфейс командной строки (CLI) - это текстовый пользовательский интерфейс (UI), который используется для запуска программного обеспечения, управления компьютерными файлами и взаимодействия с компьютером /сервером. Интерфейс командной строки позволяет пользователю отвечать на визуальные подсказки, вводя отдельные команды в интерфейсе, а затем получать ответы таким же образом. Командная строка Windows - это интерфейс, с которым вы уже знакомы.
![Консоль командной строки в Windows Консоль командной строки в Windows](https://habrastorage.org/getpro/habr/upload_files/750/ec1/9ca/750ec19cad7fd9bc6f6ef970f11599b8.png)
Пользователи реагируют на визуальные подсказки, вводя команду в указанной строке и получая ответ от операционной системы. Это программное обеспечение выдает подсказку, пользователи отвечают, а затем приложение последовательно реагирует на команды. Благодаря этому взаимодействию команд и ответов пользователь может выдавать набор команд, которые выполняются системой или приложением, таким как Joomla.
Доступные подсказки и команды зависят от вашей операционной системы и конкретного интерфейса командной строки, но могут быть сотни, если не тысячи, различных исполняемых команд. Многие команды одинаковы для разных платформ, и вы вполне можете быть знакомы с некоторыми из них. Однако есть некоторые команды, которые специфичны для конкретного интерфейса командной строки и используемого вами приложения.
Возможно, вы уже знакомы с различными приложениями, в которых можно использовать интерфейс командной строки. Распространенные приложения включают в себя "Терминал" на компьютерах Mac, в Windows он известен как "командная строка", а на вашем веб-сервере в панели управления его называют как SSH.
Ввод текстовых команд для управления вашим приложением на первый взгляд может показаться сложным, однако этим частенько пользуются в Linux и других операционных системах на базе Unix. Этим навыком стоит овладеть, если вы хотите стать разработчиком сайтов. Как только вы познакомитесь с терминологией использования CLI, вы обнаружите и другие варианты использования, с которыми столкнетесь по мере оттачивания своих навыков.
Например, использование Node.js для создания веб-приложения в среде разработки (такой как Jet Brains Webstorm) или выполнение команд в облаках Amazone с использованием программ терминала в духе PuTTY или SSH.
Однако существуют доступные "оболочки" с графическим интерфейсом, которые считаются более простыми в использовании новичками. Хотя, строго говоря, термин "оболочка" обычно используется для описания интерпретатора командной строки. Оболочкой может быть любая программа, содержащая пользовательский интерфейс, включая полностью графически ориентированные программы.
Где находится CLI Joomla?
В отличие от многих других расширений Joomla, которые вы можете найти в панели администратора Вашего сайта Joomla, CLI Joomla является частью ядра. Таким образом, нет никаких настроек, с которыми нужно возиться, он просто есть и тихо работает в фоновом режиме вашего веб-сайта Joomla.
Как использовать CLI Joomla?
![](https://habrastorage.org/getpro/habr/upload_files/cb1/2dc/55b/cb12dc55be0844dbf162bf6449da6447.png)
Сначала о главном. Прежде чем вы сможете получить доступ к интерфейсу Joomla CLI, вам нужно будет создать способ прямого подключения к хосту вашего веб-сайта без фактического входа в Joomla или Cpanel вашего хоста.
Cpanel рекомендует использовать настольное приложение под названием "PuTTY", если вы запускаете Windows на своем компьютере, хотя, если вы используете Windows 10 или более позднюю версию, у него есть собственный SSH-клиент Windows, к которому вы можете получить доступ из командной строки.
Чтобы получить доступ к командной строке, откройте диалоговое окно "Выполнить", нажав клавишу Windows + r. Затем в диалоговом окне Выполнить введите cmd и нажмите кнопку ОК, чтобы открыть окно командной строки.
Если вы используете Linux или используете Mac, вполне возможно, что у вас уже установлено программное обеспечение для прямого подключения к серверу вашего веб-сайта. На основе этой статьи я предположу, что вы используете Windows, как и я.
Каждый способ доступа к серверу вашего веб-сайта похож, но вам придется сначала настроить SSH-доступ на панели управления вашего веб-хостинга, прежде чем вы сможете подключиться к CLI Joomla.
В этой статье я буду использовать "PuTTY", поскольку нахожусь на компьютере с Windows 8, и есть несколько проблем, которые мне пришлось решить на этом пути, поэтому я поделюсь некоторыми из них с вами, чтобы сэкономить вам время на настройке SSH-доступа к серверу вашего веб-сайта.
Поэтому перейдите на страницу загрузки "PuTTY" и при необходимости установите "PuTTY" на свой компьютер.
![](https://habrastorage.org/getpro/habr/upload_files/49b/e85/d6c/49be85d6c16316b15071cefe622a3ea0.png)
Следующий шаг - активировать SSH на Cpanel вашего веб-хостинга или другой панели управления веб-хостингом, например, Plesk. Мы будем придерживаться Cpanel, поскольку она самая популярная.
Настройте свои ключи доступа SSH
Чтобы использовать SSH, вам нужно настроить пару открытых/закрытых ключей в Cpanel и управлять ими. На первый взгляд инструкции кажутся сложными, но на самом деле они довольно просты. На веб-сайте A2 Hosting есть хорошая статья с большим количеством информации для различных операционных систем. Инструкции могут немного отличаться от хоста к хосту, поэтому я бы посоветовал вам изучить это для вашего конкретного случая использования.
![](https://habrastorage.org/getpro/habr/upload_files/4b8/613/6d1/4b86136d1f753c999150e933dfe83a93.png)
Также стоит помнить, что вам придется загрузить свой закрытый ключ на свой компьютер, поэтому помните, куда вы его положили. Если вы используете собственный SSH-клиент в Mac / Linux или Windows 10, вам следует сохранить файл ключа в:
Mac/Linux: каталог /home/username/.ssh. (Замените имя пользователя своим собственным именем пользователя.)
Windows 10: каталог \Users\username.ssh (замените имя пользователя на свое собственное имя пользователя.)
Это делается для того, чтобы ваша терминал знал, где найти ваш ключ.
Если вы используете "PuTTY", то просто помните, где он был загружен, так как вам нужно будет указать его в настройках "PuTTY".
Настройте PuTTY ДЛЯ доступа к серверу
Если вы уже установили "PuTTY", найдите значок на рабочем столе и откройте программу. Если нет, установите его прямо сейчас. Значок на рабочем столе для открытия PuTTY выглядит следующим образом:
![](https://habrastorage.org/getpro/habr/upload_files/b8e/c22/9ac/b8ec229ac390abdfc7c06f99adacd270.png)
Настроить PuTTY для доступа к вашему серверу несложно, вам нужно ввести всего 3 вещи. Они могут незначительно отличаться в зависимости от хостинга вашего веб-сайта, поэтому вам придется проверить это для ваших собственных обстоятельств. В моем случае мне нужно сделать следующее:
-
Ввести имя пользователя для моей учетной записи хостинга вместе с доменом, к которому я хочу получить доступ. Это должно быть указано в поле "Имя хоста (или IP-адрес)" на вкладке категории "Сеанс".
-
Затем в поле ‘Порт’ введите номер порта вашего SSH-соединения. Значение по умолчанию равно 22, но многие хосты меняют это значение, чтобы повысить безопасность соединения. Мой номер 7822.
-
Теперь вам нужно открыть новую вкладку в дереве настроек слева, прокрутите вниз до "SSH", затем откройте ‘Auth’. В нижней части вкладки перейдите в папку, в которую вы сохранили загруженный закрытый ключ SSH, выделите его и нажмите "Открыть’.
-
Вернитесь на вкладку "Сеанс" и в поле "Сохраненные сеансы" добавьте к нему запоминающееся имя. Затем нажмите кнопку ‘Сохранить’.
-
Теперь вы готовы подключиться к SSH-клиенту вашего веб-хостинга с помощью "PuTTY". Вы можете либо дважды щелкнуть по своему сохраненному запоминающемуся имени, либо нажать кнопку Открыть.
Если все прошло по плану, теперь вы должны увидеть окно терминала PuTTY. Это должно выглядеть примерно так:
![](https://habrastorage.org/getpro/habr/upload_files/a8d/0d8/f44/a8d0d8f4415139ab80e83a99d54828a2.png)
С этого момента окно терминала должно выглядеть одинаково, независимо от используемой операционной системы или SSH-клиента. Команды, которые вы будете выполнять, также будут одинаковыми. Далее мы будем просто говорить ‘терминал’.
Следующим шагом будет ввод пароля, который вы создали при настройке открытых/закрытых ключей в Cpanel. Если вы не сделаете этого в течение установленного периода времени, сервер вашего веб-сайта закроет соединение с вашим терминалом, и вы получите сообщение об ошибке, подобное этому:
![](https://habrastorage.org/getpro/habr/upload_files/271/89a/8a0/27189a8a029f4537cbf47445c9736233.png)
Вот одна из особенностей использования терминала для подключения к серверу вашего веб-сайта. При вводе вашего пароля ничего не отображается! Ни звездочек, ни черточек, ничего. Я также заметил, что я также не могу скопировать и вставить свой пароль в окно терминала (хотя это может быть специфично для "PuTTY’).
Я сторонник сверхдлинных надежных паролей, но это может быть исключением из правил! Хотя я бы все же посоветовал вам следовать рекомендациям вашей Cpanel относительно надежности созданного пароля. Как упоминалось в предыдущих статьях, пароль john123
недостаточно хорош. В зависимости от ваших SSH-ключей, операционной системы и экземпляра Cpanel Вам может потребоваться ввести пароль только для первоначального подключения. Но последующие сеансы не будут запрашивать ваш пароль. Это может касаться вас, а может и не касаться.
Использование вашего терминала для доступа к интерфейсу Joomla
Итак, продолжаем, вводим свой пароль, затем нажимаем "Enter" на клавиатуре.
![](https://habrastorage.org/getpro/habr/upload_files/39d/2ea/922/39d2ea922b6114e14c9d77b4764864c2.png)
Если все прошло хорошо, вы должны увидеть новую строку информации, которая выглядит следующим образом:
username@123host [~] #
Это корневой каталог для файлов вашего веб-сайта. В зависимости от вашего хостинга, сайт, скорее всего, будет находиться в вашей папке ‘public_html
’.
Если вы установили Joomla в другую папку на сервере, Вам нужно будет перейти в неё. Это также верно и для тех случаев, когда Вы используете более одного экземпляра Joomla на одном и том же аккаунте хостинга.
Пришло время смахнуть пыль с вашего старого руководства по DOS!
В моем случае мой домен designwebs.co.uk находится в папке, которая находится снаружи моей папки public_html
, например:
![](https://habrastorage.org/getpro/habr/upload_files/5ac/942/eaf/5ac942eaf22f6b9a5e0694ecf76e2fbe.png)
Если вы помните команды DOS, вы можете просто ввести cd [имя вашей папки здесь]
, поэтому в моем случае команда cd будет выглядеть как cd desighwebs.co.uk
там, где курсор мигает в окне вашего терминала. CD - это краткая команда, которая просто означает “Change Directory”.
Теперь я нахожусь в правильном каталоге для работы с Joomla CLI. Если вы хотите проверить, что находитесь в том же каталоге, что и Joomla, вы можете просто ввести команду ‘dir
’ (сокращенно от 'directory') в командной строке, и увидите список уже более знакомых файлов и папок Joomla в этом каталоге. Вот так:
![](https://habrastorage.org/getpro/habr/upload_files/0f7/225/3fe/0f72253fe3d902431e9faef872a70b4e.png)
Начнем пользоваться Joomla CLI
Кажется, потребовалось много времени, чтобы добраться до этого момента, но это не должно занять слишком много времени, как только вы освоите использование окна вашего терминала или SSH-клиента, такого как ‘PuTTY’. Весь смысл интерфейса командной строки Joomla заключается в ускорении выполнения задач, особенно тех, которые связаны с ожиданием их завершения. Резервное копирование вашего веб-сайта - хороший пример использования CLI Joomla. Мы вернемся к этому позже.
Итак, давайте сделаем наше первое обращение в CLI Joomla и убедимся, что мы подключены и все работает так, как предполагается.
Стандартный формат подключения к CLI Joomla начинается с:
php cli/joomla.php
Хотя, если вы войдете в каталог cli (команда cd my-website-folder-name/cli
), вместо того, чтобы работать из корневого каталога Joomla, вы можете использовать:
php joomla.php
Обновленная документация Joomla по CLI содержит больше информации о задачах, которые вы можете выполнить с помощью командной строки в Joomla.
Хорошей задачей для проверки нашего подключения было бы выяснить, на какой версии Joomla работает веб-сайт.
Итак, в командной строке введите:/
php cli/joomla.php core:check-updates
и нажмите "Enter".
![](https://habrastorage.org/getpro/habr/upload_files/811/0ee/f63/8110eef63eb8ce9ab423d83369b7f43f.png)
Примечание по PuTTY:
Если вы копируете команду Joomla CLI с помощью функции копировать/вставить, всё, что вам нужно сделать, чтобы вставить ее в терминал PuTTY, - это один клик правой кнопкой мыши по курсору.
Если всё подключено и работает, терминал Вас обрадует сообщением с подробным описанием версии Joomla, на которой работает ваш сайт.
![](https://habrastorage.org/getpro/habr/upload_files/bc8/cef/d3a/bc8cefd3a9a83653b88ec6cbfbe296c2.png)
Формат CLI команд Joomla
При вводе команды в терминал для доступа к CLI Joomla используется определённый формат, который может состоять из 2 или более частей, в зависимости от того, что вы хотите сделать, и сколько информации вам требуется вернуть.
Каждый разработчик компонентов Joomla может предлагать различные уровни управления и извлечения данных для своего программного обеспечения на основе CLI Joomla. Одним из первых пользователей этой функциональности Joomla является Akeeba, поэтому, используя Akeeba Backup в качестве примера, вы можете ознакомиться практически со всеми функциями со своего терминала.
Следующая команда CLI запрашивает данные резервной копии, хранящиеся для конкретной резервной копии:
php cli/joomla.php akeeba:backup:info 1 --format=json
Давайте разложим по полочкам, что это всё означает:
|
URL-адрес, необходимый для запуска CLI Joomla |
|
уникальное имя команды |
|
Конкретное программное обеспечение |
|
action - действие, которое нужно выполнить. |
|
аргумент для команды (если нужен) |
|
одна или несколько опций для команды. В данном случае выходные данные нашей команды CLI будут в формате Json. |
Обязательно обратите внимание на пробелы и двоеточия в команде, чтобы она работала должным образом.
![](https://habrastorage.org/getpro/habr/upload_files/a2d/22f/7f4/a2d22f7f4eded430f665a3c468f13c3f.png)
Команды CLI Joomla следуют аналогичному принципу аргументов и опций, но поскольку они являются "базовыми" командами, они немного проще.
На данный момент команды CLI Joomla делятся на 11 категорий:
Кэш (cache),
Основные настройки (config)
Ядро (core),
База данных (database),
Расширения (extension),
Поиск (умный поиск, finder),
Планировщик задач (Scheduler),
Сессия пользователя (Session),
Сайт (Site),
Обновление (Update)
Пользователь (User)
Каждая из них имеет свои собственные функции:
php cli/joomla.php core:check-updates # Проверяет обновления Joomla
php cli/joomla.php site:down # Переведет сайт в режим оффлайн
Добавление опций к параметрам команды CLI поможет получить более подробные результаты. Например, если вы хотите узнать, какие расширения установлены на Вашем сайте, Вам следует использовать команду:
php cli/joomla.php extension:list
![](https://habrastorage.org/getpro/habr/upload_files/596/0d8/6d7/5960d86d7e085974451fb723f33b2610.png)
Но, если вы хотите найти только определенные расширения определенного типа, например, установленные языки, Вы можете добавить в ту же команду опцию --type=language
:
php cli/joomla.php extension:list --type=language
Эта команда вернет следующую информацию:
![](https://habrastorage.org/getpro/habr/upload_files/3d1/05f/54b/3d105f54b3d969b0557ac3fa779aa5ad.png)
Совет: если ввести в терминал php cli/joomla.php
, то Вы получите список всех команд и описаний Joomla CLI.
![](https://habrastorage.org/getpro/habr/upload_files/9dd/984/df6/9dd984df623e3b42c674ead4119ad9b1.png)
Перейдём к практике
Мы собираемся выполнить 4 основные задачи по техническому обслуживанию, которые вы должны регулярно выполнять на нашем веб-сайте Joomla. Все это из терминала, без входа в панель администратора Joomla. Мы собираемся использовать 4 простые команды CLI для выполнения этих задач.
Во-первых, нам нужно собрать команды, которые мы будем использовать. Вы можете найти текущие команды Joomla CLI в приведенной ниже шпаргалке. Поскольку Akeeba Backup является наиболее широко используемым расширением для резервного копирования Joomla, мы будем использовать его для создания резервной копии.
Нужные нам CLI команды:
php cli/joomla.php update:extensions:check
php cli/joomla.php akeeba:backup:take
php cli/joomla.php extension:discover:install
php cli/joomla.php cache:clean
Если вы еще этого не сделали, войдите в выбранный вами терминал и убедитесь, что вы находитесь в корневом каталоге Joomla.
Задача первая: Проверить наличие обновлений расширений
Введите php cli/joomla.php update:extensions:check
в своём терминале.
![](https://habrastorage.org/getpro/habr/upload_files/fa3/796/5a6/fa37965a6c3dd1212a39a9dcd8d5e379.png)
В моем случае обновления не были доступны для установки. Сообщение об успешном завершении отображается зеленым цветом. Отмечу, что моё время, затраченное на выполнение этой команды, составило менее 3 секунд.
Задача вторая: создание бэкапа
Теперь пришло время сделать резервную копию с помощью Akeeba Backup. Введите php cli/joomla.php akeeba:backup:take
в своём терминале.
![](https://habrastorage.org/getpro/habr/upload_files/c1c/906/0f4/c1c9060f45eec68bded5dafde6aa28fc.png)
Очевидно, что создание резервной копии сайта занимает немного больше времени. Во время процесса резервного копирования ход выполнения подробно описывается в окне терминала во многом так же, как вы видите в бэкэнде администратора Joomla.
Успешное выполнение резервного копирования отображается зеленым цветом. Из временных меток вы можете видеть, что для завершения потребовалось всего 1 минута 10 секунд. Что довольно неплохо.
Задача третья: установка обновлений расширений
Пришло время обновить наши расширения. Введите php cli/joomla.php extension:discover:install
в терминале.
![](https://habrastorage.org/getpro/habr/upload_files/b56/1bc/c14/b561bcc145e509621b8d0d60d0e9e851.png)
В моем случае все уже обновлено, так что устанавливать нечего. В этом случае CLI может дать советы о том, что Вы могли бы сделать ещё. Мне CLI Joomla предложил попробовать запустить extension:discover
. Это работает так же, как запуск опции "Установка расширений -> поиск" в панели администратора.
Задача четвёртая: очистка кэша Joomla
Наконец, попробуем очистить кэш Joomla. Введите php cli/joomla.php cache:clean
в своём терминале.
![](https://habrastorage.org/getpro/habr/upload_files/757/84c/253/75784c253fedf4e4bee3f5cf9370b569.png)
Как только кэш будет очищен, вы снова увидите зеленое сообщение об успешном завершении.
Сообщения об ошибках
Если вы допустите опечатку при вводе команды или введете неизвестную команду, вы получите сообщение об ошибке, выделенное красным цветом. Сообщение будет содержать небольшую полезную информацию, которая поможет вам разобраться в том, что пошло не так. Вы можете увидеть на изображении ниже, что там написано:
Command “cache:clea” is not defined
The command “cache:clea” does not exist
Конечно, команда "cache:clea
", не существует в Joomla CLI, поэтому она не выполнена и интерфейс Joomla выдает ошибку.
![](https://habrastorage.org/getpro/habr/upload_files/efe/cb8/c32/efecb8c320d6475c65370d4195d88ac9.png)
Проверка Akeeba Backup в панели администратора
Не всегда бывает возможно проверить, действительно ли была запущена команда CLI, без некоторого копания в файлах и настройках Joomla. Но некоторые расширения упрощают это. В панели администратора Joomla в компоненте Akeeba Backup есть панель "Статистика резервного копирования" с правой стороны. Здесь можно увидеть, что последнее резервное копирование было инициировано из командной строки. В нем также содержится подробная информация о сделанной резервной копии и времени, в течение которого она была сделана.
![](https://habrastorage.org/getpro/habr/upload_files/01f/719/817/01f7198178a5dfbe9f357fe08d9389c2.png)
Каковы преимущества использования CLI Joomla?
В этой статье, как и во многих других статьях Joomla Community Magazine, описана лишь малая часть того, что происходит "под капотом" Joomla. Как и во многих других статьях, мы лишь ‘приоткрыли занавес’ для этой обновленной функции Joomla 4.
Я думаю, что самое большое преимущество знакомства с интерфейсом CLI Joomla заключается в том, насколько быстро можно выполнять самые необходимые задачи. От начала до конца четыре задачи, описанные выше, заняли около 2 минут, и это включало в себя запуск терминала "Putty", подключение к моему серверу через SSH, ручной ввод пароля для входа и копирование / вставку каждой из четырех команд по очереди.
Если вы умножите выполнение одних и тех же задач на несколько веб-сайтов, это сэкономит много времени.
Для продвинутых пользователей командная строка и терминал дают вам возможность автоматизировать повторяющиеся задачи на нескольких веб-сайтах, к которым у вас есть полный доступ. Вы можете быстро и легко просматривать их каталоги и выполнять для них одну и ту же команду Joomla CLI.
Представьте, сколько времени потребуется, чтобы вручную войти в систему администратора Joomla и запустить Akeeba Backup индивидуально для 100 различных веб-сайтов в вашем портфолио?
В этом весь смысл приложения командной строки. Оно очень способствует бесконечной настройке. В сочетании с чем-то вроде Ansible его можно даже использовать для выполнения команд через парк, состоящий из сотен серверов, на которых работают тысячи сайтов.
Инструменты командной строки работают вместе, чтобы дать вам сверхспособности.
Nicholas, Akeeba Ltd
Лично я, теперь, когда я настроил "PuTTY", я собираюсь добавить SSH-доступ ко всем своим веб-сайтам и запускать эти обновления, резервные копии и очистку кэша каждый раз, когда я получаю одно из тех писем с обновлениями "Это отправлено с вашего сайта", которые засоряют мой почтовый ящик. Я думаю, что изначально стоит потратить время на создание ключей доступа SSH и настройку терминала. Я могу даже потратить время на написание пакетной команды для пакетной работы с моими сайтами!
Шпаргалка Joomla CLI
php cli/joomla.php # + команда из списка ниже
Cache
cache:clean
- Очистка элементов кэша с истекшим сроком действия
Config
config:get
- Отображение текущих параметров конфигурации
config:set
- Установка параметров конфигурации
Core
core:check-updates
- Проверка обновлений Joomla
core:update
- Обновление Joomla
Database
database:export
- экспорт базы данных
database:import
- импорт базы данных
Extension
extension:discover
- поиск расширений для установки
extension:discover:install
- установка найденных расширений
extension:discover:list
- список найденных для установки расширений
extension:install
- установка расширения из указанного URL или пути
extension:list
- список установленных расширений
extension:remove
- удаление расширения
Finder
finder:index
- очистка индекса и запуск переиндексации умного поиска
Scheduler
Примечание от переводчика: в Joomla 4.1 появился встроенный планировщик заданий. Функционал для создания задач расширяется с помощью плагинов. Ранее на хабре была статья Создание WebCron плагина для Joomla 4 (Task Scheduler Plugin). Из панели администратора есть возможность включить выполнение задач по URL (посещение URL с ключом) или с использованием WebCron - при активности пользователей на сайте и в админке. Однако, в этом случае задачи запускает и выполняет web-сервер, у которого в большинстве случаев есть ограничение на время выполнения скрипта в 60 секунд. Возможность запустить задания Планировщика задач Joomla через CLI позволяет использовать на сайте любые "тяжелые" задачи, которые не будут нагружать веб-сервер. Постановка CLI-приложения с запуском задачи на CRON открывает широчайшие возможности при создания сайтов на Joomla 4. Серверный CRON настраивается по частоте запуска самой частой задачи один раз. Все остальные настройки выполняются уже из админки Joomla.
scheduler:list
- список поставленных на выполнение задач
![](https://habrastorage.org/getpro/habr/upload_files/b2c/99b/3a2/b2c99b3a25a79e271498aca3c0c9ba3a.jpeg)
scheduler:run
- запуск одной или нескольких задач
![Пример постановки запуска задач Планировщика Joomla 4 на cron - crontab -e. В этом примере CRON обращается раз в минуту. Частота запуска задач полностью настраивается через админку Joomla. Пример постановки запуска задач Планировщика Joomla 4 на cron - crontab -e. В этом примере CRON обращается раз в минуту. Частота запуска задач полностью настраивается через админку Joomla.](https://habrastorage.org/getpro/habr/upload_files/71a/437/42b/71a43742b1bbb3ad11b4597cf5b87fdc.jpeg)
scheduler:state
- включение, выключение или удаление запущенных задач.
Session
session:gc
- запуск garbage collection сессии
session:metadata:gc
- запуск session metadata garbage collect
Site
site:down
- переводит сайт в оффлайн режим
site:up
- включает сайт обратно
Update
update:extensions:check
- проверка расширений, ожидающих обновления
update:joomla:remove-old-files
- удаление старых системных файлов
User
user:add
- добавляет пользователя
user:addtogroup
- добавляет пользователя в группу
user:delete
- удаляет пользователя
user:list
- список всех пользователей
user:removefromgroup
- удаление пользователя из группы
user:reset-password
- изменение пароля пользователя
Akeeba Backup CLI
akeeba:backup:alternate
- создание бэкапа с помощью функции из фронтенда (Take a backup with Akeeba Backup's frontend backup feature)
akeeba:backup:alternate_check
- проверка наличия бэкапов с ошибкой с помощью функции из фронтенда (Check for failed Akeeba Backup backups with its front-end feature)
akeeba:backup:check
- проверка неудачных попыток создания бэкапов
akeeba:backup:delete
- удаляет запись о бэкапе, сделанную Akeeba Backup, или только ее файлы.
akeeba:backup:download
- возвращает архив бэкапа.
akeeba:backup:fetch
- скачивает бэкап из удаленного хранилища обратно на сервер
akeeba:backup:info
- отображает инфомрацию о бэкапе Akeeba
akeeba:backup:list
- отображает список бэкапов Akeeba
akeeba:backup:modify
- изменяет бэкап
akeeba:backup:take
- создает бэкап
akeeba:backup:upload
- повторная попытка загрузить бэкап на удаленное хранилище
akeeba:filter:delete
- удаляет значение фильтра
akeeba:filter:exclude
- устанавливает исключающее условие в фильтре
akeeba:filter:include-database
- добавляет дополнительную базу данных для включения в бэкап
akeeba:filter:include-directory
- добавляет директорию за пределами сайта для включение в бэкап
akeeba:filter:list
- список значений фильтров
akeeba:log:get
- извлечение файла логов
akeeba:log:list
- список файлов логов Akeeba Backup
akeeba:migrate
- запуск миграции настроек со старых версий Akeeba Backup
akeeba:option:get
- получение значения опции из конфига профиля Akeeba Backup
akeeba:option:list
- отображает параметры конфигурации профиля Akeeba backup, включая названия
akeeba:option:set
- устанавливает значение опции в конфиг профиля Akeeba Backup
akeeba:profile:copy
- создаёт копию профиля Akeeba Backup
akeeba:profile:create
- создаёт профиль Akeeba Backup
akeeba:profile:delete
- удаляет профиль Akeeba Backup
akeeba:profile:export
- экспорт профиля Akeeba Backup в JSON строку
akeeba:profile:import
- импорт профиля Akeeba Backup из JSON
akeeba:profile:list
- список профилей резервного копирования
akeeba:profile:modify
- изменение профиля резервного копирования
akeeba:profile:reset
- сброс профиля
akeeba:sysconfig:get
- получение значения из глобального конфига Akeeba Backup (на уровне всего компонента)
akeeba:sysconfig:list
- список опций глобального конфига Akeeba Backup (на уровне всего компонента)
akeeba:sysconfig:set
- установка значений в глобальный конфиг Akeeba Backup
Дополнительные ресурсы
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
https://www.a2hosting.com/kb/cpanel/cpanel-security-features/configuring-ssh-keys-with-cpanel
https://www.digitalcitizen.life/command-prompt-how-use-basic-commands/
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
https://www.akeeba.com/documentation/akeeba-backup-joomla/akeeba-backup-cli.html
От переводчика
Замечания и пожелания к переводу приветствуются.
Так же полезные ресурсы
Ресурсы сообщества:
https://vc.ru/s/1146097-joomla - Сообщество Joomla на VC.
Telegram:
вакансии и предложения работы по Joomla: фуллтайм, частичная занятость и разовые подработки. Размещение вакансий здесь.
Комментарии (4)
Warrangie
30.10.2022 03:22+2Это, конечно, очень интересно, но зачем писать лонгрид вместо краткого пояснения что теперь джумла может так, когда можно было просто вкратце описать логику работы и список команд?
sergeytolkachyov Автор
30.10.2022 03:37+1Замечу, что это перевод, а не мой текст) Да и целевая аудитория текста во многом новички, которые никогда не работали с cli. Поэтому всё так подробно.
Для меня лично вообще самое полезное из всей статьи то, что задания планировщика joomla можно запускать по крону. А типы задач эти можно создавать свои плагинами. И это 2 строчки из статьи) Но найдутся и те, кому понадобится и всё остальное.
mSnus
Прям интересно стало.. никакой авторизации? получается, что пользователь, у которого read only по ssh будет иметь полный контроль над сайтом? А если это shared хостинг (такие ещё есть, да))?
sergeytolkachyov Автор
Чтобы у "левых" людей оказался ssh доступ к сайтам - мне кажется это нужно постараться )) Интересный вопрос, на который лично я без тестов не смогу ответить. Если я правильно понимаю, речь идёт о правах на чтение/запись/исполнение к папкам и файлам. Read only по идее не должно разрешать исполнение скриптов. Т.о. контроля над сайтом нет, юзер с RO увидит только файлик joomla.php.
Как сделано в других фреймворках? Например, обновление цен на сайте в виде cli скрипта, вешаем на крон. И нужно указывать данные для авторизации в параметры запуска? Возможно, мой вопрос глупый, так как я с CLI мало работал, но тоже стало интересно.