1. Подготовка облачного сервера: аренда, базовая безопасность и настройка SSH
Подготовка облачного сервера: аренда, базовая безопасность и настройка SSH
Развертывание современных веб-проектов, созданных с помощью фреймворка Laravel или сгенерированных через платформу Lovable, требует правильного окружения. Обычный виртуальный хостинг для таких задач подходит плохо: он накладывает жесткие ограничения на установку программного обеспечения и не дает полного контроля над системой. Решением становится VPS (Virtual Private Server) — виртуальный частный сервер.
VPS — это изолированная часть мощного физического компьютера, которая ведет себя как отдельный полноценный сервер. Вы получаете гарантированные ресурсы (процессор, память, диск) и право устанавливать любые программы.
> VPS — это твой личный островок в океане интернета: ресурсы только твои, полная свобода в настройках, и никакой сосед не уронит твой сайт из-за своего кривого кода. > > arenda-server.cloud
Аренда сервера: характеристики и операционная система
Первый шаг к запуску проекта — аренда сервера у облачного провайдера. Процесс покупки обычно сводится к выбору трех параметров: операционной системы, физического расположения (локации) и мощности.
Для проектов на Laravel стандартом индустрии является операционная система Ubuntu. Рекомендуется выбирать версии с пометкой LTS (Long Term Support — долгосрочная поддержка), например, Ubuntu 22.04 LTS или 24.04 LTS. Они обеспечивают стабильность и получают обновления безопасности в течение пяти лет.
Минимальные требования для комфортной работы Laravel-проекта: * Процессор (vCPU): 1 ядро * Оперативная память (RAM): 1–2 ГБ * Накопитель: 20–25 ГБ (желательно NVMe SSD для высокой скорости чтения/записи)
Важное правило: если оперативная память сервера ГБ, процесс установки зависимостей через пакетный менеджер Composer может завершиться ошибкой из-за нехватки памяти. Поэтому 1 ГБ — это абсолютный минимум, а 2 ГБ — рекомендуемый старт.
Бюджет на такой сервер обычно рассчитывается по часам. Расход = Цена за час × 730 часов (среднее количество часов в месяце). При цене 0,007 долл. в час итоговая стоимость составит около 5 долл. в месяц.
После оплаты провайдер выдаст вам три ключевых параметра: IP-адрес сервера (например, 192.168.1.50), имя пользователя (по умолчанию это root) и пароль.
Первое подключение по SSH
Управление облачным сервером происходит без графического интерфейса — только через командную строку. Для связи вашего компьютера с сервером используется протокол SSH (Secure Shell).
SSH — это криптографический сетевой протокол, который создает защищенный зашифрованный туннель между вашим компьютером и сервером. Любые команды, которые вы отправляете, невозможно перехватить или прочитать извне.
Для подключения откройте терминал (Командная строка или PowerShell в Windows, Terminal в macOS) и введите команду:
Замените цифры на IP-адрес вашего сервера. Система спросит, доверяете ли вы этому узлу (нужно написать yes и нажать Enter), а затем запросит пароль. При вводе пароля в Linux символы не отображаются на экране — это нормальное поведение системы безопасности. Просто введите пароль и нажмите Enter.
Создание нового пользователя и отказ от root
Пользователь root — это супер-администратор системы. Он имеет абсолютную власть: может удалять любые системные файлы, менять любые настройки и останавливать критически важные процессы.
Работать от имени root на постоянной основе — плохая практика. Это можно сравнить с вождением автомобиля, у которого вместо педали тормоза установлена кнопка самоуничтожения. Одно неосторожное движение (или опечатка в команде), и сервер будет безвозвратно сломан.
Вместо этого мы создадим обычного пользователя и наделим его правом временно повышать свои привилегии с помощью команды sudo (Superuser DO).
Создадим пользователя с именем laraveladmin:
Система попросит придумать пароль для нового пользователя и заполнить дополнительную информацию (ее можно пропустить, нажимая Enter).
Теперь добавим этого пользователя в группу sudo, чтобы он мог выполнять административные задачи:
Здесь флаг -a означает append (добавить), а -G — group (группа). Теперь вы можете отключиться от сервера командой exit и зайти заново, но уже под новым именем:
Настройка SSH-ключей: вход без пароля
Ввод пароля при каждом подключении утомляет, а сами пароли уязвимы для атак методом подбора (брутфорс), когда специальные программы-боты пытаются угадать ваш пароль, перебирая миллионы комбинаций.
Решение этой проблемы — асимметричное шифрование с помощью SSH-ключей.
Механизм состоит из двух частей:
Когда вы пытаетесь подключиться, сервер проверяет, подходит ли ваш приватный ключ к публичному замку. Если да — вас пускают без пароля.
Чтобы создать такую пару ключей, откройте терминал на своем локальном компьютере (не на сервере!) и введите:
Нажимайте Enter на все вопросы системы, чтобы оставить настройки по умолчанию. Ключи будут созданы.
Теперь нужно отправить «замок» (публичный ключ) на ваш сервер. Для этого введите:
Система в последний раз попросит пароль пользователя laraveladmin. После этого вы сможете подключаться к серверу мгновенно, без ввода пароля.
Базовая безопасность: настройка брандмауэра (UFW)
По умолчанию сервер открыт для множества типов сетевых соединений. Чтобы защитить его от взлома, необходимо настроить брандмауэр (файрвол) — систему, которая блокирует все входящие подключения, кроме тех, которые вы явно разрешили.
В Ubuntu для этого используется утилита UFW (Uncomplicated Firewall — несложный брандмауэр).
Нам нужно разрешить всего три типа подключений: * Порт 22 — для управления сервером по SSH. * Порт 80 — для обычного веб-трафика (HTTP). * Порт 443 — для защищенного веб-трафика (HTTPS).
Выполните на сервере следующие команды (обратите внимание, что теперь перед административными командами мы пишем sudo):
После того как правила добавлены, включаем брандмауэр:
Система предупредит, что это может разорвать текущее SSH-соединение. Соглашайтесь (введите y и нажмите Enter). Поскольку мы предварительно разрешили OpenSSH, наше соединение не прервется.
Сравнение состояния портов до и после включения UFW
| Порт / Сервис | До включения UFW | После включения UFW | | :--- | :--- | :--- | | 22 (SSH) | Открыт | Открыт (разрешили вручную) | | 80 (HTTP) | Открыт | Открыт (разрешили вручную) | | 443 (HTTPS) | Открыт | Открыт (разрешили вручную) | | 3306 (База данных) | Открыт | Заблокирован извне | | 6379 (Redis) | Открыт | Заблокирован извне |
Блокировка портов баз данных извне — критически важный шаг. База данных должна быть доступна только самому серверу (локально), но не хакерам из интернета.
Отключение входа по паролю
Финальный штрих базовой безопасности — полный запрет на вход по паролю и запрет на прямое подключение пользователя root. Теперь, когда у нас есть SSH-ключи и пользователь laraveladmin, пароли нам больше не нужны.
Откроем конфигурационный файл SSH-сервера с помощью консольного текстового редактора nano:
В этом файле нужно найти две строки и изменить их значения на no:
PermitRootLogin no (запрещает вход суперпользователю).PasswordAuthentication no (запрещает вход по паролю для всех).Чтобы сохранить изменения в редакторе nano, нажмите Ctrl+O, затем Enter, а для выхода — Ctrl+X.
Чтобы новые настройки вступили в силу, перезапустите службу SSH:
Теперь ваш облачный сервер надежно защищен. Никто не сможет подобрать пароль, так как вход по паролю отключен, а доступ к системе есть только у владельца приватного SSH-ключа. Фундамент заложен, и сервер полностью готов к установке веб-сервера, PHP и базы данных для вашего Laravel-проекта.