Шпаргалка по Composer, Drush и Linux командам

Автор: webmasta | Опубликовано:
Обновлено:
шпаргалка по командам composer, drush, drupal и linux

Решил структурировать и выложить в одном месте команды, которыми часто сам пользуюсь, чтобы иметь удобный доступ, прежде всего для себя.

Таблица содержимого

  1. Администрирование сервера
    1. Обновить все пакеты и удалить мусор
    2. Перезагрузить сервер
    3. Создать алиас команды для быстрого доступа
    4. Сгенерировать .htpasswd файл
    5. Права на папки и файлы
    6. Мониторинг серверного лога сайта
  2. Установка и настройка PHP
    1. Установить расширение PHP
    2. Сменить версию PHP в cli
  3. Composer
    1. Установить все зависимости
    2. Посмотреть, что требует обновления
    3. Обновить пакеты
      1. Обновить пакеты и все зависимости
      2. Обновить конкретный пакет
      3. Проверить, что мешает обновлению
      4. Удалить пакет
    4. Обновить autoload файл
  4. Composer и Drupal
    1. Установить друпал
      1. После установки друпала
    2. Установить модуль или тему
    3. Удалить модуль или тему
  5. Drush
    1. Дебаг любой команды
    2. Бекап всех файлов и базы данных
    3. Проверить наличие обновлений
    4. Режим обслуживания
    5. Отобразить статус
    6. Перестроить (очистить) кэш
    7. Обновить ядро
    8. Обновить модуль или тему
    9. Отключить (удалить) модуль
    10. Обновить базу данных, запустить миграции
    11. Запустить функцию
    12. Запустить обработку очереди через консоль
  6. Как я обновляю Drupal сайты

Администрирование сервера

Обновить все пакеты и удалить мусор

sudo apt update && apt list --upgradable && sudo apt upgrade && sudo apt dist-upgrade && sudo apt autoremove

Для Ubuntu в конце можно добавить sudo snap refresh, чтобы обновить все снапы. Предварительно необходимо закрыть все приложения.

Команда в итоге будет выглядеть вот так:

sudo apt update && apt list --upgradable && sudo apt upgrade && sudo apt dist-upgrade && sudo apt autoremove && sudo snap refresh

Перезагрузить сервер

Полная перезагрузка:

sudo reboot

Перезагрузить Apache:

sudo service apache2 reload

Перезагрузить Nginx:

nginx -s reload

Перезагрузить php-fpm (один из вариантов):

service php-fpm restart
service php8.1-fpm restart

Создать алиас команды для быстрого доступа

Сокращение длинных команд.

На примере обновления всех пакетов (первая команда в статье), можно сократить её вот так:

sudo nano ~/.bash_aliases

В открывшемся файле дописываем в формате alias короткая-команда='длинная команда':

alias update-all='sudo apt update && apt list --upgradable && sudo apt upgrade && sudo apt dist-upgrade && sudo apt autoremove'

Закрываем файл, сохранив изменения. Чтобы алиасы подхватились, надо запустить команду:

source ~/.bash_aliases

Если было открыто несколько окон командной строки и сокращённая команда нужна в каждом из них - команду надо запустить так же в каждом или перезапустить командные строки.

Теперь для запуска длинной команды в консоли можно использовать её сокращённый вариант:

update-all

 

Еще один полезный алиас - очистка Docker кэша. Если никогда этого не делали, то может вычистить несколько десятков гигов уже ненужных кэшей и иногда избавляет от различных багов:

alias docker-prune='docker container prune -f && docker image prune -f && docker builder prune -f'

Сгенерировать .htpasswd файл

Вместо user и pass — имя пользователя и пароль:

htpasswd -c -b .htpasswd user password

Права на папки и файлы

Узнать владельца:

ls -alh /path/

Изменить владельца и группу на текущего пользователя (-R указывает на то, что и всем наследникам тоже):

sudo chown -R $USER:$USER /path/

Изменить права на файл или папку:

chmod 775 file

Рекурсивно сменить права:

chmod -R 775 path/to/folder

Мониторинг серверного лога сайта

tail -f /var/www/user/data/logs/site.com.error.log

Установка и настройка PHP

Установить базовые пакеты:

sudo apt -y install lsb-release apt-transport-https ca-certificates

Установить дистрибутив, обновить пакеты и установить php:

sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update
sudo apt -y install php8.1 php8.1-cli php8.1-fpm php8.1-common php8.1-mysql php8.1-zip php8.1-gd php8.1-mbstring php8.1-curl php8.1-xml php8.1-bcmath php8.1-xmlrpc php8.1-imagick php8.1-dev php8.1-imap php8.1-opcache php8.1-soap php8.1-redis php8.1-intl

Вместо php8.1 можно указать другую версию, например:

sudo apt -y install php7.4 php7.4-cli php7.4-fpm...

Установить расширение PHP

