Деплой Laravel Sail приложения на VPS
Цель этого туториала — разместить приложение, разработанное на Laravel 11, на VPS. Проект создан с использованием Docker и Laravel Sail. В этой статье мы пройдем через все шаги и рассмотрим некоторые теоретические аспекты.
Шаг 1. Покупка VPS
Начнем с того, что вообще такое VPS и в чем его отличие от обычного хостинга (shared hosting).
VPS (Virtual Private Server) — это виртуальный частный сервер, который предоставляет пользователям выделенные ресурсы на физическом сервере. VPS использует технологию виртуализации, чтобы разделить один физический сервер на несколько виртуальных машин, каждая из которых работает как отдельный сервер с собственными операционными системами, ресурсами и настройками.
Что такое shared hosting, по сути это такой же сервер, но только с одним отличием Вы не можете его настроить также гибко как и VPS, в shared hosting необходимо проставить галочки того какие модули Вам понадобятся, в отличии от этого VPS это реальная операционная (чаще всего Ubuntu, но Вы вольны на моменте покупки выбрать другую ОС) система к которой Вы подключаетесь и управляете так же как и свои ПК, только удаленно. К примеру, в Ubuntu приложением для контроля нагрузки является top, но так вся ОС под Вашим полным контролем нам ничто не машет установить htop. Таким образом мы можем устанавливать абсолютно любые нужные нам приложения и настраивать ОС по нашему желание.
VPS для данного сайта куплен на RUVDS не скажу, что это лучший VPS, на рынке или то что я проводил исследования, но в целом он мне нравиться, так что больше рекомендую чем нет. Для нас это разницы это не имеет, настройка везде одинаковая.
Единственное, что соблюдайте минимальную конфигурацию для Laravel проектов:
Операционная Система
Ubuntu 22.04 LTS (ENG)
Конфигурация:
- 2x2.2ГГц,
- 2Гб RAM
- 20Гб HDD
Если поставить ниже, все работать будет, но как пользование сайтом так и настройка VPS принесут боль и разочарование. Хотя и можно и взять самый минимальный тариф, а вслучае чего доплатить за конфигурацию получше, благо это все делается в 2 клика.
Шаг 2. Подключитесь к вашему VPS
Используйте SSH для подключения к вашему VPS. Замените `username` и `your_vps_ip` на ваши данные. Найти эти данные можно в панели купленного сервера. Стоит учесть, что мой локальный компьютер убунту, поэтому эта команда относиться к этой и подобных системах. Для windows скорее всего необходимо поставить какую-то программу.
ssh username@your_vps_ip
Так же необходимо будет ввести пароль.
P.S. Для тех кто работает с Ubuntu первый раз, ввод пароля на экране не отображается, строка будет оставаться пустой, но пароль вводиться.
P.S.S Чтобы вставить в консоль необходимо нажать Ctrl + Shift + V, так же работает и копирование с консоли.
Шаг 3. Создание пользователя
По умолчанию у нас уже создан пользователь для нашей ОС - root, но использование пользователя `root` для развертывания приложений на сервере не является наилучшей практикой, так как это может создать потенциальные риски безопасности. Рекомендуется создать отдельного пользователя для работы с вашим приложением.
Создаем нового пользователя:
sudo adduser имя_пользователя
Вам будет предложено ввести пароль и другую информацию о пользователе.
Далее нам необходимо добавить пользователя в группу sudo, это позволит вашему новому пользователю выполнять команды с правами администратора при необходимости:
sudo usermod -aG sudo имя_пользователя
И теперь мы можем переключиться на только что созданного пользователя:
su - имя_пользователя
После этого Вы должны оказаться в рабочей директории для этого пользователя.
/home/you_user
Что бы это проверить, можно воспользоваться командой pwd.
Шаг 4. Установка Docker и Docker Compose
В этом шаге идут просто команды, которые необходимо выполнить по порядку, поэтому я просто скину листинг, детальнее Вы можете прочитать об этих командах в интернете:
# Установите необходимые пакеты
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
# Добавьте ключ GPG для официального репозитория Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Добавьте репозиторий Docker
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# Установите Docker
sudo apt update
sudo apt install docker-ce
# Установите Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Шаг 5. Установка git и клонирование проекта
sudo apt update
sudo apt install git
Теперь мы можем клонировать проект на нашу машину, для этого убедитесь, что находитесь в папке вашего пользователя:
/home/you_user
Команда для клонирования:
git clone https://github.com/ваш_пользователь/ваш_репозиторий.git
Таким образом, структура вашего сервера может выглядеть следующим образом:
/home/
└── имя_пользователя/
└── ваш_репозиторий/
Шаг 6. Настройка окружения
Скопируйте файл `.env.example` в `.env`:
cp .env.example .env
Настройте файл `.env` в соответствии с вашими требованиями, особенно параметры подключения к базе данных. К примеру можно отключить дебаг и поставить prod режим сборки.
Для того чтобы открыть файл для редактирования воспользуйтесь редактором nano. Вот тут можно почитать про него и как с ним работать - тыц
Теперь мы должны установить Sail:
docker run --rm \
-u "$(id -u):$(id -g)" \
-v "$(pwd):/var/www/html" \
-w /var/www/html \
laravelsail/php83-composer:latest \
composer install --ignore-platform-reqs
Статья в доке для чего мы пишем эту команду - дока
Шаг 7. Запуск приложения
Теперь мы можем запустить проект. Первым делом поднимем сами контейнеры :
./vendor/bin/sail up
Теперь можно открыть открыть еще один терминал снова подключиться по ssh. Не забудьте, что подключиться необходимо не с root пользователя, а с того что вы создали сами:
ssh new_username@your_vps_ip
Переходим в папку с вашим проектом
cd project/vendor/bin
Теперь мы можем накатить миграции:
./sail artisan migrate
И собрать стили
./sail npm run build
Теперь по идеи (я просто сам так не делал) ваше приложение должно быть доступно по IP-адресу вашего VPS. Если вы используете стандартный порт 80, просто введите IP-адрес в браузере. Если вы используете другой порт, добавьте его к URL (например, `http://your_vps_ip:8080`).
Как я сказал, сам лично я не пользовался таким способом, я сразу покупал доменное имя и делал доступ по нему, а как это сделать будет во второй части .
Похожие статьи
Добавляем доменное имя для сайта размещенного на VPS
Это вторая часть по теме как разместить сайт разработанный с использование Laravel и Sail на VPS. В этой части мы сделаем сайт доступным по доменному имени, для чего познакомимся с NGINX и поработаем с его конфигурацией.
Читать дальше...