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

Это 14-я, заключительная часть цикла «Сервер для WordPress».

Пул PHP-FPM

  1. request_terminate_timeout не ноль — без него один зависший запрос кладёт сайт до перезапуска (вторая часть);
  2. медленные запросы пишут стек в журнал (request_slowlog_timeout);
  3. есть страница статуса пула, и она закрыта снаружи (четвёртая часть);
  4. настройки проверены тем же путём, каким запускается мастер-процесс (php-fpm -tt -y …);
  5. режим пула подходит трафику: ondemand для сайта из кэша, dynamic с тёплым запасом для живого трафика; min_spare не задран (третья часть).

Образ, база, кэш

  1. Dockerfile образа PHP лежит в git (пятая часть);
  2. буферы базы подобраны под сайт и память сервера, а не по умолчанию (первая часть);
  3. политика памяти Redis соответствует тому, что в нём лежит: вытеснение для объектного кэша, запрет вытеснения и журнал — для кэша фрагментов (шестая часть);
  4. Redis — во внутренней сети без выхода наружу и без опубликованного порта.

Сеть

  1. у базы нет сетевого псевдонима в общей сети; PHP ходит в неё через сокет (седьмая часть);
  2. запросы сайта к самому себе идут в nginx по имени контейнера с нужными Host и X-Forwarded-Proto;
  3. наружу открыт только прокси на входе.

Крон

  1. встроенный запуск выключен (DISABLE_WP_CRON), системный крон раз в минуту (статья про крон);
  2. крон запускается от пользователя веб-сервера, а не от root, — проверено по владельцу новых файлов;
  3. после правки задания перезапущен планировщик и проверен его журнал;
  4. на виртуальном хостинге поля планировщика — это моменты, а не интервалы (12-я часть).

Почта

  1. письма уходят через SMTP ящика на домене, а не своим почтовым сервером (восьмая часть);
  2. отправитель — свой ящик, все параметры почты в .env сайта;
  3. у заявок видно, дошло ли письмо.

Сертификаты

  1. раз в неделю — проверка по сети: корень, www, поддомены каждого сайта (девятая часть);
  2. покупные сертификаты: новый на руках за две недели до срока;
  3. цепочка полная: Verify return code: 0, а не только «в браузере открывается».

Индексация

  1. тестовые копии закрыты от поиска на уровне прокси;
  2. живой сайт открыт — проверено заголовком ответа, а не настройкой (десятая часть).

Диск и сборка

  1. WordPress не режет размеры картинок, которые сайт не показывает (11-я часть);
  2. версия Node — свойство команды сборки, а не сервера (13-я часть);
  3. перед коммитом линтер прогнан по всему коду, как в CI;
  4. после прерванного линтера или сборки не осталось живых контейнеров.

Одна мысль на весь цикл

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

Хотите пройти этот чек-лист на своём сервере?

Пришлите адрес и доступы — проверю по каждому пункту и скажу, что поменять в первую очередь.

· полезно?
АЧ
Алексей Чикун веб-разработчик, команда TRIOHEAD

Делаю сайты и сервисы целиком: от вёрстки до сервера. Пишу о том, что проверил на своих проектах.

Комментарии

// загружаю комментарии…

Комментарии публикуются после проверки. Ссылки и HTML не принимаются.