Как удалить вкладку справки в панели управления WordPress?

Вкладка Помощь

Добавьте этот код на ваш сайт:

/**
 * Remove Help Tabs
 */
add_action( 'admin_head', function () {
		$screen = get_current_screen();

		// Remove all tabs
		$screen->remove_help_tabs();

	}
);

Как оптимизировать изображения jepg и png в Linux?

Пакет: jpegoptim — утилита для оптимизации/сжатия файлов JPEG.

Jpegoptim может оптимизировать/сжимать файлы JPEG. Уменьшение размера без потерь основано на оптимизации таблиц Хафмана. Так называемое сжатие с потерями (компрессия) осуществляется повторным кодированием изображения, с указанным пользователем уровнем качества изображения.

Пакет: optipng — утилита оптимизации сжатия изображений PNG.

OptiPNG сжимает файлы PNG поочерёдно с разными параметрами и останавливается на параметрах, дающих минимальный размер. Для этого она пробует уменьшить глубину цвета (без потерь качества), изменить способ записи информации о цвете и палитру изображения. Также распознаются такие форматы как BMP, GIF, TIFF и PNM (PBM, PGM, PPM).

Установка jpegoptim и optipng в Debian или Ubuntu

sudo apt update -y && sudo apt install jpegoptim optipng -y

Оптимизация JPG

После установки в ОС пакетов выберите директорию с изображениями и запустите оптимизацию формата JPEG

cd /path/to/your/image/folder
find . -iname "*.jp*" -print0 | xargs -0 jpegoptim --strip-all -m76

Оптимизация PNG

find . -iname '*.png' -print0 | xargs -0 optipng -o7 -preserve

Как очистить диск от binlogs в папке /var/lib/mysql ?

СУБД MySQL или MariaDB ведёт специальное логирование всех запросов к базам данных, которое пишется в файлы приведённые на скриншоте ниже.

binlogs

Как можно заметить их число и размер может отжирать приличное пространство на вашем диске, в моём случае это примерно 20Гб! Это случилось потому, что в MySQL 8 срок действия этого журнала изменений в базе по умолчанию составляет 30 дней.

Эти файлы играют важную роль и необходимы для правильной работы репликации данных или восстановления информации.

Если у вас не настроено никакой репликации ии никакое сторонне приложение не читает эти логи, не отслеживает их, то в принципе не вижу смысла отдавать дисковое пространство для этих файлов.

В моём случае моя СУБД используется просто для хранения данных разных сайтов — то есть ничего хитрого, поэтому я и задался вопросом удаления этих файлов.

Очистка логов самостоятельно (ручной вариант)

Первым делом нам нужно зайти в оболочку нашей СУБД, например, сделать это можно так:

mysql -u root -p

Если вы всё сделали правило, то непременно должны увидеть в консоли следующее:

консоль

Теперь введите в консоли следующую команду для просмотра бинарных логов:

SHOW BINARY LOGS;

Также можно воспользоваться командой-синонимом SHOW MASTER LOGS.

Я отключил ведение логов, поэтому в моём случае вывод такой:

You are not using binary logging

Вероятно, что в вашем случае будет отображаться тот самый список файлов из /var/lib/mysql

Пример вывода:

mysql> SHOW BINARY LOGS;
+---------------+-----------+-----------+
| Log_name      | File_size | Encrypted |
+---------------+-----------+-----------+
| binlog.000015 |    724935 |       Yes |
| binlog.000016 |    733481 |       Yes |
+---------------+-----------+-----------+

Официальная документация

Как очистить двоичные файлы до определённого?

Обратите внимание на их нумерацию, для того чтобы удалить файлы до определённого можно воспользоваться командой:

PURGE BINARY LOGS TO 'binlog.000015';

Изменить срок автоматической очистки с 30 дней (по умолчанию) на 3 дня.

Изменения можно внести через консоль. Мы будем менять binlog_expire_logs_seconds — отвечает за установку срока действия двоичного журнала в секундах. По истечении срока файлы логов будут автоматически удалены.

