Настройка VPS для быстрой работы WordPress

Пошаговая инструкция для тех, кто хочет настроить виртуальный сервер с Ubuntu 16.04 для быстрой работы WordPress.

1. Предыстория

Лучший способ развиваться – делиться накопленным опытом.

Это инструкция про то, как поставить и быстро настроить набор современного софта (Nginx, PHP 7 и MySQL Server), который легко администрировать, набираясь опыта, с возможностью дальнейшей доработки под свои нужды.

Раньше для запуска сайтов мне было достаточно shared-хостинга. Это разумная экономия, если посещаемость сайтов небольшая. Так продолжалось до 2014 года, когда в руки попал довольно посещаемый ресурс, запущенный на VPS и при этом сильно тормозящий. Шутка ли – страницы могли генерироваться по 10 секунд! На домашней Убунте я не раз ставил стек программ LAMP командой sudo apt-get install lamp-server^ , раскидывая сайты по разным папкам и составляя несложные конфиги, поэтому первым делом перенёс сайт на своё «железо». На домашнем ПК он заработал довольно шустро, поэтому решил, что на сервере нужно просто переустановить софт с нуля. Глубокой ночью, когда посетителей было мало, поставил Ubuntu 12.04.4 (тогда была самой актуальной версией), Apache+PHP+MySQL+phpmyadmin+proftpd и запустил сайт. Увы – генерация страниц как длилась по 5–10 секунд, так и продолжила отнимать драгоценное время.

Стал копать дальше и убедился, что дело было в самописных компонентах CMS (это была Joomla, кстати). Переписывать тормозящий программный код CMS, с которым я не знаком, не лучшее решение, когда работу нужно выполнить в сжатые сроки. Поэтому прикрутил компонентам кэширование и аллилуйя – тормоза исчезли! Страницы стали загружаться за 0,7–0,9 секунд, это более чем пятикратный прирост производительности.

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

Я дам прямой ответ на вопрос: как же сделать так, чтобы запущенный на дешёвом, медленном сервере сайт работал быстро.

2. Выбор VPS

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

3. Выбор ОС для сервера (Ubuntu Server 16.04)

Обычно хостинг даёт возможность выбрать операционную систему для вашего сервера. Большинство предлагаемых – различные дистрибутивы Linux: Debian, Ubuntu, Arch Linux, CentOS, OpenSUSE, Fedora, Gentoo и другие.

На персональном компьютере можете ставить что угодно, но на серверах важна стабильность. На мой взгляд, Ubuntu 16.04 – разумный компромисс между новыми версиями софта и стабильностью. Инструкции для Debian подходят и для Убунты, а значит – начинающим пользователям будет раздолье в плане повышения навыков и поиска ответа на вопросы. Потом при желании можно переключиться на CentOS или вообще FreeBSD, но для начала, чтобы избежать головной боли при настройке, лучше Убунты ничего не придумали.

Моё субъективное мнение о популярных дистрибутивах:

  • CentOS (любая версия): новичкам будет тяжело, ибо инструкций не очень много. В репозиториях доступны довольно свежие версии софта.
  • Debian (любая версия): оперативной памяти занимает немного, что помогает быстрее работать сайту с высокой посещаемостью за счёт выделения памяти кэшу и PHP с MySQL (после тонкой настройки, конечно), но в репозитории доступны старые, проверенные версии PHP, из-за чего скорость работы сайтов будет не так высока, как могла бы быть. Инструкций много, начинающие пользователи разберутся, но настройка требует времени.
  • Ubuntu Server 16.04: серверная версия популярного дистрибутива Linux. Версия 16.04 будет поддерживаться до апреля 2021 г. – это значит, что после настройки вы четыре года сможете просто обновлять софт. Обновления важны, потому что в новых версиях исправляются найденные уязвимости и устраняются ошибки. Версии программ в репозитории Ubuntu 16.04 относительно свежие. Например, на момент написания статьи доступна PHP 7.0, дающая 30% прирост производительности по сравнению с PHP 5.6, идущей по умолчанию в Debian 8.
  • Ubuntu Server 16.10, 17.04, 17.10: версия 16.10 уже вышла, но обновления безопасности прекратят приходить в июле 2017 года, придётся обновлять всю систему целиком до 17.04. На момент написания статьи 17.04 готовится к выходу, а 17.10 пока только в планах, их тоже ставить нет смысла: это не LTS-релизы, а значит, они тоже быстро превратятся в тыкву.

У любителей настраивать всё ручками можно знатно пригореть от того, что я предлагаю Ubuntu Server 16.04 в качестве основы для веб-сервера, ведь есть CentOS/FreeBSD/Что-то_ещё_OS. Выбор в мире свободного софта – всегда конфликт и холивары. Моя позиция такова: Ubuntu – хороший старт, начните с неё, а дальше у каждого свой путь.

4. Как подключиться к VPS

Итак, ОС выбрали, сервер заказали, в админке хостинга появился IP-адрес сервера, имя пользователя и пароль для доступа по SSH. Как подключиться к ВПСке?

Управление сервером осуществляется через терминал (консоль) путём ввода команд. Обычно к консоли подключаются по протоколу SSH с помощью соответствующих программ. Я рекомендую использовать Putty как самую распространённую: ссылка на самую новую версию. Версия с MSI-инсталлятором (первая ссылка в списке) – наиболее полный комплект. Или можете использовать форк (модификацию) Putty под названием KiTTY, где добавлено много полезного по сравнению с оригинальной программой.

После установки панели управления VestaCP сервером можно управлять и через браузер, обращаясь к консоли только для обновления программ.

Инструкция подходит к Ubuntu 16.04 и 16.10. Пожалуйста, не спрашивайте меня об установке софта на CentOS и другие дистрибутивы – это тема отдельной статьи.

5. Вход на сервер через Putty

Для входа нужна только первая вкладка в стартовом окне Putty:

Настройка VPS

1 – сюда введите IP-адрес вашего сервера;

2 – порт, по умолчанию 22;

3 – введите любое название;

4 – сохранение настроек под именем из третьего пункта;

5 – в дальнейшем просто запустите двойным щелчком по пункту в этом списке. Для редактирования настроек именно этого пункта есть кнопки Load и Save.

После нажатия Open (или двойного щелчка по сохранённому пункту в списке), если правильно ввели адрес и порт, появится предупреждение:

Настройка VPS 1

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

Появится консоль с предложением войти:

Настройка VPS 2

