WordPress: как правильно настроить

Как правильно настроить WordPressКак правильно настроить WordPress для его быстрой работы? WordPress — одна из наиболее популярных систем управления контентом (CMS), но, к сожалению, нужно уметь ее правильно настраивать, чтобы обеспечить максимальную скорость работы и минимальное время отклика. Это позволит в том числе сэкономить на стоимости хостинга. Казалось бы, ничего сложного. Берем сервер, ставим пакеты, скачиваем свежий WordPress, устанавливаем его, и всё. Но, на самом деле, всё не так просто. Для настройки сервера для быстрой и эффективной работы сайта на базе системы управления контентом WordPress потребуется следующее:

  • Сервер с операционной системой Debian GNU/Linux 8 (Jessie)
  • Система управления базами данных MariaDB или MySQL
  • PHP-FPM + PHP-APC
  • Веб-сервер Nginx
  • Сам WordPress последней версии,
  • Уже достаточно известная система выдачи цифровых сертификатов Let’s Encrypt
  • кое-какие плагины для WordPress

Сервер с операционной системой Debian GNU/Linux 8 (Jessie)

Где взять сервер? Один из лучших вариантов, который я могу лично рекомендовать, — Digital Ocean. Почему именно там? Во-первых, для приемлемой работы сайта достаточно минимальной конфигурации виртуального сервера из тех, которые у них доступны (1 ядро частотой 1.8GHz, 512Mb оперативной памяти, 20Gb дискового пространства). Во-вторых, выделенный белый IP-адрес уже включен в стоимость. В-третьих, дают бесплатно 10$ при регистрации по рефссылке. В-четвертых, если введете промо-код ALLSSD10, получите еще 10$. Итого 4 месяца бесплатно, потому что сам сервер стоит 5$ в месяц. В-пятых, если вы занимаетесь разработкой, то есть API, который позволяет развернуть целое окружение при необходимости. Есть еженедельные бэкапы всего сервера за 1$/месяц, но можете делать их сами, например, в Yandex.Disk. Как его подключить можно почитать здесь.

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

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

Прежде чем приступать к установке программного обеспечения, надо закомментировать все строчки файла /etc/apt/sources.list, которые начинаются с «deb-src».

И затем выполняем команду

Будем предполагать, что у вас уже есть некоторое зарегистрированное доменное имя, которое указывает на адрес сервера. В моем случае это будет доменное имя freesw.cf.

Система управления базами данных

В качестве системы управления базами данных (СУБД) я рекомендую MariaDB или MySQL. Почему MariaDB? Вот поэтому. Однако некоторые приложения, если вы их ставите из пакетов, требуют по зависимостям именно MySQL (пакет mysql-server), поэтому, если вы что-то такое поставили на сервер (например, MediaWiki), то вам имеет смысл поставить именно MySQL (пакет mysql-server). Ставим пакеты:

По зависимостям установится еще около десятка пакетов. В процессе установки будет запрошен пароль пользователя root. ЭТО НЕ ТОТ ЖЕ root, который используется в системе, поэтому в целях безопасности рекомендуется использовать другой пароль.

После установки помним, что памяти у нас всего 512 Mb, что не очень много, и в зависимости от нагрузки на сайт, может быть придется уменьшить размеры буферов БД для снижения потребления памяти. Для этого в файле /etc/mysql/my.cnf запомните следующие строчки:

PHP-FPM

Следующее, что ставим после СУБД, — это PHP-FPM. Что это такое? Это PHP FastCGI Process Manager, менеджер процессов для бинарного протокола FastCGI, используемого для взаимодействия приложений с веб-сервером. Он работает очень быстро по сравнению с модулями для веб-серверов, и отлично работает с веб-сервером Nginx, который мы будем использовать.
Устанавливаем пакеты:

После установки идём в директорию /etc/php5/fpm. Делаем резервную копию директории pool.d:

Теперь в директории pool.d (/etc/php5/fpm/pool.d) удаляем файл www.conf и создаем там же файл wordpress.conf следующего содержания:

И теперь рестартуем php5-fpm:

APCu