Срок действия двоичного журнала по умолчанию составляет 2592000 секунд = 30 дней. Соответственно, мы можем это изменить:

SET GLOBAL binlog_expire_logs_seconds = (60*60*24*3);
SET PERSIST binlog_expire_logs_seconds = (60*60*24*3);

Как проверить изменения?

Сделайте в консоли запрос:

SHOW VARIABLES LIKE '%expire_logs%';

Вы должны увидеть значение системной переменной binlog_expire_logs_seconds.

mysql> SHOW VARIABLES LIKE '%expire_logs%';
+-------------------------------+--------+
| Variable_name                 | Value  |
+-------------------------------+--------+
| binlog_expire_logs_auto_purge | ON     |
| binlog_expire_logs_seconds    | 259200 |
| expire_logs_days              | 0      |
+-------------------------------+--------+
3 rows in set (0.01 sec)

Можно установить новое значение сразу в секундах (выше мы делали это путём умножения сек*мин*часы*дни),а могли бы указать сразу числом.

Как совсем отключить логирование (binlog)?

Откройте в редакторе файл /etc/mysql/my.cnf

sudo nano /etc/mysql/my.cnf

и добавьте пару строчек:

[mysqld]
skip-log-bin

Чтобы изменения вступили в силу перезапустите MySQL сервер:

sudo service mysql restart

так же через этот файл можно ограничить размер файлов логов и задать автоматическую очистку (ограничение)

[mysqld]
binlog_expire_logs_seconds = 86400  # 1 day
max_binlog_size = 104857600         # 100M

P.S. не забывайте перезагружать сервер вашей СУБД

systemctl restart mysql или systemctl restart mariadb

Как найти большие файлы в Linux?

Поиск файлов размером более 500 Мб по всей файловой системе:

nice find / -size +500M -exec ls -lhs {} \; 2>/dev/null

для удобства можно отсортировать файлы от большего к меньшему:

nice find / -size +500M -exec ls -lhs {} \; 2>/dev/null | sort -rh

Если у вас слишком много файлов, то можно ограничить вывод, например, до 5

nice find / -size +500M -exec ls -lhs {} \; 2>/dev/null | sort -rh | head -n5

Утилита du

Так же можно воспользоваться утилитой du (аббревиатура от англ. disk usage) — стандартная Unix-программа для оценки занимаемого файлового пространства.

Чтобы вывести список 10 самых больших файлов из директории /var воспользуйтесь решением ниже:

du -h /var | sort -nr | head -n10

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

Следующая команда распечатает 10 самых больших файлов в вашем текущем каталоге (т.е. в котором её запускаете):

du -ahx . | sort -rh | head -10

Тут я ещё добавил пару опций для удобно читаемого формата вывода.

Вот простой пример для минимального вывода корневых директорий текущего местоположения (вызова) и их занимаемый общий размер:

du -shc * | sort -hr
du

Как узнать информацию о процессоре на сервере под управлением Debian / Ubuntu?

Команда lscpu позволяет вывести информацию о процессорах, присутствующих в системе, включая количество процессоров, их архитектуру, производителя, семейство, модель и т. д. Для этого введите в командной строке:

lscpu

Вывод в консоли:

Команда lscpu

По сути утилита lscpu берёт информацию об архитектуре процессора из sysfs, /proc/cpuinfo и отображает в более удобном для пользователя виде.

Любопытства ради можно посмотреть этот файл указав в консоли следующее:

nano /proc/cpuinfo

Важно понимать, что полностью полагаться на эту информацию не стоит, так как иногда, в некоторых случаях, данные могут быть неверными.

Как проверить получен ли ответ из кэша Nginx?

В Nginx существует встроенная переменная $upstream_cache_status модуля ngx_http_upstream_module, которая хранит статус доступа к кэшу ответов. Статус может быть одним из

  • “MISS”,
  • “BYPASS”,
  • “EXPIRED”,
  • “STALE”,
  • “UPDATING”,
  • “REVALIDATED” или
  • “HIT”.

