Loading...
X

Как сделать статичный сайт на WordPress: абсолютная безопасность и производительность


Как работает WordPress

Любая страница сайта на WordPress, которую вы открываете, формируется специально для вас. То есть это происходит примерно так:

  • движок WordPress получает запрос на показ определённой страницы
  • делается запрос к базе данных, из базы данных получает текст статьи, информация об авторе и прочее
  • делается ещё один запрос к базе данных комментариев — если они имеются для данной статьи, то они также получаются из БД
  • движок WordPress начинает формировать HTML код из отдельных элементов: используются файлы темы, файлы самого движка WordPress, в нужные места вставляет текст статьи, причём движок «на лету» делает проверки на наличие некоторых специальных символов и преобразовывает их
  • при формировании HTML кода считываются настройки, например, разбивать ли комментарии на страницы, в каком порядке размещать комментарии, открыто ли комментирование
  • по полученным из браузера пользователя кукиз проверяется его статус и роль (если зашёл admin, то ему вверху будет написано «Привет, admin» и дана ссылка на панель управления. На этом этапе происходит ещё один запрос в базу данных о пользователях)
  • на разных этапах этого процесса включаются в работу самые разные плагины: некоторые при запросе к странице сохраняют статистику (это добавляет ещё несколько запросов к базе данных), некоторые также проверяют и меняют код на лету (например, для преобразования HTTP запросов в HTTPS, маскировка ссылок), некоторые меняют и добавляют тэги в сам HTML код (SEO плагины), некоторые ничего не меняют, но проверяют входящий запрос на безопасность, сверяют с базой IP нарушителей (ещё несколько дополнительных запросов к БД) и так далее…

На самом деле, чтобы сформировать HTML код для показа одной единственной страницы количество запросов к базе данных и операциям чтения файлов может измеряться десятками!

При этом здесь дано поверхностное описание — там очень много всего происходит «под капотом». Детали могут зависеть от установленных плагинов.

Если коротко WordPress — это удобно, но мы платим за это удобство производительностью.

WordPress довольно безопасная система управления контентом. Или нет?

Безопасность WordPress зависит от актуальности движка и плагинов. Причём если уязвимый плагин или тема оформления заброшены разработчиком, то… это уже ваши проблемы.

К тому же, от брутфорса учётных данных (подбора пароля администратора) по умолчанию WordPress не защищён. У статичных сайтов всё проще: нет админки = нечего взламывать.

Что такое статичные сайты. Чем статичные сайты лучше динамичных

Каждый раз, когда открывается страница сайта работающего на WordPress, наш браузер получает HTML, который формируется на лету индивидуально для каждого запроса. Так работает динамичный сайт.

Статичные сайты состоят из размещённых на веб-сервере HTML файлов, когда пользователь запрашивает просмотр такой страницы, то она просто «пуляется» в браузер пользователя — и всё, для веб-сервера это простейшая, требующая минимальных ресурсов базовая операция. Никаких множественных запросов к базе данных, никаких множественных запросов чтения файлов — считывается ровно один отправляемый файл. А если на сервере настроено кэширование (что невозможно сделать для динамичных страниц WordPress), то это ещё больше снимает нагрузку с сервера (или хостинга).

Какая безопасность у статичных сайтов? Хакеры плачут, когда понимают, что сайт состоит из HTML файлов.

Для кого подходят статичные сайты WordPress

Если это так хорошо, зачем вообще нужны динамичные сайты? Во-первых, сайты на статичных файлах подходят далеко не всем. Если у вас сайт сообщества с часто обновляющимся содержимым и с комментариями — то вам нужен именно динамичный сайт, сайт на HTML файлах вам не подойдёт.

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

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

Ещё один плюс статичной версии: вам не нужно обновлять плагины, движок, следить за новостями о найденных уязвимостях в темах оформления и прочем: ваш сайт — это просто HTML файлы, которые никак не взломать. Этот плюс по-настоящему поймут владельцы десятков и сотент сайтов на WordPress.

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

Как из WordPress сделать статичный сайт

Один из вариантов — это использовать плагин WP2Static. Этот плагин размещён на GitHub, у него открытый исходный код и в целом он бесплатный. У этого плагина есть платные расширения, но они только добавляют удобства — ключевая функция — перевод WordPress в статичные HTML страницы, полностью бесплатна.

Плагин можно установить из панели управления WordPress: Перейдите там в Плагины → Добавить новый и найдите WP2Static, установите его и активируйте.