APCu — это Alternative PHP Cache for userland. Это быстрое решение для кэширования PHP локально. Может использоваться совместно с memcached. Нужен этот кэш для того, чтобы не генерировать странички каждый раз, а сгенерировать один раз и отдавать потом много раз. Генерация заметно медленнее, чем отдача из кэша.

Ставим пакет:

Установка и настройка Nginx

Почему именно Nginx? Ну, тут много всяких причин: он расходует относительно мало ресурсов, отлично работает с FastCGI, умеет работать с memcached, умеет работать с дисковым кэшем, работает при необходимости с бэкендом как реверс-прокси, очень надежный, быстрый и гибкий в настройке.

Ставим пакеты:

После установки создаем конфигурационный файл /etc/nginx/sites-available/wordpress и записываем в него следующее (не забывая поменять «freesw.cf» на название вашего домена):

Если у вас есть кастомные странички для ошибок 40x и 50x, можно раскомментировать соответствующие строчки.

Переходим в директорию /etc/nginx/sites-enabled. Удаляем дефолтный сайт, включаем wordpress:

Следующий файл, который надо поменять, — это /etc/nginx/nginx.conf. Сделайте резевную копию оригинального файла и запишите в nginx.conf следующее:

Таким образом, мы включили кэш nginx, компрессию, и настроили отдачу статики. Странички будут сначала запрашиваться из кэша, а потом, если их нет в кэше, будут запрашиваться с бэкенда. Если бэкенд вернул код 404, то страница в кэше будет находиться 1 минуту, если 200 или 302, то 60 минут. С этими циферками еще можно поработать, посмотреть, что можно еще улучшить.

Перезапускать nginx пока НЕ НАДО. Надо его просто остановить, если он в данный момент работает.

Установка цифрового сертификата

Зачем сайту нужен цифровой сертификат? Прежде всего затем, что к такому сайту больше доверия у поисковых систем и посетителей, соответственно, последних будет больше. Для установки сертификата воспользуемся известной системой «Let’s Encrypt» и программным пакетом certbot. В первую очередь добавляем репозиторий для установки пакетов. Создаем файл /etc/apt/sources.list.d/certbot.list и записываем в него следующее:

После этого обновляем список пактов и устанавливаем необходимые пакеты:

После того, как пакеты установятся, нам надо сгенерировать сертификат. Даем команду:

Начнется процесс верификации и установки цифрового сертификата.

Wordpress: как правильно настроить

Выбираем второй вариант — поднять временный веб-сервер для верификации.

Wordpress: как правильно настроить

Нажимаем ОК.

Wordpress: как правильно настроить

Вводим наш контактный адрес электронной почты. Нажимаем ОК.

Wordpress: как правильно настроить

Идем читать Terms of Services, после прочтения, если согласны (что-то мне подсказывает, что так и есть), нажимаем «Agree».

Wordpress: как правильно настроить

Вводим наше доменное имя, нажимаем ОК. На этом всё. Сертификат и ключ лежат там, где мы уже их ждем. Теперь можно стартовать nginx.

И теперь осталось добавить задание в крон для автоматического обновления сертификата. Добавляем в файл /etc/crontab строчку:

 

Установка WordPress

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

Теперь будем устанавливать вордпресс. Переходим в директорию /var/www:

Скачиваем с официального сайта последнюю версию WordPress:

Когда файл скачается распаковываем его:

Появится новая директория wordpress. Архив после распаковки можно удалить.

Осталось выдать права на эту директорию пользователю www-data