В случае правильной работы сервера в ответе из кэша должно находится значение “HIT”, но как это проверить?

Первым делом вам нужно добавить специальный заголовок, который будет в ответе сервера возвращать значение переменной $upstream_cache_status:

Открываем конфигурационный файл Nginx ( /etc/nginx/nginx.conf ) и добавляем строчку, к блоку бэкенда:

add_header FastCGI-Cache $upstream_cache_status;

Например, так:

добавили заголовок add_header FastCGI-Cache $upstream_cache_status;

Проверить заголовки ответа можно в браузере. Если ответ получен из кэша вы непременно увидите статус HIT

статус HIT

Как добавлять изображения и прочие медиафайлы в WordPress?

В WordPress существует специальный Экран библиотеки медиафайлов, который можно назвать медиатекой.

Именно сюда попадают загружаемые на ваш сайт файлы и располагаются в хронологическом порядке — свежие вначале.

Добавить новый медиафайл можно при помощи этих кнопочек:

Экран библиотеки медиафайлов

После загрузки ваш файл отобразится на Экран библиотеки медиафайлов:

загрузили файл

Помимо файлов изображений можно загружать PDF, видео, аудио форматы и прочие.

Можно просматривать файлы в виде простой визуальной сетки или списка со столбцами. Выберите желаемый вид с помощью иконок слева над файлами.

Экран библиотеки медиафайлов

Важно учитывать! Что после загрузки изображения WordPress делает его копии и в итоге получаем не одно, а несколько изображений:

несколько изображений:

Это происходит потому что по умолчанию в WordPress заданы параметры для нарезки копий изображения с целью оптимизации. Представьте, если вы загрузили большое изображение весом 5-10 мб, то сколько оно будет загружаться при слабом Интернет-соединении у пользователя, мм? Ну и в плане дизайна, дизайнер может требовать строгую обрезку для сохранения вида своего макета.

Где настраивать размер изображений?

Настройка этих размеров доступна в разделе Настройки > Медиафайлы

Если поставить значение «0» ширине и высоте, то нарезка не будет осуществляться. Например, средний размер можно выключить. Это позволит сэкономить не мало дискового пространства при объемных загрузках изображений.

В некоторых случаях изображений может создаваться значительно больше. На моей практике встречалось и 10 нарезок, то есть грузим одно, а получаем на диске 10-11 картинок. Это зависит от дополнительных функций, которые могут находиться в теме и плагинах вашего сайта. Функция называется add_image_size() — она регистрирует (для будущего создания при загрузке) новый размер картинки (миниатюры).

Как навсегда удалить изображение?

В режиме просмотра таблицы (столбцом) при наведении указателя на строку в списке отображаются ссылки действий, позволяющие управлять элементом. Вы можете выполнить следующие действия:

  • Редактировать открывает простой экран для редактирования метаданных отдельного файла. Вы также можете перейти на этот экран, нажав на имя медиафайла или его миниатюру.
  • Удалить навсегда удалит файл из медиатеки (а также из любых записей, к которым он в данный момент прикреплен).
  • Просмотр открывает общедоступную страницу этого файла.
  • Копировать URL в буфер обмена копирует URL медиафайла в буфер обмена.
  • Скачать файл предложит скачать оригинал медиафайла на ваше устройство.

Нас интересует ссылка Удалить навсегда

Как навсегда удалить изображение?

А в режиме сетки, чтобы удалить изображение, нужно сперва кликнуть на изображение, а затем удалить этот файл:

Как навсегда удалить изображение?

При первом способе мы сделали на один клик меньше и в режиме отображения таблицы есть еще одно преимущество — массовое удаление файлов. То есть выбираем файлы которые нужно удалить и затем действие, которое применится к ним.

Как навсегда удалить изображение?

