Хостинги

Шустрый WordPress на Ubuntu 18.04 с веб-сервером OpenLiteSpeed

В предыдущей статье ”Шустрый WordPress на AWS Lightsail с кешированием Redis” я рассказывал как настроить веб-сервер Nginx на максимальную производительность в связке с MySQL и Redis, но сегодня решил её обновить и заменить на ещё более быстрый сервер OpenLiteSpeed.

О нём так же до этого писал — ”5 причин использовать OpenLiteSpeed вместо Nginx”. Это бесплатный открытый веб-сервер, легковесный и с дружественным веб-интерфейсом. Вы сами сможете легко создавать веб-сайты и управлять ими.

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


Итак, в этом уроке мы установим на Ubuntu веб-сервер OpenLiteSpeed, базу данных MySQL 8 и PHP 7.3.

Подготовка

В качестве хостинга я выбрал AWS Lightsail. Почему именно он?

Во-первых, относительно невысокая стоимость. За $3.5 в месяц (около 2.700 рублей в год) вы получаете полноценный VPS с 512 Мб оперативной памяти и 20 Гб места на SSD диске. На таком VPS при желании можно размещать 2-3 небольших сайта. Похожие хостинг-планы есть и у Digital Ocean например.

Во-вторых, есть потенциал расширения функциональности сайта за счет сервисов амазона (например возможность хранить данные в облаке с AWS S3 или размещать статические файлы на AWS CloudFront).

Я не буду подробно останавливаться на этапе регистрации, будем считать, что у вас уже есть активная учетная запись Amazon. После этого просто перейдите в панель управления и нажмите «Create instance».

Экран создания нового образа ОС
Экран создания нового образа ОС

Для этого урока я буду использовать Ubuntu 18.04 LTS, так как он прост в настройке по сравнению с тем же FreeBSD. Буковки LTS в названии означают стабильную версию, то есть у вас будет не самое новое, а старое, но проверенное ПО.

Здесь очень заманчиво использовать готовый шаблон «WordPress 5.2.2-3», но не спешите! Если вы такой же жадный как и я, пожадничали и взяли самый дешевый хостинг-план за $3.5, то на 512 мегабайтах оперативки вам будет ооооочень несладко. Их едва хватает, чтобы запустить MySQL/Apache/PHP. А со временем начнет отваливаться база данных из-за нехватки памяти.

Поэтому первым шагом стоит:

  • Обновить систему
  • Увеличить файл подкачки
  • Установить и оптимизировать MySQL под скромное «железо»

По-хорошему, если деньги позволяют и вы выбрали хостинг-план получше, с 1-2-4 гигабайтами ОЗУ, этого вполне должно хватить и подкачку можно не добавлять. Но мы легких путей не ищем, будем все на 512 Мб делать.

Обновление системы

Итак, вы создали образ ОС Ubuntu, поздравляю! Нажимаем «Connect using SSH», откроется окно, куда мы и будем вводить команды. Первым делом обновляемся:

sudo apt-get update
sudo apt-get upgrade

Ждем несколько минут, пьем кофе пока все пакеты скачаются и установятся. Вот собственно и всё.

Увеличиваем файл подкачки

Вначале стоит проверить, а использует ли система подкачку в данный момент или нет?

sudo swapon --show

Если команда ничего не вывела, значит в данный момент подкачка не настроена. Проверяем это командой free:

free -h

Swap показывает нулевой размер, 368 Мб доступно
Swap показывает нулевой размер, 368 Мб доступно

Общее правило для подкачки — если у вас < 2 Гб оперативной памяти, размер файла подкачки должен быть текущий размер ОЗУ × 2, в нашем случае 1 Гб. Создаем нужный файл,

sudo fallocate -l 1G /swapfile

Проверяем, что файл действительно создался,

ls -lh /swapfile

Показывает -rw-r--r-- 1 root root 1.0G May 31 20:08 /swapfile, значит что место под файл успешно выделено. Теперь нужно поменять права на файл, чтобы его мог открыть только суперпользователь,

sudo chmod 600 /swapfile

И пометить файл как файл подкачки, дать возможность системе использовать его.

sudo mkswap /swapfile
sudo swapon /swapfile

Теперь команда free -h должна показать наличие подкачки размером 1 Гб.

Теперь появился swap, размером 1 Гб
Теперь появился swap, размером 1 Гб

Готово! Осталась лишь пара нюансов. Вносим изменения в fstab.

sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

И последнее изменение — по умолчанию, система начинает использовать swap при 60%-ой загрузке памяти. Для настольных компьютеров это неплохо, но у сервера это значение должно быть близким к нулю. Так как мы не хотим лишний раз нагружать диск.

sudo nano /etc/sysctl.conf

В самый конец файла добавляем:

vm.swappiness=10

Перезагружаем систему, убеждаемся что всё работает исправно, радуемся.

Установка и настройка MySQL 8

Версия MySQL 8 считается наиболее производительной на данный момент, но её нет в репозитории 18.04 по умолчанию. Скачиваем и настраиваем конфиги MySQL:

wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.14-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.14-1_all.deb

В окне настройки нужно просто выбрать “Ok”, всё остально оставляем по умолчанию.

Окно настройки пакета MySQL
Окно настройки пакета MySQL

Устанавливаем сервер MySQL.

sudo apt update
sudo apt-get install mysql-server -y

Появится окно выбора метода аутентификации, где лучше выбрать “Use Legacy Authentication Method”. Насколько я знаю, WordPress пока ещё не умеет аутентифицироваться по SHA256.

Окно выбора метода аутентификации
Окно выбора метода аутентификации

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

sudo nano /etc/mysql/my.cnf