Нужно сначала ввести выданный хостером логин, нажать Enter, пароль и снова Enter:

Настройка VPS 3

Тут важный момент: если вам выдан пароль к пользователю root, нужно создать другого с меньшими правами. Под пользователем root можно нечаянно удалить любые системные файлы, а нам нужно, чтобы VPS прожил как можно дольше.
Как добавить пользователя в Убунте

Но так как ниже я порекомендую установить VestaCP, которая добавляет в систему пользователя admin, нет смысла вручную добавлять лишнего пользователя. Просто имейте в виду – под рутом сидеть опасно.

Есть ещё один способ авторизации на сервере: по цифровому ключу. Генерируется файл-ключ, благодаря которому сервер узнает, что вы – это вы. Цифровой ключ просто нереально подобрать, поэтому доступ к серверу по протоколу SSH будет предельно надёжен. По умолчанию включать доступ по цифровому ключу любят зарубежные хостеры, у наших встречал пока только у одного. Если у вас простая связка логин/пароль, не переживайте и просто имейте в виду, что есть более защищённый способ, который можно включить в будущем. Как настроить, в Интернете инструкций полно, я не буду останавливаться на этом.

6. Обновление программ

Нужно запомнить команду обновления, которую вводить придётся часто:

sudo apt update && sudo apt upgrade

Точнее, это две команды, объединённые в одну, чтобы лишний раз не жать Enter:

  • apt update обновляет список программ, подгружая из их репозитория Ubuntu 16.04;
  • apt upgrade запускает обновление программ сервера, если есть устаревшие;
  • sudo означает, что программу apt нужно запустить от имени суперпользователя root.
Найден устаревший софт. Обновить?
Найден устаревший софт. Обновить?

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

7. Немного теории: как работает веб-сервер

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

Упрощённый набросок работы веб-сервера
Упрощённый набросок работы веб-сервера

Общий принцип работы таков:

1. Браузер пользователя узнаёт у DNS-сервера провайдера IP-адрес сервера, на котором находится сайт.

2. Затем браузер обращается по IP-адресу к серверу, указывая заодно, какой именно сайт ему нужен.

3. Веб-сервер разбирает запрос, определяя – что отдать посетителю. Два варианта событий:

а) Если это просто фотография, документ или другой статичный файл, то веб-сервер загружает с диска этот файл и отдаёт посетителю.

б) Если запрос подразумевает обработку через php-скрипт, он выполняется, формируя html-код странички и этот готовый код передаётся веб-серверу, который, в свою очередь, передаёт его браузеру посетителя.

Вы можете подумать: «Зачем читать эту азбуку? Раз я купил VPS, то всё знаю!». Вам придётся немного потерпеть, потому что есть нюансы, про которые многие забывают. Даже профессионалы своего дела, судя по вопросам на таком серьёзном сайте, как toster.ru, иногда получают граблями по лбу.

8. Выбор веб-сервера: Apache против Nginx

По умолчанию на VPS не будет веб-сервера, интерпретатора PHP и сервера баз данных. Их нужно ставить самим. Рассмотрим два самых популярных веб-сервера – Apache и Nginx.

  • Apache – самый популярный выбор. Совместим со всеми CMS, в том числе WordPress. К сожалению, скорость работы оставляет желать лучшего. Работающий на Apache сайт при наплыве посетителей начнёт открываться медленно или вовсе выдаст ошибку 500, 502 или другую из серии 5**, если у сервера не хватит ресурсов. Плюс только один: совместимость. На нём работают любые сайты, любые CMS, любой софт, написанный на PHP.
  • Nginx – второй по популярности веб-сервер. Используется многими посещаемыми сайтами. Например, Яндексом, Mail.ru и Вконтакте. Сильная сторона nginx – он очень быстро отдаёт посетителю статичные файлы (.htm, .jpg, .png и другие). Благодаря этому и некоторым другим особенностям на аналогичном по производительности сервере Nginx выдерживает большее количество одновременных посетителей, а также позволяет загружать странички быстрее. Никакой магии, конечно, нет – если посетителей много и ресурсов сервера не хватает, 5**-е ошибки посыпятся тоже, но при больших нагрузках. О том, почему Nginx быстрее, есть замечательная статья на Хабрахабре.
Всё познаётся в сравнении. Если бы не существование Nginx, можно было бы смело поставить Apache и при повышении посещаемости сайта просто переезжать на более быстрый сервер. Но я рассказываю о том, как сделать так, чтобы сайт работал быстро, так что пошлём Apache куда-нибудь подальше.

Я предлагаю использовать Nginx, потому что:

  1. Nginx быстро отдаёт статичные файлы. Я подчеркиваю – действительно быстро. Если у вас сайт с большим количеством фотографий, переход на Nginx будет заметен невооружённым глазом: изображения на страницах будут появляться быстро, словно вы подключились к более шустрому Интернету.
  2. Nginx может кэшировать результат работы PHP-скриптов и отдавать браузеру так же быстро, как статичные файлы. Это те самые грабли, на которые наступают некоторые админы, я в их числе. Nginx может работать в любой мыслимой конфигурации и если вдруг вам захотелось ускорить работу сайта, велик соблазн включить все виды кэширования. Но при длинной цепочке кэширования производительность, наборот, может упасть! Более того, посетителям нужен не замерший во времени сайт – комментарии, форумы, новостные ленты должны обновляться. Обновлять кэш постранично в WordPress довольно накладно. А если сбрасывать всё при каждом новом комментарии или записи в блоге, производительность сайта будет низкой, потому что часть ресурсов будет уходить на постоянное пересоздание кэша. Поэтому дальше я предложу гарантированный способ кэширования, однозначно ускоряющий сайт, всё остальное будете допиливать сами, если появится желание.
  3. Nginx отказоустойчив. Так как это ещё и прокси-сервер, то при грамотной настройке, если вдруг «отвалится» PHP-интерпретатор, сайт продолжит работу, отдавая посетителям кэшированные страницы.
  4. Nginx контролируем в настройке. Всё сосредоточено в нескольких .conf файлах и вся логика параметров базируется на запросе посетителя. Nginx разбирает запрошенный URL «по кирпичикам» и решает: отдать ли фотографию, перенаправить ли запрос PHP-интерпретатору, взять искомое из кэша или запретить доступ. В итоге ресурсов для отдачи контента отдаётся столько, сколько нужно. Apache работает иначе. Как именно, рассказано в статье, ссылку на которую я привёл в начале главы.