Рекомендации при загрузке изображений

  1. Старайтесь не загружать слишком большие изображения, например, размером свыше 5мб, лично я считаю и 3-4 мб тоже «тяжелыми», но смириться можно. Помните, что это всё занимает ваше дисковое пространство.
  2. Старайтесь не лениться и сразу присваивать вашим загруженным изображениям атрибут ALT

Как добавить атрибут Alt?

При Загрузке через медиафайлы

Как добавить атрибут Alt?

Выбираем ссылку Изменить и далее заполняем поле для альтернативного текста

При Загрузке из Записи или Странице

В момент загрузки нужно выделить ваш элемент изображения и справа в его настройке блока будет это поле:

Как добавить атрибут Alt?

Учтите, что загружая изображение через редактор Записи или Страницы оно автоматически прикрепляется к ней и также будет доступно в общей медиатеке.

Теперь разница между изображениями в том, что загружая через редактор в Записи оно прикрепилось к ней, а при загрузке из раздела Медиафайлов — нет.

Как добавить атрибут Alt?

Если медиафайл не прикреплён ни к одной записи, вы увидите это в столбце «Загружен для» и если нажать на ссылку «Прикрепить», то откроется всплывающее окно, в котором можно найти нужную запись и прикрепить к ней файл.

Прикрепить файл к записи

После прикрепления картинку можно будет сразу находить в Библиотеке путем сортировки «Загруженные для этой Записи»

Ну вот и всё, надеюсь после этого ознакомления работа с медиафайлами будет вызывать у вас меньше вопросов 🙂

Как узнать версию Nginx на сервере и проверить его работу?

Для начало попробуйте воспользоваться в консоли командой

nginx -v

или

sudo nginx -v

Ответ в консоли:

nginx version: nginx/1.26.0

Для получения расширенной информации укажите заглавную букву «V» (вывод версии nginx, версии компилятора и параметров конфигурации сборки)

sudo nginx -V

Ответ в консоли:

nginx version: nginx/1.26.0
built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 
built with OpenSSL 1.1.1n  15 Mar 2022 (running with OpenSSL 1.1.1w  11 Sep 2023)
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp ...

Проверка работы HTTP-сервера Nginx

Для просмотра списка всех запущенных процессов nginx может быть использована утилита ps:

ps -ax | grep nginx

Ответ в консоли:

    699 ?        Ss     0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
 149300 ?        S      2:26 nginx: worker process
 149301 ?        S      0:00 nginx: worker process
 149302 ?        S      0:00 nginx: worker process
 149303 ?        S      0:01 nginx: worker process
 149304 ?        S      0:00 nginx: cache manager process
 158423 pts/0    S+     0:00 grep nginx

Текущий статус работы мы также можем посмотреть при помощи команды

sudo systemctl status nginx

Если всё хорошо и служба работает, то вы непременно должны увидеть подобный сигнал

nginx запущен

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

 curl localhost

Если всё правильно работает, то по идее вы должны получить в ответ страницу приветствия в виде HTML:

ответ в виде HTML

WordPress: Как открывать изображение в лайтбоксе по клику?

По умолчанию (сразу после установки чистой версии) в WordPress, в его редакторе блоков Gutenberg мы можем наблюдать давно желанную функцию увеличения изображения по клику без перенаправления, то есть оставаясь на той-же странице.

Добиться этого можно путём выделения нужного изображения и клика по ссылке. Учтите, что выбрав блок Медиа и Текст вы не обнаружите эту возможность (проверял на версии: 6.5.3), вам будет доступно только прикрепления оригинала изображения.

Медиа и Текст

Ниже вы можете наблюдать последовательность прикрепления файла изображения к его миниатюре:

После этого оригинал изображения будет открываться по клику на миниатюру.

Как открывать изображения в лайтбоксе (всплывающее окно)?

Этот трюк, вернее эта возможность доступна с одиночным медиафайлом. Вот я вставляю в контент страницы картинку-миниатюру и повторяю те же самые действия: вначале выделяю её, а потом кликаю на иконку закрепления за этим изображением ссылки

