42
Как быть с большими сайтами на WordPress Petrozavodsky Интернет журнал BroDude

Как быть с большими сайтами на Word press

  • Upload
    vovasik

  • View
    207

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Как быть с большими сайтами  на Word press

Как быть с большими сайтами на

WordPress

Petrozavodsky

Интернет журнал BroDude

Page 2: Как быть с большими сайтами  на Word press

Владимир

Twitter @petrozavodsky

https://alkoweb.ru

Руководитель отдела разработки BroDude

Page 3: Как быть с большими сайтами  на Word press

WordPress не религия !

Это всего лишь CMS

Page 4: Как быть с большими сайтами  на Word press

Откуда все эти сайты ?Данные сервиса Google Тренды

https://goo.gl/IUpzby

Page 5: Как быть с большими сайтами  на Word press

И это только РоссияВ мире популярность WordPressтрадиционно выше

Page 6: Как быть с большими сайтами  на Word press

Достаточно графика

P.S. Drupal красный, остальные популярные CMS тоже есть на этом графике.

https://goo.gl/CH8sZY

Page 7: Как быть с большими сайтами  на Word press

Большой ли у меняСайт ?

Page 8: Как быть с большими сайтами  на Word press

Высокая посещаемость с чего начать ?

Page 9: Как быть с большими сайтами  на Word press

Этот путь пройден до нас1. Nginx + php5-fpm.2. Object cache, memcached.3. wordpress pages cache4. Многосерверные и распределённые архитектуры

Page 10: Как быть с большими сайтами  на Word press

Оптимизировать код

1. autoload в add_option()2. orderby => rand в SQL3. режимы wp-cron4. wp_remote_get , curl запросы

Page 11: Как быть с большими сайтами  на Word press

В чем интрига доклада???

Page 12: Как быть с большими сайтами  на Word press

Большой или

посещаемый ?

Page 13: Как быть с большими сайтами  на Word press

Поддержка больших сайтов

Проблемы:

- Баги;- Отсутствие обновлений;- Legacy code; - Уязвимости.

Page 14: Как быть с большими сайтами  на Word press

Безопасный деплоймент

Page 15: Как быть с большими сайтами  на Word press

Откажитесь от FTPПочему ?

- Открытый трафик, снифферы, перехват пароля по сети

- Кража паролей из FTP клиента- Забытые пароли- Медленная скорость - Проблемы с параллельной правкой - Ошибки в продакшене

Page 16: Как быть с большими сайтами  на Word press

На этом о деплое всё!

Page 17: Как быть с большими сайтами  на Word press

WP-CLI

- php в bash - обработка больших данных - автоматизация - лёгкая разработка с WP-CLI

http://wp-cli.org/

Аналог drush в Drupal

Page 18: Как быть с большими сайтами  на Word press

Переписываем частями● Шаблон, (в 90% случаев это необходимо). ● Самописные и «хакнутые» плагины.● Делаем так, чтобы обновления до последней версии не ломали сайт.● Тестируем на копии сайта с реальными данными. ● Обновляем, «вендорные» плагины, шаблоны до последней версии.● Сравниваем код ядра с соответствующей версией из архива релизов

https://ru.wordpress.org/releases/ если различий нет, то обновляемся до последней версии; если есть, убираем «хаки» из кода ядра и обновляемся до актуальной версии.

Page 19: Как быть с большими сайтами  на Word press

Объектно-ориентированное программирование

- инкапсуляция; - переиспользование;- скорость разработки выше;- безопасность.

Page 20: Как быть с большими сайтами  на Word press

ПлагиныОчень просто начать писать плагины

Можно уложиться менее чем в 20 строк

Page 21: Как быть с большими сайтами  на Word press

Структура проектатакже простая, может состоять из одного файла

Page 22: Как быть с большими сайтами  на Word press

Почему нужно писать именно так?Проблема именования функций Область видимости класса позволяет

решить проблему, инкапсулируя код.

Инициализация кода в момент хука plugins_loaded

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