На мой взгляд, использовать Apache можно только в том случае, если разработчиками сайта явно заявлена совместимость только с этим веб-сервером. Но даже в этом случае можно сделать из Nginx прокси, позволив ему отдавать статические и кэшированные файлы, перенаправляя запросы на формирование динамических страниц к Apache. Так как WordPress прекрасно дружит с Nginx, подобную химеру рассматривать не буду. Только Nginx и PHP-FPM, чтобы исключить любые промежуточные этапы, способные снизить скорость работы и усложнить настройку.

9. Выбор PHP: версии 5.6, 7.0 и 7.1

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

На момент написания статьи в Ubuntu 16.04 по умолчанию устанавливается PHP 7.0, хотя есть версия новее – 7.1. Между 7.0 и 7.1 разница в производительности минимальна (около 1–5%). Приобретя опыт в настройке PHP, вы сможете его переустановить, но на первых порах лучше оставить как есть.

10. Выбор сервера баз данных: MySQL, MariaDB, PostgreSQL и другие

Помимо веб-сервера и интерпретатора PHP, должен быть запущен сервер баз данных. WordPress отлично работает с MySQL и MariaDB, а вот с PostreSQL и другими SQL-как-бы-совместимыми базами данных всё печально. Если у сайта нет десятков тысяч активно комментирующих посетителей, обычный MySQL Server не будет «бутылочным горлышком» – операции чтения из базы данных отлично кэшируются.

Пока лучше остаться на MySQL Server. В перспективе можно перенести базу на MariaDB и таким образом ускорить работу нагруженного сайта, инструкций на эту тему в Интернете полно.

11. Нужен ли DNS-сервер

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

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

Лучше используйте бесплатный DNS-хостинг Яндекса, у вас тогда появится ещё и почтовый ящик вида адрес_ящика@ваш_домен с нормальным антиспамом, не зависящий никак от работы VPS-ки, да и лишней нагрузки на сервер не будет.

12. Как быстро поставить и настроить Nginx+PHP+MySQL

Связка из Nginx, PHP и MySQL называется LEMP и устанавливается простой командой apt install lemp. Не торопитесь её вводить! Вам придётся каждый сайт настраивать вручную, создавая для них папки и составляя файлы конфигурации. Лучше воспользоваться одной из панелей управления сервером, которая решит сразу несколько задач:

  1. Поставит нужный софт.
  2. Проведёт базовую настройку сервера. Например, создаст пользователя с ограниченными правами, под которым и будет работать сайт, чтобы минимизировать риск уничтожения содержимого жесткого диска сервера в случае взлома.
  3. Сама создаст нужные папки и конфигурационные файлы, когда потребуется добавить сайт.
Имхо, ни одна из панелей управления сервером не идеальна, даже платные. Но ближе всего отвечает требованиям простоты и функциональности бесплатная VestaCP.

13. Как поставить Vesta Contol Panel

Подключитесь к серверу по протоколу SSH через Putty и введите cd /var/tmp для перехода в папку, которую можно замусорить установочными файлами.

Скачайте в эту папку инсталлятор Весты командой curl -O http://vestacp.com/pub/vst-install.sh

И запустите установку нужного набора софта вот такой командой:

sudo bash vst-install.sh --nginx yes --phpfpm yes --apache no --vsftpd yes --proftpd no --exim yes --dovecot no --spamassassin no --clamav no --named no --iptables yes --fail2ban yes --mysql yes --postgresql no --remi no --quota no --hostname вашдомен --email ваша@почта --password пароль_админа

Обратите внимание на красные надписи: у вас будет свой домен, своя почта и свой пароль администратора. Если домен для сайта пока не купили, просто выкиньте директиву –hostname вот так:

sudo bash vst-install.sh --nginx yes --phpfpm yes --apache no --vsftpd yes --proftpd no --exim yes --dovecot no --spamassassin no --clamav no --named no --iptables yes --fail2ban yes --mysql yes --postgresql no --remi no --quota no --email ваша@почта --password пароль_админа

После ввода команды (кстати, текст из буфера обмена в Putty вставляется правой кнопкой мыши или сочетанием Shift+Insert), так как указана команда sudo, нужно повторно ввести пароль вашего пользователя в Ubuntu, затем запустится установка:

Просто жмите Y и Enter. Если не указали домен, в процессе установки будет его запрос, жмите Enter для пропуска
Просто жмите Y и Enter. Если не указали домен, в процессе установки будет его запрос, жмите Enter для пропуска

В течении 5–20 минут установятся веб-сервер Nginx, PHP-FPM в качестве интерпретатора PHP, Exim для отправки сообщений на электронную почту, MySQL Server для работы баз данных, Vsftpd для доступа по протоколу FTP, файрвол Iptables и средство автоматического бана Fail2Ban. Версии у программ будут те, которые находятся в репозитории Ubuntu.

В конце установки появится информация о том, по какому адресу доступна Vesta Control Panel, а также пароль нового пользователя admin, совпадающий с тем, что указали ранее в команде установки:

Настройка VPS 8

После установки Весты вам нужно выйти из сеанса вашего пользователя командой logout и перезайти под свежесозданным admin. И в будущем сидите только под ним, потому что:
а) все папки и файлы, которые потребуется создать в папке /home/admin/, будут принадлежать пользователю admin, вручную выполнять команду chown не потребуется,
б) меньше риск удалить системные файлы.

После установки VestaCP доустановите модули PHP, необходимые для работы WordPress:

sudo apt install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc

14. Работа в Vesta Control Panel

Так как для статьи я использую локальный виртуальный сервер, мой адрес для доступа к панели будет https://192.168.110.11:8083. У вас, конечно, другой. При заходе браузер предупредит, что https-соединение не защищено – не обращайте внимания. Затем будет запрос логина/пароля (тот самый admin и ваш пароль), после ввода откроется панель управления:

Настройка VPS 9

Для удобства можете нажать справа вверху надпись «admin» и в настройках профиля переключиться на русский язык.

Чтобы минимально обезопасить сервер, зайдите на вкладку «Фаервол» и заблокируйте порты служб FTP, DNS, POP3, IMAP, DB:

С помощью VestaCP можно легко настроить файрвол iptables
С помощью VestaCP можно легко настроить файрвол iptables

В будущем, если потребуется загрузить файлы по протоколу FTP (адрес сервера – его IP, порт 21, пользователь admin, пароль тот же), можно временно разблокировать строку FTP. Постоянно держать открытыми порты со службами, которыми не пользуетесь, нельзя.