вставляю в контент страницы картинку-миниатюру

И вот тут-то мы можем наблюдать нужную нам функцию! Она называется Развернуть при нажатии

Выбрав её, наше изображение будет открываться во всплывающем окне, тем самым не перескакивая со страницы на отдельный URL, об этом свидетельствует «крестик» при помощи которого мы можем свернуть обратно наше изображение

крестик закрытия лайтбокса

Но как же быть, если нам необходимо чтобы текст обтекал изображение справа? Для этого мы можем воспользоваться другим блоком, который называется Колонки

блок Колонки

И уже с его помощью реализовать задуманное. Оба изображения из примера ниже будут открываться в лайтбоксе.

Как открывать фото из галереи в лайтбоксе?

Теперь рассмотрим ещё один пример на основе галереи. Вначале добавим блок Галереи на нашу страницу:

добавим блок Галереи

После этого загрузим (или выберем из библиотеки файлов) нужные нам изображения и выделив всю галерею справа в её настройках укажем в качестве ссылки Медиафайл.

Что получится? Да то же самое что и в самом первом случае — изображения будут открываться в новых URL . Чтобы задействовать наш лайтбокс нужно присвоить эту функцию каждому изображению в галереи:

делаем ссылку на лайтбокс

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

Какие права должны быть на файлы и папки в WordPress?

Неправильные разрешения к файлам могут привести к неожиданным последствиям, вот одна из них:

ошибка 403

Для того чтобы это исправить или не допустить нужно выставить правильные права.

Все каталоги (директории) должны быть 755 или 750

Все файлы должны иметь права 644 или 640. Исключение: wp-config.php должен иметь номер 440 или 400, чтобы другие пользователи сервера не могли его прочитать.

Подробнее

Как из консоли изменить разрешения на файлы и папки?

sudo find . -type f -exec chmod 644 {} +
sudo find . -type d -exec chmod 755 {} +
sudo chmod 440 wp-config.php

Как изменить владельца у файлов и папок?

sudo chown -R www-data:www-data /var/www/mysite

Пример с wp-cli

Рассмотрим простой пример, когда из корня сайта мы при помощи WP CLI совершаем установку плагина и сразу, второй командой, меняем владельца всех файлов этого плагина

sudo wp plugin install woocommerce --allow-root
sudo chown -R www-data:www-data ./wp-content/plugins/woocommerce

Это можно было бы сделать немного эстетичней, например, запустив команду сразу под нужным пользователем:

sudo -u www-data wp plugin install woocommerce

Как скрыть блоки на странице Консоль в WordPress?

Добро пожаловать в консоль WordPress!

Консоль — это первое место, куда вы попадаете каждый раз, когда входите на свой сайт.

По умолчанию (сразу после установки WordPress) на экране «Консоль» доступны следующие блоки:

на экране «Консоль» доступны следующие блоки:

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

Состояние здоровья сайта — сообщает о потенциальных проблемах, которые стоит решить для улучшения производительности и безопасности вашего сайта.

На виду — отображает краткий отчёт о содержимом вашего сайта, включая тему оформления и версию WordPress.

Активность — показывает запланированные и недавно опубликованные записи, а также самые свежие комментарии с возможностью их модерировать.

Быстрый черновик — позволяет создать новую запись и сохранить её как черновик. Также выводит 3 последних черновика, созданных вами.

Новости и мероприятия WordPress — Предстоящие мероприятия рядом с вами, а также свежие новости официального проекта WordPress и WordPress Planet.

Для того чтобы скрыть или показать эти блоки нужно воспользоваться разделом Настройки экрана, который доступен справа в верхней части экрана :

Теперь нужно отметить те виджеты (блоки) которые вы предпочитаете скрыть

скрываем виджеты

Готово! Теперь наш экран стал чистым!

Как подключить Турбо-страницы Яндекса для сайта на WordPress?