sudo apt-get install php8.1-zip

Pecl расширения:

pecl install apcu

Сменить версию PHP в cli

Устанавливаем путь до необходимой версии пыха:

sudo update-alternatives --install /usr/bin/php php /opt/php81/bin/php 81

Выбираем в списке нужную версию:

sudo update-alternatives --config php

Composer

Полный список команд - https://getcomposer.org/doc/03-cli.md

Установить все зависимости

composer install

Посмотреть, что требует обновления

composer outdated

Обновить пакеты

composer update

Обновить пакеты и все зависимости

Обновить все зависимости КРОМЕ корневых (root).

composer update --with-dependencies

Обновить ВКЛЮЧАЯ корневые зависимости:

composer update --with-all-dependencies

Обновить конкретный пакет

composer update package/name --with-all-dependencies

Проверить, что мешает обновлению

composer prohibits package/name

Можно указать конкретную версию:

composer prohibits drupal/core:8.*.*

Удалить пакет

composer remove package/name

В контексте друпал модулей:

composer remove drupal/module_name

Обновить autoload файл

composer dump-autoload -o

Composer и Drupal

Установить друпал

Обычная установка:

composer create-project drupal/recommended-project my_site_name_dir

Установка пакета Drupal Composer Project (из коробки идёт drush, drupal console и некоторые другие изменения). Без особой необходимости лучше использовать первый вариант.

composer create-project drupal-composer/drupal-project:9.x-dev my_site_name_dir --no-interaction

После установки друпала

composer remove drupal/core-composer-scaffold

Ибо скаффолд после первичной установки не нужен. А далее, например, при обновлении ядра он может затереть изменения в корневом .htaccess, robots.txt или других файлах.

Так что удаляйте его, чтобы не было сюрпризов.

Установить модуль или тему

composer require drupal/devel

Удалить модуль или тему

composer remove drupal/devel

Drush

Дебаг любой команды

drush <command> -vvv

Бекап всех файлов и базы данных

drush archive-dump

Проверить наличие обновлений

drush ups

Режим обслуживания

Включить:

drush sset system.maintenance_mode 1

Выключить:

drush sset system.maintenance_mode 0

Отобразить статус

drush status

Перестроить (очистить) кэш

drush cache-rebuild

Или короткая версия:

drush cr

Обновить ядро

drush up drupal

Запустить только обновление безопасности (если есть):

drush up --security-only

Обновить ядро до dev ветки (только для разработки, не использовать на prod):

drush up drupal-8.5.x-dev

Обновить модуль или тему

drush up module_name

Отключить (удалить) модуль

drush pm:uninstall module_name

Обновить базу данных, запустить миграции

drush updb

Запустить функцию

В метод можно передать параметры.

drush php-eval "function_name('string', 123)"

Запустить обработку очереди через консоль

Вместо queue_name - название очереди.

drush queue-run queue_name

Запустить в фоне:

nohup drush queue-run queue_name > /dev/null 2>/dev/null &

Получить id процесса с обработкой очереди, запущенной на фоне:

ps -ef | grep 'drush queue-run queue_name' | grep -v grep | awk '{print $2}'

В ответ придёт числовой id процесса (pid). Убить можно командой:

kill <pid>

Как я обновляю Drupal сайты

Все свои проекты на Drupal я давно перевёл на composer, чего и Вам советую. Следовательно все зависимости и обновления должны идти именно через него.

Шаги для обновления друпал сайта:

  1. Переводим сайт в режим обслуживания, особенно актуально для посещаемых сайтов, чтобы юзерам не стали сыпаться ошибки:
     
    drush sset system.maintenance_mode 1
  2. Запускаем команду обновления. Тут есть несколько вариантов:
    • обновить только пакеты:
      composer update
    • обновить пакеты с зависимостями:
      composer update --with-dependencies
    • обновить, включая корневые зависимости:
      composer update --with-all-dependencies

      Какой из вариантов выбрать - решать разработчику. Иногда обновление зависимости может поломать проект. Чаще это случается, когда используется легаси или код от сторонних разработчиков, который давно не обновлялся, либо зашита определенная версия зависимости (например нет обратной совместимости с какой-то фичей).

      Если не уверены, используйте первый вариант и лучше предварительно на тестовом сервере. Если сайт небольшой и использует более менее стандартный набор модулей, предварительное тестирование чаще не требуется.
       
  3. Запускаем команду обновления базы данных:
    drush updb
  4. Перестраиваем кэш:
    drush cr
  5. Включаем обратно сайт:
    drush sset system.maintenance_mode 0

 

Вся процедура обычно занимает менее 2 минут, если конечно, не вылезут проблемы. А они, в свою очередь чаще случаются, при переходе на мажорные версии (с 7 на 8, с 8 на 9 и так далее).

Добавить комментарий

Ограниченный HTML

  • Допустимые HTML-теги: <a href> <b> <i>
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.