Сверхлёгкий webserver на Alpine linux

524
Не знаю, как нормальных людей, но меня всё время мучает вопрос, зачем для размещения небольшого сайта на виртуальном сервере я вынужден устанавливать серьёзную операционную систему типа centos, ubuntu или debian? Почему я должен тратить вполне реальные деньги на аренду мощностей, которые не используются даже на 10% ?
Неужели для функционирования вебсервера, интерпретатора php и сервера базы данных необходима операционка, занимающая места в сотни раз больше, чем сами файлы сайта и его база вместе взятые?
Этот вопрос не давал мне покоя, пока IamB не прислал ссылку на Alpine linux.
При анализе возможностей Альпайна выяснилось, что это не только платформа под докер, но и вполне самостоятельный дистрибутив, у которого есть вполне серьезный функционал, вполне серьезный набор пакетов, который поддерживается вполне многлюдным сообществом разработчиков.
Немного изучив имеющиеся возможности Альпайна и поэкспериментировав на кошечках на виртуалбоксе, смог изобразить себе вполне работоспособный сервер размером в 533 мегабайта, большую часть которого занимает mariadb. Без неё весь сервер весит 202 Мб.

Итак: скачиваем минимальный ISO с сайта Альпайна: Virtual.
Он весит целых 42 метра. Размеры дистрибутива вполне серьёзного линукса поражают.
Эксперименты с Альпайном я советую проводить на virtualbox
Особо мужественные люди могут сразу приступать к установке на VPS, но сразу предупреждаю, мне пришлось провести с десяток экспериментов, прежде, чем всё получилось как надо.
Под спойлером инструкция для смелых:
=============================================================================
Для уверенных в своих силах
==================================================================
Устанавливаем virtualbox, создаем новую виртмашину, как под дебиан или центос.
После создания, перед запуском обязательно настраиваем сеть!
Выставляем "Сетевой мост" вместо NAT. Запускаем нашу новую виртмашину, оно попросит образ, указываем наш скачанный образ Alpine.
Оно загружается, появляется черное окно установки и запрос логина администратора.
Вбиваем root и жмём enter. Далее, пишем в консоли
Код PHP:
  1. setup-alpine
Система задает вопросы - отвечаем:
keyboard layout: us
Select variant: us
Enter system hostname: напишите что-нибудь английскими буквами. Так будет называться ваш сервер. Если лень думать - жмите энтер, ваш сервер будет называться localhost.
Далее запрос на инициализацию сетевого адаптера. Система предлагает адаптер, который видит. Жмем энтер. Далее запрос получения ip. Предлагает DHCP - жмём энтер, ip будет получен автоматически от вашего роутера.
Как правило, дальше система сообщает, что подключилась сеть (у меня всегда всё получалось) и предлагает ввести пароль root. Придумываем пароль и вводим дважды по запросу.
Далее просит ввести временную зону. Я вводил Europe/Moscow. Если у вас другой часовой пояс - жмите знак вопроса - подскажут.
HTTP/FTP proxy : none
Просит сервер обновления времени. По умолчанию chrony. Жмем энтер.
Enter mirror number: россиянам 6 (yandex) самое быстрое зеркало.
Жителям Украины всё, что угодно, кроме 6. )))
Which SSH server: вбиваем dropbear. Иначе не пустит по SSH под рутом. openssh потом поставить можно.
Which disk(s) you like to use: sda
How would you like to use it: sys
WARNING: erase таляля ... жмем y и энтер.
Двадцать секунд - наша система установлена.
Выключаем нашу виртмашину идем в настройки - Носители - отключаем установочный ISO.
Если видим характерную картинку и просит логин - значит всё получилось.
При загрузке альпайн пишет в консоли полученный по DHCP ip адрес, к нему можно подключиться по ssh.
Спойлер
Далее цепляемся к нему по ssh какой-нибудь putty и устанавливаем mc.
Установка mc в Альпайне выглядит так:
Код PHP:
  1. apk add mc