Краткое перечисление страниц панели управления Vesta:

  1. Пакеты. Здесь настраиваются шаблоны с ограничениями, назначаемые учётным записям (их может быть несколько). Честно говоря, смысла в них мало, потому что Веста не доросла до панели управления полноценного хостинга.
  2. IP. Настройка сетевых карт сервера. Лучше не трогать.
  3. Графики. Раздел, где должны рисоваться красивые графики использования памяти, пропускной способности сетевых интерфейсов, нагрузки на базу данных. На практике ни разу не замечал, чтобы они показывали что-то, имеющее отношение к действительности. Возможно, это я один такой везучий.
  4. Статистика. Просто полезная статистика, в пояснениях не нуждается.
  5. Журнал. Операции, проводимые в панели управления, можно отследить тут.
  6. Обновления. Можно узнать версии основных компонентов Весты.
  7. Фаервол. Удобная настройка файрвола iptables. Разработчики – грамотеи.
  8. Сервер. Здесь можно остановить или перезапустить важные службы, а также настроить. Честно говоря, не советую настраивать службы через Весту, потому что иногда при сохранении она превращает файлы конфигурации буквально в кашу. Не знаю, с чем это связано, наблюдал на нескольких серверах. Вкладку лучше использовать только для перезапуска служб.
  9. USER. Добавление новых пользователей и управление существующих.
  10. WEB. Настройка сайтов. Самая важная вкладка, из-за которой Веста и нужна. О ней будет попозже.
  11. DNS. Настройка записей домена, если VPS выступает в роли DNS-сервера.
  12. MAIL. Настройка почтового сервера. В той конфигурации, что я вам рекомендую, страница бесполезна.
  13. DB. Вторая по важности после WEB вкладка, позволяет быстро создать новую базу данных.
  14. CRON. Крайне полезная вкладка, позволяющая настроить выполнение команд на сервере через заданные промежутки времени.
  15. BACKUP. Здесь можно создать и загрузить бекапы.

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

1) Через Весту нельзя редактировать расширенные настройки. Возможность есть, но работает плохо. Например, на вкладке Сервер можно открыть настройки служб, где в удобных текстовых полях записаны какие-то значения. Если их изменить, не факт, что они сохранятся. А если нажать Дополнительные опции и попытаться отредактировать появившийся файл конфигурации вручную, служба может перестать запускаться, потому что строчки окажутся не там, где должны быть. Например, повторно добавиться в конец файла. А еще может открыться файл конфигурации от другой версии, по каким-то причинам оставшийся на сервере. Лучше самому делать тонкую настройку, редактируя файлы конфигурации через mcedit (как именно, покажу дальше).

2) Разработчики VestaCP имеют своё собственное мнение на счёт того, какой софт должен ставиться вместе с панелью. Они написали отдельные скрипты для нескольких дистрибутивов Linux, подгружающиеся с их сайта во время установки. По их логике, если в Ubuntu 16.04 по команде apt install php ставится PHP версии 5.6, то так тому и быть. И не важно, что потом вместо 5.6 появится 7.0, а в репозиторий добавится ещё и php7.1, устанавливаемый командой apt install php7.1 – судя по комментариям на официальном форуме, такой ситуации не может быть в принципе.

Ещё веселее с поддержкой Ubuntu 16.10 – из-за ошибки в скрипте установки половина софта просто-напросто не устанавливается. На момент написания этой инструкции упоминание ошибки висит на официальном форуме Весты месяц, одна-единственная строчка с ошибкой до сих пор не исправлена. Чтобы не быть голословным, покажу часть скрипта установки софта для Убунты по адресу http://vestacp.com/pub/vst-install-ubuntu.sh:

VestaCP не поддерживает Ubuntu 16.10

    VestaCP не поддерживает Ubuntu 16.10

Если следовать логике скрипта установки, то все дистрибутивы Убунты делятся на Ubuntu 16.04 и остальные. Вот только Ubuntu 16.10 – не остальные. В её репозиториях нет ни apache2.2-common, ни php5-fpm и другого устаревшего софта. Без редактирования скриптов установки работающий с VestaCP веб-сервер на Ubuntu 16.10 не получить.

3) Удобный инструмент управления базами данных phpMyAdmin, который ставит скрипт установки Весты, может просто не заработать.

4) Способов «выстрелить в ногу» в Весте выше крыши. Например, ни в коем случае нельзя удалять шаблон default на странице Пакеты, в противном случае вы познаете боль и страдания.

Несмотря на недостатки, среди панелей управления лучше Vesta Control Panel ничего нет. Бесплатные альтернативы Webmin, Froxlor, ajenti недостаточно автоматизируют управление сервером и сложнее в настройке, а у платного ISP Manager свои особенные проблемы.

15. Установка дополнительного софта

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

Устанавливается командой sudo apt install memcached php-memcache

2. Littleutils. Нужен для работы плагина CW Optimizer, который сжимает фотографии, загружаемые на сайт. Оптимизация изображений – один из 101 способов улучшения позиций в поисковых системах и привлечения посетителей (никто не любит медленную загрузку страниц). Лучше начать оптимизировать фотографии уже сегодня.

Зайдите на официальный сайт littleutils. Скачайте все новые deb-пакеты из папки littleutils-debian-amd64 (64-битная Убунта) или littleutils-debian-i386 (если 32-битная). Разрядность Убунты можно узнать командой dpkg --print-architecture

Затем по ftp загрузите сохранённые файлы в любую папку на сервере (например, /home/admin/tmp/littleutils).

Установите зависимости, без которых littleutils не установится:

sudo apt-get install gifsicle pngcrush lzip libpng12-0 libpng12-dev libjpeg-progs p7zip-full lzop lbzip2 pigz plzip python-rarfile lzma-alone libpng16-16

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

sudo apt-get -f install

Затем собственно littleutils:

cd /home/admin/tmp/littleutils
sudo dpkg -i *.deb

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

3. Midnight Commander. Это файловый менеджер, похожий на Total Commander, FAR или, если кто помнит, Norton Commander.

Команда установки:

sudo apt install mc

После установки запустите коммандер командой mc и проведите первоначальную настройку: в меню Options нажмите Configuration и поставьте галку на пункт Use Internal Edit:

Настройка Midnight Commander
Настройка Midnight Commander

Сохраните настройки кнопкой OK, затем выйдите из MC кнопкой F10 и запустите коммандер снова, на этот раз командой sudo mc и повторите настройку.