Можно переходить к непосредственной установке WordPress в браузере. Открываем в браузере адрес нашего сайта (в моем случае https://freesw.cf).

Wordpress: как правильно настроить

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

Wordpress: как правильно настроить

Читаем всё, что написано, убеждаемся, что мы уже знаем всё необходимое, нажимаем «Вперёд!».

Wordpress: как правильно настроить

Вводим название базы данных (wordpress), имя пользователя базы данных (wordpress), пароль (который мы вводили при выделении прав на базу данных пользователю wordpress). Сервер базы данных оставляем localhost, префикс таблиц оставляем «wp_». Нажимаем кнопку «Отправить».

Wordpress: как правильно настроить

Видим сообщение о том, что можно запускать установку. Нажимаем кнопку «Запустить установку».

Wordpress: как правильно настроить

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

Wordpress: как правильно настроить

По окончании установки вы увидите вот такое поздравление. Нажимаем кнопку «Войти» и переходим к странице логина. После ввода логина и пароля вы попадете в панель управления.

Wordpress: как правильно настроить

Вот, собственно, WordPress установлен, но это еще не всё, что нужно сделать. Нужно установить еще несколько плагинов. Как ни странно, установка плагинов должна помочь нашему сайту работать лучше. Плагин Akismet уже установлен, его надо оставить. Этот плагин предоствращает спам в комментариях и работает достаточно хорошо. Если его не устанавливать, вам придется разгребать спам-комментарии самостоятельно.

Установка плагина JetPack для WordPress

Плагин JetPack делает много всего интересного, но нас больше всего интересует возможность использования CDN от WordPress с названием Proton. В меню «Плагины» выбираем «Добавить новый». На открывшейся страничке видим вот такой плагин:

Wordpress: как правильно настроить

Нажимаем кнопку «Установить». После установки надпись на кнопке поменяется на «Активировать». Нажимаем её. Нас перенаправляет на такую страничку:

Wordpress: как правильно настроить

Нажимаем кнопку «Подключение к WordPress.com». Если вы уже зарегистрированы, то вма нужно будет только нажать кнопку «Approve», если нет, то придется сначала зарегистрировать, что я и рекомендую. После этого вас перенаправит обратно в админ-панель вашего сайта.

Wordpress: как правильно настроить

Нажимаем кнопку «Активировать рекомендованные функции». Будут активированы следующие функции:

  • Блокировка несанкционированных попыток входа
  • Эффективная работа с изображениями (Proton)

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

Плагин Akismet

Wordpress: как правильно настроить

Чуть выше я уже написал, зачем он нужен. Теперь его надо активировать. Переходим в «Плагины» -> «Установленные» и кликаем «Активировать». После активации вам нужно получить API-ключ.

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

Установка плагина W3 Total Cache

В панели в меню «Плагины» -> «Добавить новый» в поиске набираем «W3 Total Cache», устанавливаем и активируем.

Wordpress: как правильно настроить

Этот плагин позволяет очень детально настроить кэширование для вашего сайта. Да, это займет некоторое время, но это определенно того стоит. Надо только помнить вот о чем при использовании этого плагина: при включении какой-то настройки тщательно проверяйте, всё ли правильно работает.

В заключение

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

Как обычно, жду в комментариях предложения, дополнения, замечания.

P.S.: Присмотритесь к плагинам Yoast SEO и WP-Mail-SMTP ;-)

WordPress: как правильно настроить: 7 комментариев

  1. Alex

    Постоянно ругается на unknown directive

    nginx -t nginx: [emerg] unknown directive » ssl_protocols» in /etc/nginx/nginx.conf:32 nginx: configuration file /etc/nginx/nginx.conf test failed

  2. Alex

    cd /etc/nginx/sites-enabled
    rm default
    ln -s /etc/nginx/sites-available/wordpress

    по моему вы имели виду

    sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/wordpress

    1. Maxim Norin Автор записи

      У вас точка пропущена. Должно быть «ln -s /etc/nginx/sites-available/wordpress .», что в данном случае значит то же самое, что и «ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/wordpress».

  3. Alex

    Спасибо Максим буду иметь виду за точку.

    Да и у меня всё заработало полез в SFTP за конфигом и обнаружил посторонние символы которые в редакторе не отображались.

  4. Alex

    Привет Максим!
    Для автоматического продления наверно нужно сначала приостановить работу NGINX.
    Иначе команда /usr/bin/letsencrypt renew не работает ругается на занятость 80го порта..

    1. Maxim Norin Автор записи

      Привет! На самом деле надо для автоматического продления использовать webroot, я чуть позже Let’s Encrypt вынесу в отдельную статью, где детально опишу, какой способ когда лучше использовать, и как это сделать удобно.

Добавить комментарий

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