Эта технология позволяет создавать лёгкие версии страниц, которые открываются быстро даже при медленном подключении к интернету.

Официальный сайт

Подробно о турбо-страницах можно почитать по ссылке выше,а мы сразу перейдем к делу 🙂

Подключение Турбо-страниц в Вебмастере

Ваш сайт должен уже быть подключен к Яндекс Вебмастер. Далее, переходим по этой ссылке. Подключение Турбо-страниц в Вебмастере.

 Подключение Турбо-страниц в Вебмастере.

В WordPress уже существует генерация rss-фида, но как мы видим он не соответствует требованиям разметки от Яндекс. Самым простым и быстрым методом будет подключение и создание специального фида через плагин.

Официальный сайт (ссылка в начале поста) предлагает ряд бесплатных решений:

плагины для вордпресс для создания турбо-страниц

Не вижу причин для отсутствия в этом списке ещё одного решения — плагина Яндекс.Турбо (Автор: Flector), но мы его установим через стандартный интерфейс установки плагинов в CMS WordPress:

плагин  Яндекс.Турбо

Краткая Инструкция по установке

  1. Установите плагин через меню «Плагины\Добавить новый» (искать «RSS for Yandex Turbo» или «Яндекс.Турбо»).
  2. Активируйте плагин в меню «Плагины».
  3. Зайдите в настройки плагина «Настройки\Яндекс.Турбо» и сохраните их.
Настройки плагина «Яндекс.Турбо»

В принципе на этом всё. Выше в окне настроек плагина вы можете видеть ссылки на специальную разметку. В моём случае первая ссылка выглядит вот так:

https://codeispoetry.ru/feed/turbo

ссылки

Всё зависит от общего количество записей на вашем сайте и их разбивке. По умолчанию это значение равно 50. Следовательно, если у вас 500 записей, то в итоге вы получите 10 ссылок по 50 записей в каждой.

ссылки фида

Теперь осталось добавить их в разделе Яндекс Вебмастер, который мы рассматривали ранее.

После добавления вполне возможно вы можете увидеть предупреждения или ошибки валидации, но это не расстраивайтесь — это поправимо.

Исправление ошибок

Для выявления ошибок нужно перейти в режим отладки:

отладка

Далее, прямо в окне постарайтесь исправить разметку и снова перепроверить исправленную версию. В итоге, при правильной корректировке вы должны добиться результата «Без ошибок»

В моём случае валидатор ругался на тег <header>. Я просто исключил этот тег в разделе фильтров:

исключаем тег

Это можно было исправить и другим способом. Ошибка была связана с содержимом тега [CDATA[]] найдены закодированные символы

ошибка найдены закодированные символы

Можно исправить сам тег, например взять его в специальный тег code — это будет правильным решением.

После этого можно убедиться в исходном коде фида на его отсутствие и затем повторить валидацию:

валидный фид

Готово!

Учтите, что в режиме ВКЛ (фид включен) валидация пройдёт не сразу.

Проверка фида может занимать продолжительное время. Наберитесь терпения. Сам Яндекс оповещает о том, что обычно проверка занимает около 2 часов.

Во включенном состоянии переобход источника и перестроение примеров Турбо-страниц в поиске происходит раз в час.

Яндекс Вебмастер

Часто встречающиеся ошибки RSS-канала

А пока что, если у вас сайт подключен к Яндекс Метрики, то рекомендуется указать ваш счётчик чтобы не утратить аналитику за счет подключения технологии турбо-страниц.

подключаем счётчик

Где найти идентификатор (номер) счетчика?

Рекомендую посетить эту страничку.

Так же номер счётчика можно указать и в специальном разделе для настройки Турбо-страниц, который именуется Веб-аналитика:

Раздел доступен в разделе Настройки:

Настройки

Как установить фавикон (favicon) на сайт в WordPress?

Заходим в раздел Настройки -> Общие

Как добавить favicon

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