Далее перевод официальной информации о плагине, его описание, а затем я покажу пример как пользоваться этим плагином и как перевести WordPress в HTML

Плагин WP2Static

Безопасность и производительность благодаря статической публикации на сайте. Один плагин для решения самых больших проблем WordPress.

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

Статичный сайт закрывает все двери, которые устаревший WordPress, темы оформления или плагины могут оставлять открытыми.

Предварительно сгенерированный статический сайт превзойдёт плагины кэширования: для пользователей по всему миру ваш сайт будет открываться будто бы он находится совсем рядом.

Не совместим с WooCommerce или с сайтами основанных на членстве и активном комменировании и наполнении, но такие решения как Snipcart допускают eCommerce на статических сайтах

Функции:

  • публикует отдельную, статичную html копию всего вашего сайта на WordPress
  • убирает признаки того, что ваш сайт работает на WordPress, что делает его непривлекательным для хакеров
  • автоматическое развёртывание в папку на вашем сервере, ZIP-файл, FTP-сервер, S3, GitHub, Netlif, BunnyCDN, BitBucket или GitLab
  • планировать автоматический экспорт через плагин WP Crontrol или нажав пользовательский хук
  • уведомления на рабочем столе предупреждают вас о завершении экспорта

Выгоды

  • защищает вас от вредоносных атак/вредоносных программ
  • ускоряет работу вашего сайта, убирая запросы к базе данных и необходимость выполнение PHP кода
  • позволяет бесплатно размещать свой сайт на страницах GitHub, Netlify или бесплатном плане AWS S3, Azure и т. д.
  • позволяет вам развернуться на сумасшедших быстрых опциях хостинга, таких как S3, за CloudFront
  • интеграция с инструментами командной строки

Слово от автора

Кто любит этот плагин?

  • Цифровые агентства с множеством сайтов для управления, не нужно беспокоиться об обновлениях WP и плагинов клиентских сайтов
  • Интернет-маркетологи могут создавать множество быстрых сайтов/целевых страниц, которые быстро загружаются и могут свободно размещаться на любом хостинге, в том числе без поддержки MySQL и PHP
  • Индивидуальные владельцы сайтов и создатели контента, которые любят WordPress, но не хотят беспокоиться о том, как их защитить.
  • Сотрудникам крупных корпораций часто не нравится работать с WordPress, это позволяет им закрыть дыры в безопасности и лучше контролировать хостинг
  • Экономным людям, которым нравится бесплатный хостинг (а кому не нравится?!?)
  • Правительственные учреждения, которые имеют строгие требования безопасности, но имеют пользователей, которые предпочитают использовать WordPress
  • Те, кто хочет использовать его для архивации старого веб-сайта WordPress, сохраняя его содержимое в сети, но не заботясь о том, чтобы поддерживать WP в актуальном состоянии.

Этот плагин создаёт статическую HTML-версию вашей установки WordPress, невероятно полезную для всех, кто хотел бы иметь возможность публикации WordPress, но чей веб-хостинг не поддерживает динамические сайты, управляемые PHP, такие как GitHub Pages. Вы можете запустить свой сайт разработки в другом домене или в автономном режиме, и плагин изменит все соответствующие URL-адреса при публикации вашего сайта. Это простой, но мощный плагин, и после нажатия кнопки публикации плагин выведет ZIP-файл всего сайта, готовый для загрузки прямо в его новый дом.


Конвертация WordPress → HTML