ООП наследование, переиспользование и т.д.

Писать в объектно-ориентированном стиле приятно и легко.

Одинаковая структура проектов делает возможной оптимизацию

Стандартная структура плагинов облегчает обслуживание, деплой, сборку ресурсов и т.д.

Повышается скорость разработки Факт :)

Page 23: Как быть с большими сайтами  на Word press

mu-plugins- Находятся в ~/wp-content/mu-plugins / ;

- Хорошее место для сниппетов, которые в google предлагают вставить в

functions.php акивного шаблона ;

- Плагины, помещенные в этом каталоге, невозможно выключить из админ.

панели, также как и включить;

- Позволяют легко и надёжно отредактировать функционал ядра.

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

Page 24: Как быть с большими сайтами  на Word press

Зачем нужно писать плагины ?

1. Модульность.2. Переиспользование в других проектах.3. Разработка мелкими релизами.4. Легко организоваь работу команды.

Page 25: Как быть с большими сайтами  на Word press

Дебагеры1. XDebug2. DBG 3. ZendDebug4. XHprof5. А так же многие другие..

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

Page 26: Как быть с большими сайтами  на Word press

Встроенные дебагеры и

плагины1. Включите режим дебага в wp-cinfig.php define('WP_DEBUG', true);.2. Просто используйте встроенный дебагер.Самые необходимые плагины.1.Debug Bar2.Kint Debugger3.Debug Bar Actions and Filters Addon4.Debug Bar Console

Page 27: Как быть с большими сайтами  на Word press

Debug BarВыводит:1.Notices/Warnings.2.Информацию о выполненных запросах в базу данных.3.Все аргументы WP Query.4.Все deprecated функции/методы во всем коде, включая ядро.5.Регулярное выражение WP_Rewrite, 6.текущего URL7.Object Cache, состояние кеша объектов 8.например Memcached

https://wordpress.org/plugins/debug-bar/

Page 28: Как быть с большими сайтами  на Word press

Debug Bar

Page 29: Как быть с большими сайтами  на Word press

Kint Debugger 1. Вывод d($variable), это лучше чем var_dum();2. Трасирует Kint::trace()3. Умеет выводить в интерфейс debug bar;4. Понравится любителям Drupal и Devel.

https://wordpress.org/plugins/kint-debugger/

Page 30: Как быть с большими сайтами  на Word press

Kint Debugger

Page 31: Как быть с большими сайтами  на Word press

Debug Bar Actions and Filters Addon

https://ru.wordpress.org/plugins/debug-bar-actions-and-filters-addon

Выводит все хуки и фильтры, использованные внутри запроса, списком, а также в виде дерева внутри интерфейса Debugbar

Page 32: Как быть с большими сайтами  на Word press

Debug Bar Actions and Filters Addon

Page 33: Как быть с большими сайтами  на Word press

Debug Bar Actions and Filters Addon

Page 34: Как быть с большими сайтами  на Word press

Debug Bar Console

https://wordpress.org/plugins/debug-bar-console/

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

Page 35: Как быть с большими сайтами  на Word press

Debug Bar Console

Page 36: Как быть с большими сайтами  на Word press

Минутка уличного дебага

Gist Github - https://goo.gl/m4Pzaa

Page 37: Как быть с большими сайтами  на Word press
Page 38: Как быть с большими сайтами  на Word press

Обезопаситься от внешнего мира

1. Применяем код ревью внутри команды. 2. Обязательное автообновление и использование

актуальных версий.3. Обязательное ревью «вендорных» плагинов и тем.

Page 39: Как быть с большими сайтами  на Word press

Популярные уязвимости своими руками

● Неавторизованный доступ● XSS● Sql injection ● Race conditions

Page 40: Как быть с большими сайтами  на Word press

IDE

В phpstorm и NetBeans уже есть

поддержка WordPress

Page 41: Как быть с большими сайтами  на Word press

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

котором программируете.

Page 42: Как быть с большими сайтами  на Word press

Конец

Спасибо за внимание