То есть, по аналогии с дебианом, вместо apt - apk, вместо install - add, далее имя пакета.
Если просто запустить потом mc, мы увидим его в каких-то траурных рамках из крестиков и других псевдографических элементов, мышь при этом не работает, а в коммандной строке при нажатии мыши скобки с цифрами.
Чтобы нормально пользоваться mc, набираем в терминале ТЕRM=linux , энтер и потом mc -x. Получаем вполне нормальный midnight commander.
Идем в файл /etc/apk/repositories и убираем решетки впереди четырех последних строк. Этим мы делаем доступными нужные репозитории, где лежат нужные нам пакеты.
Спойлер
Далее обновляем наш сервер
Код PHP:
  1. apk update
  2. apk upgrade
Устанавливаем легчайший и, что важно, понимающий htaccess, вебсервер openlitespeed
Код PHP:
  1. apk add litespeed
Через секунду будет установлен вебсервер и php7. Стартуем litespeed
Код PHP:
  1. rc-service litespeed start
Добавляем его в автозагрузку
Код PHP:
  1. rc-update add litespeed
Всё готово, идем по адресу http://наш_айпи:7080 и видим окно авторизации openlitespeed
Спойлер
Логин admin пароль 123456. Пароль можно потом изменить в настройках панели.
Версия openlitespeed не самая свежая, но при должном упорстве, можно обновить (это тема отдельной статьи).
Далее ставим mariadb и phpmyadmin
Код PHP:
  1. apk add mariadb mariadb-client phpmyadmin
После установки попытаемся запустить mariadb
Код PHP:
  1. rc-service mariadb start
Она, конечно, ругнется и предложит доустановиться. Доустанавливаем.
Код PHP:
  1. /etc/init.d/mariadb setup
Потом стартуем и настраиваем
Код PHP:
  1. rc-service mariadb start
  2. mysql_secure_installation
Отвечаем на вопросы системы, ставим пароль root для mysql.
Далее читаем мануал по опенлайтспид , создаем из админпанели новый виртуалхост с Virtual Host Root /usr/share/webapps/phpmyadmin (там лежит наш phpmyadmin), создаём в той же панели Listener phpmyadmin, назначаем ему порт любой, например 1234, перегружаем нашу панель кнопкой Graceful restart и по адресу http://наш_айпи:1234 видим окно авторизации phpmyadmin.
Далее, по тому же принципу в панели создаем виртуальный хост с нашим сайтом (папку для сайта надо создать предварительно), создаем листенер на порту 80, подключаем к нему наш виртуальный хост и наш сайт готов. Далее, в phpmyadmin создаем пользователя с паролем, базу этого пользователя и продолжаем установку нашего сайта.
Занятого системой места на диске 491 метр.

Дополнения с картинками:

Как добавить и настроить домен в Openlitespeed:
Спойлер
Теперь можно приступить к установке InstantCMS, но у нас не создана база для него!
По инструкции выше создаем виртуальный сервер с именем phpmyadmin (или как вам удобнее его назвать) и листенер phpmyadmin с портом например 1234
Всё также, как для сайта, только во вкладке Basic указываем
Virtual Host Root: /usr/share/webapps/phpmyadmin
Теперь привязываем наш виртуальный сервер к слушателю, Graceful Restart и переходим по адресу http://наш_ip_адрес:1234 (или какой там порт вы указали слушателю phpmyadmin). Вводим логин root и пароль, который вводили для пользователя root при настройке mysql_security_installation
В phpmyadmin идем в Учетные записи пользователей и создаем нового пользователя (например alp) и сразу ставим галку "создать базу данных с таким же именем и предоставить все права на неё". Сохраняем.
Теперь можно приступать к установке InstantCMS !
Накрутка рейтинга и кармы пользователям, контенту и фото.
Комментарии (1)
abasia 15 апреля 2021 в 11:18 +3
Хорошая статья, спасибо, что поделились практическим опытом!