Эта неочевидная опция сильно упростит жизнь во время редактирования файлов конфигурации. Она позволит временно скрывать с экрана текстовый редактор коммандера mcedit, переключаясь на консоль. Например, когда будете редактировать конфигурацию Nginx, вы сможете отредактировать файл, сохранить его кнопкой F2, затем скрыть редактор сочетанием клавиш Ctrl+O и ввести команду в консоли:

sudo service nginx configtest

Если будет такой результат:

Настройка VPS 16

То с файлом всё отлично и можно перезагружать сервер, окончательно применяя новые настройки:

sudo service nginx restart

Если же появится сообщение о проблемах, можно нажать Ctrl+O и сразу поправить нужную строчку, не тратя время на переоткрытие файла.

Во многих инструкциях советуют редактировать файлы с помощью текстовых редакторов vi или nano. Консоль – не всегда удобно, зачем усложнять себе жизнь ещё больше? На мой взгляд, проще и быстрее в MC зайти в нужную папку, выбрать файл и нажать F4, чтобы открыть редактор, который можно скрыть в любой момент.

16. Как установить WordPress

1. Прежде чем приступить к установке сайта на Вордпресс, создайте отдельную базу данных на вкладке DB, нажав зеленую кнопку «+»:

Настройка VPS 10

Желательно придумать пароль длиннее, чем предлагает генератор VestaCP.

2. На вкладке WEB добавьте сайт кнопкой «+»:

Добавление сайта в VestaCP
Добавление сайта в VestaCP

Пройдусь по порядку по всем пунктам при добавлении нового домена/сайта:

Домен: адрес сайта. Если домен пока не купили, укажите тот, который планируете купить. В файле hosts компьютера (и сервера тоже в папке /etc/hosts) можно связать домен и IP-адрес сервера, чтобы вы уже могли пользоваться сайтом по выбранному адресу.

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

Поддержка DNS: так как VPS не работает как DNS-сервер, нужно снять галку.

Поддержка почты: тоже снять галку, потому что на сервере будет только Exim для отправки писем, VPS в качестве почтового сервера не подходит по той же причине, что и поддержка DNS.

Следующие пункты появятся при нажатии «Дополнительные опции»:

Алисы: дополнительные адреса, с которых перенаправлять на основной домен.

Поддержка SSL: поддержка шифрования. Современные сайты должны поддерживать защищённый протокол https, здесь сомнений быть не может. После включения опции нужно отметить и «Поддержка Lets Encrypt», чтобы использовать бесплатные сертификаты Let’s Encrypt. После сохранения настроек нужно повторно поставить галку на «Поддержка Lets Encrypt», потому что с первого раза сертификат может не сгенерироваться.

Учтите два момента:

  1. Нельзя получить сертификат на домен или поддомен, если в A-записях домена указан IP другого сервера. Это сделано для того, чтобы никто, кроме владельца домена, не смог получить SSL-сертификат.
  2. Генерация ключей Let’s Encrypt через Весту работает через раз. Может не работать, придётся воспользоваться сторонними утилитами.

Статистика сайта: включение встроенной системы статистики. В большинстве случаев лучше не включать, чтобы не нагружать сервер.

Дополнительный ftp: создание аккаунта ftp специально для работы только с папкой, где будет находиться сайт. Даёт ощущение ложной безопасности – мол, дадите только пароль от этого сайта и до других файлов никто не доберётся. На самом деле это не так, VestaCP не подходит организации хостинга с полностью изолированными друг от друга сайтами и пользователями.

