Рубрики
Uncategorized

Лучшие практики для WordPress на AWS | Резюме белой бумаги AWS

Этот документ предоставляет системным администраторам конкретное руководство о том, как начать работу с … Tagged с AWS, Cloud, WordPress, DevOps.

  • Этот документ предоставляет системным администраторам конкретное руководство о том, как начать работу с WordPress на AWS и как повысить как эффективность затрат в развертывании, так и опыт работы с конечным пользователем.

  • В нем также описывается эталонная архитектура, которая рассматривает общую масштабируемость и высокую доступность.

  • Когда первая версия WordPress была выпущена в 2003 году, она не была построена с учетом современной эластичной и масштабируемой облачной инфраструктуры.

  • Благодаря работе сообщества WordPress и выпуску различных модулей WordPress, возможности этого решения CMS постоянно расширяются.

  • Сегодня можно построить архитектуру WordPress, которая использует многие преимущества облака AWS.

Простое развертывание

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

Соображения

  • Это обсуждение начинается с одного веб -сервера.
  • Могут быть случаи, когда вы перекачиваете его, например:

    • Виртуальная машина, на которой развернут ваш веб -сайт WordPress, является единственной точкой отказа.
    • Проблема с этим экземпляром приводит к потере услуг для вашего сайта.
    • Масштабирование ресурсов для повышения производительности может быть достигнуто только за счет «вертикального масштабирования»;
    • То есть, увеличивая размер виртуальной машины, управляя вашим веб -сайтом WordPress.

Доступные подходы

  • AWS имеет ряд различных вариантов для обеспечения виртуальных машин.
  • Есть три основных способа размещения вашего собственного веб -сайта WordPress на AWS:

  • Amazon Lightsail

  • Amazon Elastic Compute Cloud (Amazon EC2)

  • AWS Marketplace

Amazon Lightsail

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

Сервис отвлекает многие из более сложных элементов управления инфраструктурой от пользователя.

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

С помощью Amazon Lightsail вы можете выбрать операционные системы Windows или Linux/Unix и популярные веб -приложения, включая WordPress, и развернуть их с одним щелчком с предварительно настроенных шаблонов.

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

Выбор плана ценообразования Amazon Lightsail

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

Существует ряд планов, доступных для охвата различных вариантов использования, с различными уровнями ресурсов ЦП, памяти, хранения с твердотельным диском (SSD) и передачи данных.

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

Вы можете достичь этого, перенесли свой сервер в более широкий план, используя веб -консоль или как описано в документации Amazon Lightsail CLI.

Установка WordPress

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

Этот шаблон является отличной отправной точкой для запуска вашего собственного веб-сайта WordPress, поскольку он предварительно установлен с большинством необходимого вам программного обеспечения.

Вы можете установить дополнительное программное обеспечение или настроить конфигурацию программного обеспечения, используя терминал в браузере или ваш собственный клиент SSH, или через веб-интерфейс Administration WordPress.

Amazon Lightsail имеет партнерство с продуктом Godaddy Pro Sites, чтобы помочь клиентам WordPress легко управлять своими экземплярами бесплатно.

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

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

С помощью этой интеграции вы можете легко управлять своими экземплярами WordPress за считанные минуты только с несколькими щелчками.

Для получения дополнительной информации об управлении WordPress на LightSail см. В начале использования WordPress из вашего экземпляра Amazon Lightsail.

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

Снимок — это способ создать резервное изображение вашего экземпляра Lightsail.

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

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

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

Восстановление после неудачи

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

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

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

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

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

Вы можете запланировать автоматические снимки ваших экземпляров Lightail Linux/Unix.

Для шагов см. Включение или отключение автоматических снимков для экземпляров или дисков в Amazon Lightsail.

AWS рекомендует использовать статический IP: фиксированный публичный IP -адрес, который посвящен вашей учетной записи Lightsail.

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

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

Повышение производительности и эффективности затрат

В конечном итоге вы можете перерасти свое развертывание с одним сервером.

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

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

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

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

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

Многие из этих модификаций требуют использования одного или нескольких плагинов WordPress.

Хотя доступны различные варианты, W3 Total Cache является популярным выбором, который объединяет многие из этих модификаций в одном плагине.

Ускорение доставки контента

  • Любой веб -сайт WordPress должен предоставить сочетание статического и динамического контента. Статический контент включает в себя изображения, файлы JavaScript или листы в стиле. Динамический контент включает в себя все, что сгенерировано на стороне сервера, используя код PHP WordPress, например, элементы вашего сайта, которые генерируются из базы данных или персонализированы для каждого просмотра.