Значок сайта который Вы видите во вкладках браузера, строке закладок, и внутри мобильных приложений WordPress. Он должен быть квадратной формы с разрешением не менее 512 × 512 пикселей.

официальная рекомендация из панели управления WordPress
favicons

Как копировать файлы между Linux-серверами при помощи утилиты rsync?

rsync — быстрая и гибкая программа, позволяющая копировать файлы на/с удалённых машин.

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

Задача: скопировать всю директорию (включая все файлы) размером более 50ГБ с удаленного сервера под управлением Debian/Ubuntu.

Решение: Воспользуемся утилитой rsync. Подробная информация.

Общий синтаксис команд достаточно простой.

rsync [ОПЦИИ...] ОТКУДА... [КУДА]
    Pull (получение):
        rsync [ОПЦИИ...] [USER@]HOST:ОТКУДА... [КУДА]
    Push (отправка):
        rsync [ОПЦИИ...] ОТКУДА... [USER@]HOST:КУДА

Следуя этим схемам давайте выполним нашу поставленную задачу.

  rsync --archive --verbose --progress -e "ssh -p 22888" root@00.000.00.000:/var/www/site/ ~/newsite/public_html

Данная команда скопирует всё содержимое директории /var/www/site/ удалённой машины в домашнюю директорию пользователя /newsite/public_html текущей машины (с которой осуществлялось подключение).

Данный пример рассматривает подключение по нестандартному ssh порту 22888 (по умолчанию 22-ой).

Опции:

  • —archive (можно сокращённо -a) команда для удобства объединяет в себе ряд других команда (равносильно -rlptgoD). То есть, утилита пройдёт рекурсивно по всем вложенным каталогам, перенесёт символические ссылки как символические ссылки ( -l ), сохранит изначальные права доступа к файлам ( -p ), сохранит время модификации ( -t ) и т.д.
  • —verbose вывод подробной информации о процессе синхронизации.
  • —progress показывать строку прогресса для синхронизации.
  • -e указывает удаленную оболочку для подключения (использования)

Рекомендация

При неуверенности запускайте в пробном режиме, при котором ничего не произойдёт, а только утилита продемонстрирует в консоли свою работу, но файлы скопированы не будут. Для этого нужно добавить опцию —dry-run

В таком случае наша консольная команда может выглядеть вот так:

sudo rsync --dry-run -azvv -e ssh /home/path/folder1/ ЮЗЕР@ХОСТ:/home/path/folder2

На что обратить внимание?

  1. Это закрывающие слэши. Закрывающий слэш означает «внутреннее содержимое». То есть, если в случае /var/www/site/ убрать закрывающий слэш /var/www/site то в итоге будет создана эта директория и мы получим немного неожиданный результат. Наши копируемые файлы окажутся вот тут /newsite/public_html/site
    • При этом, наличие или отсутствие закрывающего слэша в имени директории, в которую будет происходить копирование, значения не имеет. Важно обращать внимание на слэш источника.
  2. Это символы двоеточия при подключении к удалённым машинам.

Как добавить заголовок «Last Modified» на сайте WordPress + Nginx?

Подробнее о заголовке Last-Modified можно почитать тут. Пожалуй, для SEO добавлю описание:

HTTP заголовок Last-Modified сообщает клиенту (браузеру, поисковому боту) время последнего изменения страницы (объекта). Если клиент получил заголовок Last-Modified, то при следующем обращении к адресу, при условии, что страница (объект) есть в локальном кэше, он добавит заголовок-вопрос If-Modified-Since (не изменилась ли страница после даты, полученной в Last-Modified).

В свою очередь сервер, получив запрос If-Modified-Since должен сверить полученную временную метку с временем последнего изменения страницы и, если страница не изменялась ответить 304 Not Modified.

Как добавить HTTP заголовок Last-Modified на PHP в WordPress?

В целом на официальном сайте уже существует реализация на PHP, которую остаётся немного адаптировать для WP.

