Решил структурировать и выложить в одном месте команды, которыми часто сам пользуюсь, чтобы иметь удобный доступ, прежде всего для себя.
Таблица содержимого
- Администрирование сервера
- Установка и настройка PHP
- Composer
- Composer и Drupal
-
Drush
- Дебаг любой команды
- Бекап всех файлов и базы данных
- Проверить наличие обновлений
- Режим обслуживания
- Отобразить статус
- Перестроить (очистить) кэш
- Обновить ядро
- Обновить модуль или тему
- Отключить (удалить) модуль
- Обновить базу данных, запустить миграции
- Запустить функцию
- Запустить обработку очереди через консоль
- Как я обновляю 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
Установить друпал
- Официальный мануал (обновляется) - https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies
- Или Drupal composer project - https://github.com/drupal-composer/drupal-project
Обычная установка:
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, чего и Вам советую. Следовательно все зависимости и обновления должны идти именно через него.
Шаги для обновления друпал сайта:
- Переводим сайт в режим обслуживания, особенно актуально для посещаемых сайтов, чтобы юзерам не стали сыпаться ошибки:
drush sset system.maintenance_mode 1
- Запускаем команду обновления. Тут есть несколько вариантов:
- обновить только пакеты:
composer update
- обновить пакеты с зависимостями:
composer update --with-dependencies
- обновить, включая корневые зависимости:
composer update --with-all-dependencies
Какой из вариантов выбрать - решать разработчику. Иногда обновление зависимости может поломать проект. Чаще это случается, когда используется легаси или код от сторонних разработчиков, который давно не обновлялся, либо зашита определенная версия зависимости (например нет обратной совместимости с какой-то фичей).
Если не уверены, используйте первый вариант и лучше предварительно на тестовом сервере. Если сайт небольшой и использует более менее стандартный набор модулей, предварительное тестирование чаще не требуется.
- обновить только пакеты:
- Запускаем команду обновления базы данных:
drush updb
- Перестраиваем кэш:
drush cr
- Включаем обратно сайт:
drush sset system.maintenance_mode 0
Вся процедура обычно занимает менее 2 минут, если конечно, не вылезут проблемы. А они, в свою очередь чаще случаются, при переходе на мажорные версии (с 7 на 8, с 8 на 9 и так далее).
▲
Добавить комментарий