Важным аспектом опыта конечного пользователя является задержка сети, связанная с предоставлением предыдущего контента пользователям по всему миру. Ускорение доставки предыдущего контента улучшает опыт конечного пользователя, особенно пользователи, географически распространенные по всему миру. Это может быть достигнуто с помощью сети доставки контента (CDN), такой как Amazon CloudFront.

Amazon CloudFront-это веб-сервис, который предоставляет простой и экономичный способ распределения контента с низкой задержкой и высокой скоростью передачи данных через несколько мест края по всему миру. Запросы просмотра автоматически направляются в подходящее местоположение края облака для снижения задержки.

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

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

Статический контент разгрузка

Это включает в себя CSS, JavaScript и файлы изображений — либо те, которые являются частью ваших тем WordPress, либо те файлы медиа -файлов, загруженных администраторами контента.

Все эти файлы могут храниться в Amazon Simple Service (Amazon S3), используя плагин, такой как W3 Total Cache, и обслуживается пользователям масштабируемым и очень доступным способом.

Amazon S3 предлагает очень масштабируемую, надежную и низкую инфраструктуру хранения данных с низкой задержкой по низкой стоимости, которая доступна через API REST.

Amazon S3 избыточно хранит ваши объекты не только на нескольких устройствах, но и на нескольких объектах в регионе AWS, что обеспечивает исключительно высокий уровень долговечности.

Это имеет положительный побочный эффект от разгрузки этой рабочей нагрузки из вашего экземпляра Lightsail и позволяя ему сосредоточиться на генерации динамического содержания.

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

Впоследствии вы можете настроить Amazon S3 как происхождение для CloudFront, чтобы улучшить доставку этих статических активов пользователям по всему миру.

Хотя WordPress не интегрирован с Amazon S3 и CloudFront вне коробки, различные плагины добавляют поддержку этих услуг (например, W3 Total Cache)

Динамический контент

Динамическое содержание включает вывод сценариев Server WordPress PHP. Динамический контент также может быть обслуживается через CloudFront, настраивая веб -сайт WordPress в качестве происхождения.

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

CloudFront использует перенаправленные значения cookie как часть ключа, который идентифицирует уникальный объект в своем кэше.

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

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

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

Вы можете настроить заголовки управления кэшем на уровне веб -сервера (например, через файлы .htaccess или модификации файла httpd.conf) или установить плагин WordPress (например, W3 Total Cache), чтобы определить, как эти заголовки установлены для обоих Статическое и динамическое содержание.

Кэширование базы данных

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

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

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

Хотя WordPress обладает ограниченными возможностями кэширования из коробки, различные плагины поддерживают интеграцию с MemCached, широко принятой системой кэширования объекта памяти.

Плагин W3 Total Cache является хорошим примером.

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

Другой вариант — воспользоваться преимуществами управляемой услуги, такой как Amazon Elasticache, и избежать этой оперативной нагрузки.

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

Вы можете найти информацию о том, как подключиться к своим узлам кластера Elasticache в документации Amazon Elasticache.

Если вы используете Lightsail и хотите получить доступ к кластеру Elasticache в своей учетной записи AWS в частном порядке, вы можете сделать это, используя VPC Peering.

Для получения инструкций, чтобы включить VPC Peering, обратитесь к настройке Amazon VPC для работы с ресурсами AWS за пределами Amazon Lightsail.

Байт -кодовое кэширование

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

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

Кэш Bytecode может быть установлен на любом экземпляре Lightsail, который размещает WordPress и может значительно уменьшить его нагрузку.

Для PHP 5.5 и позже AWS рекомендует использовать Opcache, комплексное расширение с этой версией PHP.

Обратите внимание, что Opcache включена по умолчанию в шаблоне Lightsail WordPress Bitnami, поэтому никаких дальнейших действий не требуется.

Эластичное развертывание

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

Проверьте Здесь Чтобы увидеть справочную архитектуру

Масштабирование веб -уровня

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

  • Amazon EC2 экземпляры
  • Amazon Machine Images (Amis)
  • Балансировщики нагрузки
  • Автоматическое масштабирование
  • Проверки здоровья

AWS предоставляет широкий спектр типов экземпляров EC2, поэтому вы можете выбрать лучшую конфигурацию сервера как для производительности, так и для стоимости. Вообще говоря, тип экземпляра Compute-оптимизированного (например, C4) может быть хорошим выбором для веб-сервера WordPress.

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

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

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

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

