Серверы
Обзор
Для того чтобы onFriday мог выполнять автоматический deploy на вашем сервере, необходимо обеспечить соединение и настроить права доступа. Не волнуйтесь, обеспечивается безопасное соединение за счет использования защищенного сетевого протокола для удаленного управления сервером - SSH, а также список доверенных серверов.
Быстрое копирование настроек
Вы можете скопировать настройки из другого проекта на Вашем аккаунте. Просто воспользуйтесь кнопкой “Скопировать из”.
Конфигурация сервера
Вы можете скопировать настройки из другого проекта на Вашем аккаунте. Просто воспользуйтесь кнопкой “Скопировать из”.
После добавления сервера для вас будет сгенерирован уникальный SSH-ключ для добавления на ваш сервер.
Вам необходимо добавить ключ SSH в файл ~/.ssh/authorized_keys
для пользователей, под которыми onFriday должен подключаться к серверу.
Копируете публичный ключ, логинетесь на сервере и добавляем его в ~/.ssh/authorized_keys
, например, командой:
echo "ваш_public_key" >> ~/.ssh/authorized_keys
Если вы используете аккаунт root, для настройки ключей, nо не забудьте поменять права пользователя,
чтобы директория и файлы ключей принадлежали пользователю, а не root. Делается следующей командой:
chown -R user:username ~/.ssh
Где, username следует заменить на имя вашего пользователя.
Остальные опции, которые необходимо настроить для работы onFriday на вашем сервере:
- Имя: дайте вашему серверу имя, которое вы сможете легко идентифицировать.
- Имя хоста/IP-адрес: IP v4-адрес вашего сервера.
- Порт: порт, который onFriday должен использовать для подключения к вашему серверу.
- Подключиться как: имя пользователя, которое onFriday должен использовать для подключения к вашему серверу.
-
Путь к проекту: абсолютный путь к корневому каталогу проекта на вашем сервере.
После первого деплоя будет создана следующая структура директорий:
current
- текущая версия проекта (а точнее ссылка на директорию с рабочей версией проекта, напримерreleases/75
).Укажите в параметрах web-сервера (nginx) root-директорию проекта -
<путь до проекта>/current/public
(для Laravel проектов)releases
- директории с сохранёнными(предыдущими) версиями проектаshared
- все файлы, которые не лежат в удаленном git-репозитории, но участвуют в проекте (видео, изображения, документы и др.)
При следующем деплое добавиться директория
releases/76
, и директорияcurrent
будет ссылаться на неё - Версия PHP: используемая версия PHP (также определяет версию службы PHP-FPM, которая будет перезагружена).
- Путь PHP: абсолютный путь к двоичному файлу PHP (указанной вами версии) на сервере.
-
Путь к Composer: абсолютный путь к двоичному файлу Composer в вашей системе.
Если вашем сервере уже установлен Composer, просто укажите:composer
(если на сервере задан alias для composer, то указываем его).
Если же нужно выполнить установку зависимостей от определённой версии php,
то необходимо указать путь до php + путь до composer (через пробел).
Пример для выполнения Composer от PHP версии 8.3:
/opt/php83/bin/php /usr/local/bin/composer
- Сохраняемые ревизии - определяет, сколько последних ревизий (версий) будет сохраняться на вашем сервере. Старые версии будут автоматически удаляться. Внимание! Большое число может привести к заполнению дискового хранилища на вашем сервере.
-
Перезагрузить FPM: определяет, будет ли служба PHP-FPM перезагружаться после каждого развертывания.
После каждого развертывания необходимо обновить ссылку (simlink) на каталог с новой версией проекта. Если эта настройка не включена, то для того чтобы завершить деплой проекта необходимо будет вручную перезапускать службу PHP-FPM. Чтобы это перезапуск происходил автоматически, необходимо дать права onFriday на управление этой службой. Перезапуск службы на сервере может выполнить только пользователь с правами суперпользователя - командой sudo, при этом операционная операционная система всегда спрашивает пароль.
Чтобы пароль не спрашивался для перезапуска службы PHP-FPM, необходимо добавить в/etc/sudoers.d/php-fpm
добавить следующую строку:
{username} ALL=NOPASSWD: /usr/sbin/service php{version}-fpm reload
где{username}
это имя пользователя, а{version}
- версия PHP. Например:
userCutCode ALL=NOPASSWD: /usr/sbin/service php8.3-fpm reload
Если вы ограничиваете доступ SSH к своему серверу с помощью белого списка IP-адресов, добавьте в него ip-адрес c которого будет работать onFriday:
148.251.184.58
Проверяем настройки
После ввода всех настроек обязательно проверьте корректность соединения, нажав на кнопку “Проверить соединение”. Результатом проверки должно быть сообщение “Соединение установлено”.
Работа с env файлом
Env файлы проектов не участвуют в процессе автодеплоя из git-репозиториев в целях безопасности. Получается что после выполнения деплоя с onFriday в вашем проекте будет отсутствовать env файл! Вам необходимо вручную добавить env файл на сервер и указать путь к нему в настройках проекта.
Env-файл располагается по адресу:
<путь до проекта>/shared/.env
Для удобной работы с env-файлом мы сделали специальный редактор.
В редакторе доступны только те параметры, которые Вы уже вводили в редакторе. То есть, если вы записываете всю информацию в env-файл через редактор, то вы будете видеть в редакторе всё содержимое env-файла. А если добавляете информацию напрямую в env-файл на сервере, то в редакторе будет пусто.
Также в onFriday реализована возможность работы только с нужными параметрами в env-файле. Просто вводите необходимый параметр и значение и только это поле будет обновлено.
Безопасность наш приоритет! Так как информация в env файле является критической, то мы решили дополнительно защитить работу с ним и при первом обращении к env файлу через редактор необходимо установить ключ-пароль, который будет использоваться для шифрования файла.
Команда после обновления env
Команда, которую выполнится на сервере сразу после сохранения изменений в env.
Например, мы почистим кэш:
php artisan optimize
При работе с env-файлом мы не храним APP_KEY приложения! И даже если вы укажете его в редакторе, он будет проигнорирован и не сохранен.
Если при деплое onFriday не найдёт APP_KEY, то в форме "Редактирование env" вы сможете его сгенерировать.
Вы можете сгенерировать APP_KEY самостоятельно, вручную на сервере. После очередного деплоя кнопка "Сгенерировать APP_KEY" будет скрыта.
Добавление символических ссылок
Вы можете использовать ссылки на собственные папки с большим объемом контента, который не будет использоваться при каждом деплое (js-зависимости, изображения, видео) и храниться отдельно. При указании директории она убирается из ревизий и хранится отдельно и не участвует в deploy и соответственно её содержимое не изменяется.