Итак, приступим к переводу сайта на HTML. В качестве подопытного я буду использовать прямо этот блог (suay.ru).

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

  • ваш динамичный сайт развёрнут на другом сервере (например, на домашнем localhost'е), вы «экспортируете» HTML версию и заливаете её на хостинг;
  • ваш динамичный сайт WordPress расположен где-то в подпапке, и вы экспортируете HTML версию в корневую папку. При этом оригинальный сайт на WordPress следует закрыть от доступа пользователей — чтобы не было дублей страниц в поисковых системах.

В панели управления WordPress переходим во кладку WP2Static.

Нас сразу встречает красное предупреждение:

You need to set your WordPress Pemalinks

Due to the nature of how static sites work, you'll need to have some kind of permalinks structure defined in your Permalink Settings within WordPress. To learn more on how to do this, please see WordPress's official guide to the Settings Permalinks Screen.

На самом деле, вас оно может и не встретит. Дело в том, что у моего сайта в качестве постоянных ссылок настроен вариант с ?p=, пример адреса страницы:

https://suay.ru/?p=123

Для экспорта в HTML нужно выбрать что угодно — любой другой вариант, кроме этого. Если вам интересно, то поясню, запись ?p=123 вообще-то фактически означает index.php?p=123, то есть, на самом деле всё время открывается одна и та же страница — index.php. Но ей передаётся параметр p, в зависимости от значения которого показывается та или иная статья. С чистым HTML, без PHP, такой «фокус» не сработает.

Поэтому на время тестов я делаю так:

Если у вас и без того выбрана другая опция, то вы не увидите никаких предупреждений.

В первой вкладке Deploy static website (развёртывание статичного веб-сайта) мы видим выпадающий список

  • Where will you host the optimized version of your site? (Где будет хоститься оптимизированная версия вашего сайта?) - там много вариантов, самый первый, который на скриншоте — Subdirectory on current server (это подпапка на текущем сервере). Также имеется опция ZIP archive — файл будет упакован в архив.

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

Далее:

  • Destination URL — URL нового сайта, то есть адрес, где будут размещены HTML страницы. Это поле обязательно для заполнения — без него экспорт не запустится.
  • Target Directory — целевая папка. Если вы выбрали Subdirectory on current server, то здесь можно указать путь, куда будут сохранены HTML файлы оптимизированного сайта. Для безопасности плагин сохраняет файлы только в пустую папку. Если вы хотите сохранять файлы в непустую папку, то создайте там пустой файл с именем .wp2static_safety — в этом случае плагин сможет записывать в эту директорию даже если она не пустая.
  • Allow offline usage — Разрешить офлайн использование — эта опция появляется если в качестве Where will you host the optimized version of your site? выбрать ZIP archive.

Далее вкладка Crawling:

Эти поля нужны только если вы используете basic аутентификацию (например, вы закрыли динамичный сайт от поисковых машин и пользователей):

  • Use basic authentication
  • Basic auth user
  • Basic auth password

Затем:

  • Custom crawling port — Изменить порт, который прослушивает веб-сервер — нужно менять только тем, кто точно знает почему.
  • Initial crawl list — Список для начального обхода. По умолчанию в этот список уже собраны ссылки, которые будут добавлены в новый сайт. Сюда включены посты, страницы, тэги, архивы и медиа. По мере обхода каждой страницы будут добавлены новые ссылки для обхода. Вы можете посмотреть начальный список для обхода нажав кнопку «Preview initial crawl list».
  • Detection level — Уровень обнаружения, по умолчанию выбрана опция As much as possible — так много, как это возможно. Можно выбрать Post and pages only — только посты и страницы, а также Homepage only — только домашняя папка.
  • Exclude certain URLs — Исключить определённые адреса. Можно указывать полные пути или частичные адреса.
  • Include additional URLs — Добавить дополнительные адреса. На тот случай, если плагин что-то пропустил. Примеры адресов даны на странице настройки.
  • Crawl Delay — Задержка при обходе. Если стоит «0», значит без задержки для максимальной производительности. Если будут возникать проблемы с экспортом, то увеличивайте это значение, пока не заработает нормально.

Вкладка Processing — Обработка:

  • Use relative URLs — Использовать относительные пути. В экспортируемом сайте, к примеру, http://mydomain.com/some_dir/some_file.jpg превратиться в some_dir/some_file.jpg
  • Base HREF — Базовая (корневая) папка для сайта. Если её установить, например, на / и включена опция Use relative URLs, то относительная ссылка some_dir/some_file.jpg превратиться в /some_dir/some_file.jpg
  • Rename Exported Directories — Переименовать экспортируемые директории. Вероятно, требуется, если вы делаете перезапись URL с указанными выше опциями.

Установите исходную директорию, затем через запятую целевую директорию.

Чтобы переместить wp-content/themes/twentyseventeen в contents/ui/mytheme, нам нужно:

wp-content,contents
contents/themes,contents/ui
contents/ui/twentyseventeen,contents/ui/mytheme
wp-includes/,inc/
  • Remove cruft — Убрать хлам. Можно удалить комментарии в HTML коде и ненужные тэги.

Вкладка Advanced options содержит продвинутые опции:

Заключение

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

Такой вариант прекрасно подойдёт для лэндингов, либо для сайтов, которые редко обновляются, но имеют очень большую посещаемость.

Этот вариант также можно порекомендовать тем, кто беспокоиться за безопасность своего сайта.


Leave Your Observation

Ваш e-mail не будет опубликован. Обязательные поля помечены *

wp-puzzle.com logo

Scroll Up