Поскольку ваш веб-сайт обслуживает контент вашим пользователям через HTTP или HTTPS, мы рекомендуем использовать балансировщик нагрузки приложения, балансировщик нагрузки приложений с маршрутизацией содержимого и возможность запускать несколько веб-сайтов WordPress в разных доменах, если требуется Elastic Балансировка нагрузки поддерживает распределение запросов по нескольким зонам доступности в регионе AWS.

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

AWS рекомендует использовать страницу входа в систему admin WordPress (/wp-login.php) для проверки здоровья, поскольку эта страница подтверждает, что веб-сервер работает и что веб-сервер настроен для правильного обслуживания файлов PHP

Бездейственный веб -уровень

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

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

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

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

Хранение сеанса не является проблемой, если вы не установили какой -либо пользовательский код (например, плагин WordPress), который вместо этого полагается на собственные сеансы PHP. Тем не менее, WordPress был первоначально разработан для запуска на одном сервере. В результате он хранит некоторые данные в локальной файловой системе сервера.

При запуске WordPress в конфигурации с несколькими серверами это создает проблему, потому что существует несоответствие на веб-серверах. Например, если пользователь загружает новое изображение, оно хранится только на одном из серверов.

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

Общее хранилище (Amazon S3 и Amazon EFS)

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

Amazon Elastic File File System (Amazon EFS) предоставляет масштабируемые сетевые файловые системы для использования с экземплярами EC2. Файл -системы Amazon EFS распределяются по неограниченному количеству серверов хранения, что позволяет файловым системам эластично расти и обеспечивая массово параллельный доступ из экземпляров EC2.

Распределенный дизайн Amazon EFS позволяет избежать узких мест и ограничений, присущих традиционным файловым серверам.

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

Преимущество этой архитектуры заключается в том, что вам не нужно устанавливать плагины и темы на каждый запуск нового экземпляра, и вы можете значительно ускорить установку и восстановление экземпляров WordPress. Также легче развернуть изменения в плагинах и темах в WordPress, как указано в разделе «Соображения развертывания» (стр. 18) этого документа.

Уровень данных (Amazon Aurora и Amazon Elasticache)

С установкой WordPress, хранящейся на распределенной, масштабируемой, общей сетевой файловой системе и статических активах, обслуживаемых от Amazon S3, вы можете сосредоточить внимание на оставшемся компоненте состояния: база данных.

Как и в случае с уровнем хранения, база данных не должна зависеть от какого -либо отдельного сервера, поэтому она не может быть размещена на одном из веб -серверов. Вместо этого разместите базу данных WordPress на Amazon Aurora.

Amazon Aurora-это совместимая реляционная база данных MySQL и PostgreSQL, созданная для облака, которая объединяет производительность и доступность высококачественных коммерческих баз данных с простотой и экономической эффективностью баз данных с открытым исходным кодом. Aurora MySQL повышает производительность и доступность MySQL за счет жесткой интеграции двигателя базы данных с помощью специально построенной распределенной системы хранения, поддерживаемой SSD.

Он устойчив к неисправности и самовосстанавливается, повторяет шесть копий ваших данных в трех зонах доступности, предназначена для более 99,99% доступности и постоянно поддерживает ваши данные в Amazon S3.

Amazon Aurora предназначена для автоматического обнаружения сбоев базы данных и перезапуска без необходимости восстановления сбоев или для восстановления кэша базы данных.

Amazon Aurora предоставляет ряд типов экземпляров, соответствующих различным профилям приложений, включая оптимизированные память и разрывные экземпляры. Чтобы улучшить производительность вашей базы данных, вы можете выбрать большой тип экземпляра, чтобы предоставить больше ресурсов процессора и памяти.

WordPress высокая доступность Bitnami на AWS Quick Start

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

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

Каждый быстрый старт включает в себя шаблоны AWS CloudFormation, которые автоматизируют развертывание, и руководство, которое обсуждает архитектуру и предоставляет пошаговые инструкции по развертыванию.

Вывод

AWS представляет множество вариантов архитектуры для запуска WordPress. Самый простой вариант — установка с одним сервером для веб -сайтов с низким трафиком. Для более продвинутых веб -сайтов администраторы сайта могут добавить несколько других вариантов, каждый из которых представляет дополнительное улучшение с точки зрения доступности и масштабируемости. Администраторы могут выбрать функции, которые наиболее близко соответствуют их требованиям и их бюджету.

Справка

Оригинальная бумага

Оригинал: «https://dev.to/awsmenacommunity/best-practices-for-wordpress-on-aws-aws-white-paper-summary-19bl»