3. Когда создадите сайт на вкладке WEB, не торопитесь уходить. Вам нужно снова зайти в настройки сайта (кнопка «Редактировать» при наведении мыши на пункт меню. Появятся новые настройки – выбор шаблонов Web и Backend:

Настройка VPS 11Шаблон Web в VestaCP отвечает за набор настроек Nginx, специфичных для каждой из популярных CMS. Шаблон Backend отвечает за настройку связи между веб-сервером и PHP-интерпретатором.

Выберите Шаблон Web – wordpress, а Шаблон Backend – socket (связь через сокеты работает быстрее связи через порты). Если галка с «Поддержка Lets Encrypt» оказалась снята, поставьте снова. Нажмите Сохранить и снова откройте настройки сайта и поставьте Шаблон Web – wordpress2 и снова сохраните настройки. Почему не выбрать сразу шаблон wordpress2? Ну, я говорил, что VestaCP – глючная штука, это одна из проблем – правильный файл конфигурации для WordPress не генерируется корректно с первого раза.

Обновление от 4.04.2017: Сначала сгенерируйте Let’s Encrypt ключи, потом выбирайте шаблон Web wordpress2, Backend – socket. Или, если SSL не нужно, выбирайте шаблоны wordpress2, socket и сохраняйте настройки.

4. Запустите Putty, зайдите под пользователем admin.

Выполните команды по очереди:

cd /home/admin/tmp/
wget https://ru.wordpress.org/latest-ru_RU.zip
unzip latest-ru_RU.zip -d /home/admin/web/имя_вашего_домена/public_html/
mv /home/admin/web/имя_вашего_домена/public_html/wordpress/* /home/admin/web/имя_вашего_домена/public_html/
rm latest-ru_RU.zip
rm -r /home/admin/web/имя_вашего_домена/public_html/wordpress
sudo service nginx restart

5. Сайт уже должен заработать. Зайдите через браузер по адресу https://адрес_сайта, откроется страница установки:

Первоначальная настройка WordPress
Первоначальная настройка WordPress

Если зайти по обычному протоколу http, придётся в панели управления WordPress заходить в Настройки – Общие и менять значения в полях Адрес WordPress (URL) и Адрес сайта (URL) с обычного http на https, чтобы CMS поняла, что приоритет у защищённого протокола.

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

  • Имя базы данных – имя той базы данных, что создали в первом шаге.
  • Имя пользователя – имя пользователя к базе данных из первого шага.
  • Пароль – думаю, понятно, что это пароль к базе.
  • Сервер базы данных – так как база данных на том же сервере, оставляйте «localhost».
  • Префикс таблиц – введите что-нибудь случайное.

6. На следующем этапе нужно указать название сайта, имя пользователя-администратора сайта и ваш e-mail:

Настройка VPS 13

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

7. Откроется панель управления сайта:

Настройка VPS 14

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

17. Установка и настройка необходимых плагинов WordPress

Все плагины ставятся сразу из админки. Достаточно пройти в раздел Плагины – Добавить новый и ввести имя плагина в поле поиска.

CW Image Optimizer. Плагин, оптимизирующий каждую фотографию, загружаемую на сайт. В настройке не нуждается. Достаточно было установки Littleutils из прошлого шага. Хочу подчеркнуть – все альтернативы этого плагина платные. Есть разве что EWWW Image Optimizer, но он плохо оптимизирует.

DCO Russian Fixes – плагин для транслитерации имён файлов и ссылок и корректировки формата дат. После установки и активации в настройке не нуждается.

SSL Insecure Content Fixer (Фильтр небезопасного содержимого SSL) – делает все ссылки на сайте ведущими на https-версию вместо http. Работа защищенного соединения HTTPS влияет на ранжирование в поиске Гугла, нужно по-максимуму использовать эту возможность. Рекомендую после установки плагина зайти в раздел Настройки – Небезопасный контент SSL и переключить плагин на режим Виджеты, чтобы все ссылки страницы вели на защищённые версии.

iThemes Security – плагин для повышения уровня безопасности. После установки и активации в верхней части панели управления появится кнопка «Получите бесплатно API ключ» – нажмите и получите его. Настройки iThemes Security смотрите ниже в отдельной главе.

Autoptimize – для объединения всех .css и .js файлов темы и плагинов в один, чтобы сократить количество запросов к серверу. Пока протокол HTTP/2 не шибко актуален, для ускорения загрузки страниц можно экономить запросы. Я перепробовал все подобные плагины, Autoptimize – самый корректный, он совместим с большинством тем WordPress. После установки и активации плагина зайдите в его настройки и включите все три вида оптимизации: HTML, CSS и JS.

W3 Total Cache – самый лучший в мире плагин кэширования. С Nginx отлично дружит, после установки и настройки сайт будет летать. Выделил настройку в отдельную главу. Ничего сложного, нужно просто пробежаться по пунктам.

Другие полезные плагины можете посмотреть в моих обзорах плагинов.

18. Настройка iThemes Security

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

Основные настройки:

  • Тип журнала событий – Только в файле, чтобы база данных не росла в размере.
  • Скрыть меню безопасности в админ панели – поставьте галку, чтобы убрать не шибко нужный пункт.

Заблокированные пользователи:

  • Включить черный список от сайта HackRepair.com – поставьте галку.

Local Brute Force Protection:

  • Автоматически запретить пользователя «admin» – поставьте галку, чтобы каждый бот и умник, пытающийся зайти в вашу панель управления под самым банальным во Вселенной логином, получал автоматический бан.

SSL:

  • Нажмите Enable в этом блоке настроек. Потом зайдите в его настройки и отметьте SSL для консоли управления, чтобы панель управления работала только по HTTPS.

Тонкая подстройка системы:

  • Нажмите Enable, чтобы включить блок настроек. Затем в настройках поставьте галку на опциях Защита системных файлов, Отключить просмотр каталогов, Отключить PHP в папке Uploads, Disable PHP in Plugins, Disable PHP in Themes. Последние три опции могут поломать работу некачественно написанных шаблонов оформления и плагинов, так что поможет выявить подобные поделия.

Подстройка WordPress:

  • Поставьте галки на Remove the Windows Live Writer header, Remove the RSD (Really Simple Discovery) header, Уменьшить спам в комментариях, Отключить сообщение об ошибке при неудачной попытке входа, Отключает архив автора для пользователя, у которого нет записей.
  • Если не пользуетесь программой WordPress на Android, поставьте опцию XML-RPC в режим Отключить XML-RPC.
  • REST API – в Restricted Access.

19. Настройка W3 Total Cache

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

I. Кэширование PHP с помощью технологии OPCache. Компиляция скриптов в более быстрый код, ускоряет их выполнение минимум в 2 раза. Выбор веб-сервера на работу OPCache не влияет, это настройка интерпретатора PHP. Как включить, расскажу в отдельной главе ниже.
II. Кэширование средствами CMS. Благодаря плагинам кэширования WordPress типа W3 Total Cache или WP Super Cache результат работы скриптов в виде страничек сайта отдаётся не только веб-серверу, но и сохраняется в виде статичных html-файлов. Самый предсказуемый, управляемый вид кэширования. При первом посещении страничка откроется медленно (как обычно), при последующих – очень быстро, как и все статичные файлы, если используется Nginx. При использовании Apache страницы тоже станут открываться шустрей, но по сравнению с Nginx прирост мал.
III. Кэширование с помощью Varnish или любого другого кэширующего прокси. Nginx и Apache можно настроить так, чтобы вместо обращения к интерпретатору страница подгружалась из промежуточного кэша, если она там есть. Если мне кто-нибудь объяснит, зачем нужен этот велосипед, буду весьма признателен. Ни одного плюса в подобной прослойке не вижу, потому что см. далее:
IV. Кэширование средствами Nginx. Сам веб-сервер тоже может сохранять готовые страницы и отдавать посетителям. Благодаря такой работе сайт будет открываться очень, очень быстро. Особенно если папку с кэшем расположить в оперативной памяти сервера.
К сожалению, в отличии от кэширования с помощью WordPress, Nginx будет отдавать посетителям старые странички до тех пор, пока файлы кэша не будут удалены. Раньше можно было управлять очисткой с помощью плагина WordPress Nginx Helper, но в последних бесплатных версиях веб-сервера разработчики удалили модуль fastcgi_cache_purge. Настроить кэширование в Nginx для корректной работы всё же можно, но это тема отдельной статьи. В большинстве случаев такое кэширование не нужно, достаточно кэширования средствами CMS.
V. Браузерное кэширование. Можно и нужно настроить веб-сервер так, чтобы браузер кэшировал статичные файлы (фотографии, .css и .js файлы) минимум на неделю, чтобы лишний раз не загружать с сервера одно и то же. Включается легко в том же W3 Total Cache, польза неоспорима.
При использовании Apache II и III виды кэширования не смогут быть эффективными, потому что обработкой запросов будет заниматься медленный веб-сервер.

Итак, как же ускорить с помощью W3 Total Cache? Установите этот плагин, зайдите в его настройки на страницу General Settings:

Раздел Page Cache:

  • Галку на Enable, настройку Page Cache Method на Memcached.

Раздел Database Cache:

  • Галку на Enable, настройку Database Cache Method на Memcached.

Раздел Object Cache:

  • Галку на Enable, настройку Object Cache Method на Memcached.

Раздел Miscellaneous:

  • Снимите галку с Enable Google Page Speed dashboard widget, этот инструмент может ввести в заблуждение.
  • Снимите галку с Anonymously track usage to improve product quality, незачем отсылать информацию о своём сайте.

Страница настроек Page Cache:

  • Поставьте галки в разделе General на опциях Cache feeds: site, categories, tags, comments, Cache SSL (https) requests.
  • В разделе Advancedесли будете использовать популярный плагин Yoast SEO, измените содержимое поля Never cache the following pages: на
    wp-.*\.php
    index\.php
    ([a-z[a-z0-9_\-]itemap(_index)?(-)?([0-9[0-9].(xml(\.gz)?|xsl)$

Страница настроек Browser Cache (настройка кэширования в браузере):

  • Поставьте галки в разделе General на опциях Set expires header, Set cache control header, Set entity tag (ETag), Don’t set cookies for static files, Apply HTTP Strict Transport Security policy.
  • Поставьте галки в разделах CSS & JS, HTML & XML, Media & Other Files на опциях Set expires header, Set cache control header, Set entity tag (eTag), Disable cookies for static files.

Страница Extensions:

  • Выключите модули Fragment Cache и New Relic.

Подобных настроек достаточно, чтобы сайт стал открываться быстро. Не забудьте посмотреть следующую главу, чтобы подключить часть настроек Nginx, которые создали плагины iThemes Security и W3 Total Cache.

20. Настройка Nginx

Осталось совсем чуть-чуть: нужно сделать так, чтобы Nginx подключал настройки, сделанные плагинами iThemes Security и W3 Total Cache. Для редактирования файлов конфигурации Nginx нужны права суперпользователя, поэтому запустите Midnight Commander командой

sudo mc

и зайдите в папку /home/admin/conf/web:

Настройка VPS 17

Увидите два файла:

  1. nginx.conf – настройка сайтов, доступных по протоколу http.
  2. snginx.conf – сайты по протоколу https.

В nginx.conf настройки сайтов будут всегда. В snginx.conf только в том случае, если включали SSL при создании сайта в панели управления VestaCP. В принципе, вы можете редактировать эти файлы, но после этого при попытке добавить новый сайт через Весту конфигурационные файлы превратятся в кашу. Придётся сбросить все правки командой v-rebuild-web-domains admin yes.

Поэтому нужно создать отдельный файл с настройками, который подхватится nginx, и не будет мешать работе панели управления. Для этого в Midnight Commander в папке /home/admin/conf/web нажмите Shift+F4. Если до этого никогда не редактировали файлы через MC, появится выбор редактора. Выберите mcedit.

Вставьте туда вот такой код:

include /home/admin/web/имя_вашего_домена/public_html/*.conf;

Благодаря этой строчки будет подхватываться файл nginx.conf, который создается плагином W3 Total Cache и другими совместимыми с Nginx.

Если пользуетесь плагином SEO-оптимизации Yoast SEO, добавьте ещё это:

#Yoast SEO Sitemaps
location ~ ([^/]*)sitemap(.*).x(m|s)l$ {
rewrite ^/sitemap.xml$ /sitemap_index.xml permanent;
rewrite ^/([a-z]+)?-?sitemap.xsl$ /index.php?xsl=$1 last;
rewrite ^/sitemap_index.xml$ /index.php?sitemap=1 last;
rewrite ^/([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;
}

 

Нажмите F2 для сохранения файла, появится окно выбора имени файла. Введите nginx.имя_вашего_домена.conf_custom.

Потом Ctrl+O для скрытия MC и наберите в консоли для проверки конфига:

sudo service nginx configtest

Если всё ОК, перезапустите сервер для применения конфига:

sudo service nginx restart

Теперь ваш сайт защищён и кэширование работает нормально.

21. Настройка PHP-FPM

В Интернете полно инструкций о том, что можно редактировать в файле /etc/php/7.0/fpm/php.ini. Я лишь приведу парочку, которые в любом случае стоит изменить.

Для повышения безопасности:

[Session] session.use_strict_mode = 1

Для включения OPCache, о котором я писал выше:

[opcache]
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=7963
opcache.max_wasted_percentage=10

Обратите внимание – нужно убрать « перед строками. Ещё можете указать параметр opcache.validate_timestamps=0, если готовы перезагружать сервер после каждого обновления темы, плагинов и самого WordPress. Параметр отключает проверку изменения файлов PHP, придётся очищать вручную кэш OPCache.

После применения настроек перезагрузите Nginx и PHP-FPM командой:

sudo service nginx restart && sudo service php-fpm restart

22. Что дальше?

Файлы конфигурации, где сосредоточены все настройки, влияющие на производительность сервера:

  • Настройки веб-сервера Nginx хранятся в файле /etc/nginx/nginx.conf
  • Настройки PHP хранятся в файлах папки /etc/php/7.0/fpm/
  • Настройки сервера MySQL в /etc/mysql/my.cnf

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

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

Если у вас остались вопросы – спрашивайте в комментариях.

25 комментариев

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

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

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

  1. Максим

    Дмитрий, спасибо большое за инструкцию! Очень подробно и четко, вам с такими постами надо на Хабр и становиться там звездой! Рад что наткнулся на ваш блог.

    Вопроса 3:
    1. У меня сайт на WordPress, есть плагин старый который более не поддерживается (суть – для пустых рефереров не отдавать картинки, своя специфика) , при отключении nginx в панели весты – все работает. Возможно ли настроить кеш страниц также на апаче как это делает nginx и вообще велика ли разница между плагином wordpress super cache (полная статика HTML в папке) и nginx + расположение в кеше страниц ?

    Вопросы не совсем по теме статьи, но я в смятении:
    2. У меня есть 2 VPS от мировых лидеров, Scaleway (http://prntscr.com/f60mm0 ) + OVH ( http://prntscr.com/f60mqq ) . Везде стоит дефолтная Vesta (без mail / antivirus) php 5.6 + apache + nginx. На Scaleway меня не устраивает что на абсолютно одинаковом wordpress сайте (разносил для теста на 2 серва) скорость генерации страниц достигает 2 секунд (sic!) против 0.7 сек на OVH. Обе vps пустуют на время тестов, свежеустановленные и avg load ~ 0. В случае OVH в 2 раза меньше оперативки, всего 1 ядро против 4 от Scaleway, и вот такая подстава со скоростью.

    Я пытаюсь понять с чем связана эта катастрофа, и насколько я понимаю, вся разница в CPUbenchmark. На OVH это проц http://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+E5-2673+v3+%40+2.40GHz&id=2606 с показателем около 16900 на 12 ядер из них 1 мое , а в ScaleWay – http://www.cpubenchmark.net/cpu.php?cpu=Intel+Atom+C2750+%40+2.40GHz&id=2185 с показателем 3800 на 8 ядер из них «мои» = 4.
    Понимаю что скорее всего не корректно, но все же по логике:
    16900 / 12 = 1400 это реальная продуктивность той мощности которую мне выделяет OVH;
    3800 / 8 * 4 = 1900 это от Scaleway;

    Сам вопрос – означает ли что главный параметр для скорости работы WordPress – процессор, и если да, то как их выбирать? Исходя из данных по моему случаю, имеет смысл брать 1 ядро с максимальными ггц и cpubench?

    3. Где порог разгона WordPress железом? Условно говоря, на VPS за 5$ скорость «из коробки» будет в 0.5 сек в случае с моим сайтом. На Xeon за 10000$ будет 0.01 ? Объясню почему важно для меня: я подумываю брать сервер на Hetzner за 40 евро с cpubench до 10000 или же брать VPS на OVH где всего 2 ядра ( http://prntscr.com/f60tzr ), но cpubench сразу 18000. Мне нужна скорость на уровне 0.2 сек и я хочу понять какие ресурсы мне нужны и где порог оптимизации сервера, а где уже порог оптимизации самого движка.

    Небольшое дополнение к статье:
    1. На днях нашел плагин disable emoji который отключает лишние бесполезные JS весом в 100+ кБ и еще ряд мелочей, что дает небольшой прирост. Также сам шаблон заменил на статику вместо большого количества запросов уровня «hostname» «sitetitle».
    2. Для удобного редактирования и перемещения-закачивания файлов я бы порекомендовал всем новичкам Winscp где можно удобно редактировать все файлы, привычный вид а-ля TotalCommander + возможность всегда выполнить через putty команды + наличие уже готовых паттернов для основных задач.

    Ответить

    1. Спасибо вам за столь лестный отзыв.
      1. Nginx может отдавать статику без значительной нагрузки на процессор. Apache так не может в принципе. Так что лучше Nginx + статика через любой плагин кэширования. А ещё лучше дополнительно включить собственное кэширование Nginx.
      2. Если посещать сайт будете только вы – да, стоит брать самый быстрый одноядерный процессор :) В остальных случаях нужно распараллеливание на всех этапах генерации страниц. Для открытия сайта на WP на сервере проделывается множество действий: выборка из базы данных, запуск скриптов ядра WP и плагинов, загрузка статичных файлов и, возможно, что-то ещё. В идеале это всё нужно распределить по нескольким серверам, а для статики подключить CDN. Ведь если запрос сделают одновременно не один, а два, пять, сто и так далее человек, процессору придётся обработать каждый запрос. Сайт будет открываться не за 10 мс, а значительно дольше, чего можно избежать распределением запросов по нескольким ядрам/серверам и грамотно кэшируя данные.
      3. Не могу ответить на ваш вопрос, потому что не знаю, что у вас за сайт. Может быть, достаточно все страницы перевести в статику, настроить Nginx и всё будет открываться быстро даже на самом дешёвом тарифе Scaleway. А если у вас интернет-магазин на WooCommerce с десятками тысяч товаров и посещаемостью в 10 000 человек в сутки, тогда нужно купить несколько серверов для быстрой работы с базой данных и настроить кэширование всего и вся. Расскажите подробней, что у вас за сайт и какая посещаемость ожидается.
      Насчет дополнений:
      1. Да, это отличные способы ускорить сайт.
      2. Согласен, хороший инструмент.

      Ответить

  2. Андрей Мейкер

    Подскажите пожалуйста, что это за ошибки при входе в phpMyAdmim http://joxi.ru/MAjbn9wtnL85Ae. В начале после установки по Вашему методу такого не было.

    А потом подобное вылазит уже при входе http://joxi.ru/bmo0y9wCaXQX2y

    Что это может быть? Как исправить?
    Заранее спасибо!

    Ответить

    1. Это предупреждение о том, что используемые в phpMyAdmin функции не будут работать в следующей версии PHP.
      Возможно, с Вестой установилась устаревшая версия phpMyAdmin. Так как это нестандартная ситуация, рекомендую продублировать вопрос на форуме Весты: https://forum.vestacp.com/viewforum.php?f=32

      Ответить

  3. Veselchak (Артём)

    Доброго времени суток Дмитрий!

    У меня хостинг от hostland использует ОС CentOS 7, тип сервера nginx в/1.10.2, БД MySQL.
    Стоит ли производить настройки для NGINX описанные в пункте 20?

    Ответить

  4. Андрей Мейкер

    Подскажите пожалуйста по поводу Поддержки SSL:
    Выставляю настройки, как у Вас и написано:
    http://joxi.ru/Drlbx9etppKE2P
    но после сохранения вылазит такая ошибка:
    http://joxi.ru/4Ak8X9Ytvvjzrq
    кстати первый домен добавился и работает, а у остальных эта ошибка

    Ответить

    1. Попробуйте так:
      1. Сначала поставьте шаблоны Default, сохраните.
      2. Потом снова откройте настройки, поставьте галку на SSL, сохраните.
      3. Потом снова настройки, галку на Let’s Encrypt, сохраните.
      4. И только потом рекомендуемые мной шаблоны.

      Ответить

          1. Андрей Мейкер

            Так нужно реальный поддомен создавать?
            Или достаточно у регистратора домена прописать А-запись со звездочкой * с перенаправлением на сервер?
            Запись то есть, а вот самого поддомена не делал.
            Или это не то?

            Ответить

            1. Что вы подразумеваете под термином «реальный поддомен», не знаю, поэтому отвечу так: звездочки должно хватить, чтобы все поддомены вели на ip этого сервера.
              Судя по официальному форуму Весты, такая проблема есть не только у вас. Для обхода ошибки вы можете сгенерировать ключи с помощью посторонних утилит (инструкций в Интернете полно) и вставить их содержимое в соответствующие поля в панели управления, оставив галку на SSL, убрав с Let’s Encrypt. Или даже просто сгенерировать ключи с помощью ссылки «Сгенерировать CSR запрос», но тогда при заходе на сайт браузеры будут ругаться.

              Ответить