Добавляем следующие строки в конец конфига:

[mysqld]

# other variables here
innodb_buffer_pool_size = 128M # (обычно 50%-70% от общего количества памяти)
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 1 # можно изменить на 2 или 0
innodb_flush_method = O_DIRECT

Нажимаем Ctrl+O, сохраняем файл и перезапускаем MySQL командой

sudo service mysql restart

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

Перед установкой веб-сервера нужно добавить официальный репозиторий Litespeed Tech:

wget -O - http://rpms.litespeedtech.com/debian/enable_lst_debian_repo.sh | sudo bash

Теперь можно установить OpenLiteSpeed с помощью apt.

sudo apt-get install openlitespeed

Данная команда скачает и установит стабильную версию 1.5.10 (последняя на момент написания статьи была 1.6.4). Это связано с тем, что в LTS-версии дистрибутива используются немного староватые, но проверенные версии. Если вы любите использовать самое новое ПО, имеет смысл обновить Ubuntu до 19.10, либо собрать веб-сервер вручную из исходного кода.

Теперь защищаем доступ к веб-серверу и устанавливаем пароль администратора.

sudo /usr/local/lsws/admin/misc/admpass.sh

Экран установки пароля
Экран установки пароля

После этого можно запускать веб-сервер.

sudo systemctl start lsws

Проверить состояние веб-сервера можно командой

sudo systemctl status lsws

Сервер запущен, но радоваться ещё рано. По умолчанию, AWS блокирует все порты кроме протокола HTTP (80) и SSH (22), нужно открыть вкладку “Networking” и вручную добавить правила для файрволла.

Добавленные порты 7080 и 8088
Добавленные порты 7080 и 8088

Откройте в браузере IP вашего сервера, с последующим 8088 на конце:

http://ip_адрес_сервера:8088/

Стандартная страница приветствия
Стандартная страница приветствия

Для доступа к панели администратора, используйте порт 7080:

http://ip_адрес_сервера:7080/

Страница входа в панель администрирования
Страница входа в панель администрирования

Установка PHP 7.3 и модулей

С помощью apt установим PHP и все обходимые модули:

sudo apt install lsphp73 lsphp73-curl lsphp73-imap lsphp73-mysql lsphp73-intl lsphp73-pgsql lsphp73-sqlite3 lsphp73-tidy lsphp73-snmp

После этого создадим символическую ссылку на веб-сервер.

sudo ln -sf /usr/local/lsws/lsphp73/bin/lsphp /usr/local/lsws/fcgi-bin/lsphp73

Всё, на этом установка PHP завершена. Осталось лишь настроить сервер через панель администрирования. Для этого зайдем по адресу https://ip_адрес_сервера:7080.

Выберите Server Configuration ➡️ External App, затем нажмите на иконку редактирования.

Окно настройки обработки PHP
Окно настройки обработки PHP

Прокрутите вниз до поля Command, туда нужно вставить пути к символической ссылке которую мы создали:

$SERVER_ROOT/fcgi-bin/lsphp73

command

Далее, перейдите Virtual Hosts ➡️ General page, нажмите на иконку редактирования и впишите index.php в поле Index File как показано ниже.

index file

Затем, выберите вкладку Rewrite и включите Rewrite Control.

rewrite1

Затем добавьте следующий код в поле Rewrite Rules:

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Правила Rewrite для WordPress'а
Правила Rewrite для WordPress'а

Сохранитесь. И наконец, в левом меню выберите Listeners и измените текущий порт с 8088 на 80. Сохранитесь после этого.

listener

После этого можно сервер перезапустить нажатием на зеленую кнопку вверху. Если вы всё правильно сделали, то перейдя по адресу http://ip_вашего_сервера/phpinfo.php, вы увидите следующую картину:

phpinfo

Поздравляю! Теперь осталось только установить WordPress.

Установка WordPress

Наконец-таки мы добрались до самой главной части. Но прежде, нужно создать базу данных для WordPress и отдельного пользователя. Заходим в консоль MySQL:

mysql -u root -p

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

CREATE DATABASE wordpress;
CREATE USER 'wordpress'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SOMEPASSWORD';
GRANT ALL PRIVILEGES ON wordpress.* TO'wordpress'@'localhost';
EXIT;

Скачиваем сам WordPress, распаковываем и копируем.

sudo apt-get install unzip
cd /usr/local/lsws/Example/html/
sudo rm -rf ./*
sudo wget https://wordpress.org/latest.zip -P .
sudo unzip ./latest.zip -d .
sudo mv -v wordpress/* .
sudo rm -rf latest.zip wordpress/

Осталось ещё изменить права на папку.

sudo chown -R nobody:nogroup ../html

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

Импорт базы данных в WordPress
Импорт базы данных в WordPress

Всё, на этом установка завершена! Осталось лишь установить плагин.

Панель управления WordPress
Панель управления WordPress

Плагин LiteSpeed Cache — самая ценная часть веб-сервера OpenLiteSpeed. Он умеет оптимизировать изображения, минифицировать CSS, JavaScript и HTML, добавляет ленивую загрузку изображений и многое другое. Переходим в Плагины ➡️ Добавить новый, в строке поиск пишем “LiteSpeed Cache”, жмем установить.

Страница настроек плагина LiteSpeed Cache
Страница настроек плагина LiteSpeed Cache

Конец. Теперь сайтом можно полноценно пользоваться 😀

Сергей Монин

Сергей Монин

Я фриланствующий веб-разработчик, живу в Саратове. Провожу дни выполняя заказы на дому. Хорошо разбираюсь в PHP и JavaScript. Интересуюсь аналитикой, языком программирования R, web accessibility и другими вещами.