Отправка Last-Modified и обработка HTTP_IF_MODIFIED_SINCE на PHP

// время последнего изменения страницы в формате unix time
$lastModified = strtotime('2022-06-18 19:01:58');

// дата последней загрузки, отправляемая клиентом
$ifModified = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'] ?? '', 5));

if ($ifModified && $ifModified >= $lastModified) {
    // страница не изменилась, отдача http статуса 304
    header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
    exit;
}

header('Last-Modified: ' . gmdate("D, d M Y H:i:s \G\M\T", $lastModified));
// дальнейшая загрузка страницы

Получаем время последнего изменения страницы, проверяем наличие If-Modified-Since, если есть — отдаем 304 Not Modified и останавливаем работу скрипта, иначе генерируем заголовок Last-Modified и отдаем страницу.

Версия для WordPress

Этот готовый код необходимо добавить в functions.php или через плагин. Я рекомендую добавлять этим методом.

/**
 * Last-Modified and If-Modified-Since Headers
*/

add_action('wp', poet_'last_if_modified_headers' );

function poet_last_if_modified_headers() {
    global $post;
        if(isset($post)){
            $LastModified_unix = strtotime($post->post_modified);
            $LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix);
            $IfModifiedSince = false;

            if (isset($_ENV['HTTP_IF_MODIFIED_SINCE'])) {
                $IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5));
            }
            if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
                $IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
            }

            if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) {
                header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
                exit;
            }

            header('Last-Modified: '. $LastModified);
        }
}

Настройки HTTP-сервера Nginx

Если вы используете в качестве веб-сервера Nginx , то есть вероятность столкнуться с проблемой отдачи заголовка. Всё дело в том, если у вашей конфигурации включена директива ssi

Модуль ngx_http_ssi_module — это фильтр, обрабатывающий команды SSI (Server Side Includes) в проходящих через него ответах.

https://nginx.org/ru/docs/http/ngx_http_ssi_module.html

Пример конфигурации при котором разрешается обработка команд SSI в ответах:

location / {
    ssi on;
    ...
}

Следовательно, прицепом к этой директиве необходимо включить еще одну, которая по умолчанию выключена:

location / {
    ssi on;
    ssi_last_modified on;
}

Позволяет сохранить поле заголовка “Last-Modified” исходного ответа во время обработки SSI для лучшего кэширования ответов.

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

Вот и всё 🙂

Обязательно перезапустите HTTP-сервер Nginx и протестируйте отдачу заголовка.

Вот правильная работа заголовка:

протестируйте отдачу заголовка

Как установить Node.js в ОС Windows?

Шаг 1. Делаем запрос в поисковой системе

Делаем запрос в поисковой системе

Шаг 2. Переходим в раздел загрузки на официальный сайт

Переходим в раздел загрузки на официальный сайт

Шаг 3. Скачиваем установочный файл

Шаг 4. Запускаем процесс установки…

Скачиваем установочный файл

Выполняем последовательно действия при установке. Next

Запускаем процесс установки...

Принимаем условия и нажимаем Next

Принимаем условия и нажимаем Next

Это путь распаковки файлов программы. Ничего не меняем и нажимаем Next

Ничего не меняем и нажимаем Next

Ничего не меняем и нажимаем Next

Ничего не меняем и нажимаем Next

Важно! Нужно поставить галочку для установки дополнительных зависимостей в систему и нажимаем Next

Важно! Нужно поставить галочку для установки дополнительных зависимостей в систему и нажимаем Next

Нажимаем Install

Начинается процесс распаковки (установки) файлов в систему

процесс распаковки (установки) файлов в систему

Шаг 4. Дожидаемся завершения установки дополнительных зависимостей

Чтобы начать установку дополнительных компонентов нужно в консоли нажать любую клавишу

установка

После завершения установки проверьте версию Node.js и ее менеджера пакетов при помощи простых команд в консоли

node -v
npm -v
Результат

Поздравляю! На этом всё!