Поскольку сегодня многие люди используют виртуальный хостинг, мы решили привести серию учебных руководств, которые помогут вам настроить свой собственный виртуальный частный сервер (VPS), все необходимые сервисы для обслуживания WordPress-сайта, а также расскажем вам, как оптимизировать его скорость и безопасность.
Почему виртуальный хостинг – не самый лучший вариант?
- Ваша сборка WordPress должна бороться за ресурсы сервера
- Вы не можете ускорить WordPress самостоятельно
- Вы не можете защитить WordPress самостоятельно
Единственное, что вы должны понять – то, что есть разница между виртуальным хостингом и управляемым хостингом; первый – это в основном просто каталог, который вы имеете на сервере, а также FTP-доступ и некоторая панель управления (обычно Plesk или cPanel).
Последний – это базовая консоль, которая позволяет вам установить домен, получить доступ к базе данных, а также выполнить некоторые другие вещи – все остальное выполняется за вас хостинг-компанией. Есть много таких хостингов: WPEngine, Pagely, Flywheel, SiteGround – все они помогают сделать ваш сайт оптимизированным и обновленным, вам не нужно будет беспокоиться об этом.
Почему в данной серии статей мы не рассматриваем управляемые WordPress-сборки? Во-первых, поддерживая сайт самостоятельно, вы узнаете массу всего, что требуется для успешного ведения WordPress-сайта. Вы узнаете, как установить и оптимизировать все детали сайта; начиная с Linux (операционная система) и заканчивая Nginx (веб-сервер), FTP, SSH, базой данных; наконец, вы узнаете, как обслуживать WordPress, как оптимизировать ресурсы, как поднять безопасность, а также как добиться лучшего времени отклика.
Если вы – такой тип людей, которые предпочитают изучать новый материал и играться с параметрами, стараясь улучшить производительность сайта, вам обязательно пригодятся данные статьи.
Содержание
- Подготовка
- Создаем свой VPS
- Генерация SSH-ключа
- Создание пользователя
- Повышение безопасности
- Настройка Nginx
- Настройка PHP
- Настройка базы данных
- Настройка FTP
- Настройка почтовой программы
- Заключение
Подготовка
Содержание статьи:
Вы не можете управлять сервером с помощью традиционного метода щелчков мышью, поэтому вам понадобится использовать командную строку (или терминал, если вы используете Mac), а также иметь некоторые базовые навыки работы с Linux – мы будем использовать сервер на базе Ubuntu. Наконец, у вас должен быть аккаунт в DigitalOcean. Вы можете также работать и с другими провайдерами облачного хостинга, однако вам понадобится адаптировать некоторые шаги – что, в принципе, не составит труда.
Также обратите внимание, что все команды терминала начинаются со знака доллара ($).
Создаем свой VPS
Создание сервера – достаточно простой процесс, который состоит из нескольких кликов мышью. Заходим в свою консоль DigitalOcean, щелкаем по «Create Droplet» (дроплетами они называют свои виртуальные серверы).
Теперь вам нужно будет выбрать несколько опций:
- Hostname: может быть доменом, субдоменом или произвольным словом, как, к примеру, «my-server». Я выбрал «playground».
- Region: вам нужно выбрать регион, который является самым близким к вашим целевым посетителям. Я выбрал Нью-Йорк, поскольку он находится на разумном расстоянии от США и Европы – двух мест, откуда идет основной поток посетителей.
- Image: позволяет выбрать дистрибутив Linux, который вам больше всего подходит. Я использую Ubuntu (первый вариант), поскольку это – наиболее известная и широко поддерживаемая платформа.
- SSH Key: как вы можете видеть, я уже загрузил свои ключи, и я рекомендую вам сделать то же самое. В следующем разделе я расскажу вам, как это осуществить.
Генерация SSH-ключа
SSH-ключ – это пара двух зашифрованных файлов, один из которых является публичным, а другой – приватным (публичный – это замок, в то время как приватный – это ключ). Если вы зайдете в оболочку сервера и загрузите приватный файл в корректное место, сервер не будет спрашивать ваш пароль, поскольку он автоматически сравнит два файла и позволит вам войти в случае их соответствия.
Для пользователей Windows: вы должны использовать PuTTY для подключения к серверу, и он также поддерживает генерацию пары ключей.
Чтобы сгенерировать пару ключей, перейдите к терминалу и введите следующие команды:
$ cd ~/.ssh $ ssh-keygen -t rsa -C “your.email@your-domain.com”
Вас попросят ввести название ключа, а также пароль, который надо оставить пустым (просто нажмите Enter) в данный момент, однако если вы захотите узнать об этом больше, вы можете перейти к следующей статье, в которой разъясняется этот дополнительный шаг. В качестве названия ключа введите любое слово или оставьте его по умолчанию, однако учтите, что в таком случае будет перезаписан существующий дефолтный ключ, если он уже был создан.
Теперь, когда ваш SSH-ключ сгенерирован, вы можете вернуться обратно к форме создания дроплета и щелкнуть по пункту «Add SSH Key», что откроет текстовую область, где вы можете вставить публичную часть ключа (файл, который заканчивается на .pub).
(Чтобы получить контент .pub файла, вам нужно либо открыть его в текстовом редакторе, либо выполнить $ cat playground.pub в терминале).
Если все настройки сервера в порядке и SSH-ключ правильно загружен, щелкните по Create Droplet и подождите несколько минут – в итоге вы получите готовый работающий сервер.
Следующий пункт является необязательным, однако он позволяет сэкономить некоторое время при входе на сервер, поэтому он настоятельно рекомендован. Перейдите к папке .ssh с вашими ключами и создайте файл под названием config (без расширения), после чего добавьте к нему следующие строки:
Host Playground HostName 104.131.53.181 Port 22 User root IdentityFile /Users/Tomaz/.ssh/playground
Не забудьте изменить HostName на IP, который был вам предоставлен, а также IdentityFile на приватный ключ, который был сгенерирован. Сохраните файл и закройте редактор.
Вуаля! Теперь вы можете устанавливать SSH-соединение с сервером. Для этого просто введите:
$ ssh Playground
Вы войдете на сервер и увидите оболочку – среду, которую предлагает сервер для ввода команд (чтобы запустить программу, создать/изменить файл и т.д.).
Создание пользователя
Все, что мы делали до сих пор, предполагало, что мы выполняем действия на сервере в качестве «богоподобного» пользователя, который называется root. В действительности это – достаточно плохая, небезопасная практика, поэтому мы создадим нормального пользователя, который будет использоваться для входа на сервер.
На сервере выполняем следующие две команды:
$ groupadd admin $ adduser webmaster --ingroup admin
Вас попросят ввести пароль (курсор не будет перемещаться при вводе, просто нажмите Enter, когда все будет завершено) и некоторую дополнительную информацию, которую вы можете предоставить, а можете не предоставлять (это не обязательно).
Группа admin имеет больше привилегий, чем обычный пользователь на виртуальном хостинге, и эти привилегии уже сконфигурированы в Ubuntu. Однако группа по умолчанию не существует, поэтому мы должны ее сначала добавить.
Теперь, когда у нас есть свой пользователь, мы можем переместить SSH-ключ от root к нашему новому пользователю. Вот как это сделать:
$ mkdir /var/www/webmaster/.ssh $ mv /root/.ssh/authorized_keys /var/www/webmaster/.ssh/ $ chown -R webmaster:admin /var/www/webmaster/.ssh/
Что делают эти три команды:
- Создают директорию (каталог, если вы работаете с Windows)
- Переносят файл с ключами авторизации от root к пользователю
- Создают пользователя webmaster с правами владения файлом (пользователь получает к нему доступ).
Теперь пришло время обновить конфигурационный файл, который мы создали в предыдущей секции:
Host Playground HostName 104.131.53.181 Port 22 User webmaster IdentityFile /Users/Tomaz/.ssh/playground
После этого вернитесь обратно на свой сервер.
Повышение безопасности
Все наши серверы ежедневно сталкиваются со всеми типами атак, и одна из наиболее популярных атак – это брутфорс SSH-входа. Это достигается путем использования тысяч комбинаций имен пользователей и паролей, поэтому далее мы прекратим обращаться к такому подходу – ведь у нас теперь есть пара ключей, а значит нет никакой необходимости в паролях.
Есть конфигурационный файл, который нам нужно отредактировать:
$ sudo nano /etc/ssh/sshd_config
(Вас могут в данный момент попросить ввести пароль; введите пароль, который вы установили для пользователя webmaster).
В этом файле имеется много настроек, но нас будут интересовать только следующие из них:
PermitRootLogin no PasswordAuthentication no
Сохраните файл и выйдите из редактора, нажав ctrl+X, shift+Y и Enter. Чтобы изменения вступили в силу, вы должны перезапустить демона; делается это следующим образом:
$ sudo service ssh restart
Настройка Nginx
Теперь, когда безопасность в порядке, мы должны установить программы веб-сервера. Мы могли бы использовать Apache (я уверен, что вы слышали о нем), однако он ест много памяти и медленно обрабатывает запросы, поэтому вместо него мы воспользуемся Nginx.
Чтобы установить его, просто введите следующие команды:
$ sudo apt-get update $ sudo apt-get -y install nginx
Откройте браузер и введите IP-адрес сервера, чтобы убедиться в том, что все работает корректно. Вы должны увидеть стандартную страницу «Welcome to nginx», как на картинке ниже:
Достаточно просто, не правда ли?
Настройка PHP
Система WordPress написана на open source языке, который называется PHP. Мы должны настроить его на своем сервере, используя следующую команду:
$ sudo apt-get install -y php5-fpm php5-cli
PHP FPM – диспетчер процессов FastCGI, который обрабатывает PHP-файлы, чтобы система WordPress могла функционировать корректно. Это автономный процесс (или фоновое приложение – также именуемое как демон), к которому обращается наш веб-сервер (nginx), когда ему нужно обработать PHP-файлы.
Альтернатива, к которой вы, вероятно, уже привыкли – это модуль Apache. Однако проблема с данным подходом заключается в том, что этот модуль всегда включен, вне зависимости от того, должен ли Apache обслуживать статичный файл (допустим, изображение); т.е. этот модуль всегда активен, поэтому он напрасно тратит ресурсы сервера. В то время как в нашем подходе процесс вызывается только при необходимости.
Мы также установим интерфейс командной строки (или CLI) для PHP, т.е. мы сможем работать с PHP из нашей командной строки. Чтобы протестировать его, просто введите следующее:
$ php -v
Если вы видите данный экран, вы готовы к следующему шагу:
Настройка базы данных
У нас есть два варианта для выбора механизма базы данных: MySQL и MariaDB. Мы воспользуемся вторым вариантом, поскольку он является заменой первого, и его написал тот же самый автор.
$ sudo apt-get install -y mariadb-server mariadb-client
Вас дважды попросят ввести пароль пользователя root. Убедитесь в том, что вы выбрали сложный пароль и сохранили его в безопасном месте (я рекомендую использовать 1Password).
Чтобы протестировать, все ли в порядке, попробуйте подключиться к базе данных:
$ mysql -u root -p
Вы увидите окно запроса пароля, после ввода которого вы должны будете соединиться с базой данных:
Для выхода нажмите CTRL + D.
Настройка FTP
Я не являюсь особым поклонником FTP, однако WordPress, кажется, лучше всего работает именно с ним, поэтому у нас просто нет выбора – мы установим FTP в данном разделе.
Для начала нам нужно создать FTP-сервер (к которому мы будем подключаться через наш FTP-клиент). Мы будем использовать vsftpd, один из самых популярных FTP-серверов. Чтобы установить его, просто используйте apt-get, как в предыдущих случаях:
$ sudo apt-get install -y vsftpd
Чтобы протестировать его, откройте ваш FTP-клиент и подключитесь к серверу, используя ранее созданное имя пользователя и пароль (если вы следовали за руководством, то в таком случае имя пользователя – webmaster).
Существуют и другие настройки, однако мы рассмотрим их в следующих руководствах.
Настройка почтовой программы
Многие разработчики пропускают этот важный шаг в процессе установки своих серверов и используют стандартный вариант, когда сервер отправляет письмо напрямую на почту получателя.
Такой подход не слишком удачен по нескольким причинам:
- Письмо отправляется с минимально настроенными/неправильно настроенными заголовками
- Письмо зачастую помечается как спам
- Отправка может привести к сбою на стороне сервера, и вы, скорее всего, не заметите этого
Именно поэтому я являюсь сторонником установки демона почтовой программы, и мне нравится использовать sSMTP вследствие его простоты. Есть только один маленький файл, который надо сконфигурировать.
Для начала давайте установим его:
$ sudo apt-get install -y ssmtp
Во время установки конфигурационный файл находится по адресу /etc/ssmtp/ssmtp.conf. Его нам надо отредактировать:
$ sudo nano /etc/ssmtp/ssmtp.conf
Прежде, чем продолжить, я вам рекомендую создать отдельный почтовый ящик, который будет использоваться сервером для отправки писем – к примеру, server@your-domain.com. Запомните пароль, он вам понадобится для дальнейшего конфигурирования.
Или, что еще лучше, создайте учетную запись на Mailgun и используйте ее для отправки писем. С этим сервисом легко начать работу и он поддерживает 10k писем бесплатно в месяц. Вполне достаточное количество.
Появится уродливый текстовый редактор – убедитесь в том, что параметры в файле выглядят следующим образом:
root=postmaster@your-domain.com mailhub=smtp.gmail.com:587 AuthUser=server@your-domain.com AuthPass=password UseTLS=YES UseSTARTTLS=YES rewriteDomain=your-domain.com
Сохраните файл и закройте его.
Последний шаг: тестирование конфигурации, работает ли она должным образом. Сделать это можно, просто введя следующую команду:
$ echo test | ssmtp you@your-domain.com
Это приведет к отправке тестового письма, в котором будет содержаться только одно слово «Test».
Заключение
Теперь у вас есть свой собственный VPS-сервер, который содержит в себе все основные компоненты, требуемые нам для установки WordPress. Установку WP на этот сервер мы раскроем в следующих статьях. В настоящее время сервер не несет в себе никакой ценности, однако он понадобится нам для следующих руководств.
Источник: codeable.io
Источник: oddstyle.ru