Гид по технологиям

Установка Cachet на FreeBSD 12 с PHP, Nginx, MariaDB и Composer

• 6 min read • DevOps • Обновлено 21 Nov 2025
Cachet на FreeBSD 12: установка с PHP, Nginx, MariaDB
Cachet на FreeBSD 12: установка с PHP, Nginx, MariaDB

Что такое Cachet

Cachet — это опен‑сорс система статус‑страниц на PHP. Коротко: она предоставляет API в формате JSON, уведомления подписчикам, отчёты об инцидентах, двухфакторную аутентификацию и метрики. (Термин «статус‑страница»: публичная страница с текущим состоянием сервисов и историей инцидентов.)

Требования

  • PHP 7.1 или новее (в примерах используется PHP 7.2)
  • HTTP‑сервер с поддержкой PHP (в руководстве — Nginx)
  • Composer
  • БД: MySQL/MariaDB, PostgreSQL или SQLite (в примере — MariaDB)
  • Git
  • acme.sh (для Let’s Encrypt, опционально)
  • Непривилегированный пользователь с sudo на FreeBSD 12

Быстрые проверки перед началом

Проверьте версию FreeBSD:

uname -ro
# FreeBSD 12.0-RELEASE

Установите часовой пояс:

tzsetup

Обновите систему и пакеты:

freebsd-update fetch install
pkg update && pkg upgrade -y

Установите базовые утилиты:

pkg install -y sudo vim unzip wget bash

Важно: выполняйте команды от пользователя с sudo. Не работайте под root, если это не требуется.

Шаг 1 — Установка PHP и расширений

Установите PHP и необходимые расширения (пример для PHP 7.2):

sudo pkg install -y php72 php72-ctype php72-curl php72-dom php72-hash php72-iconv php72-gd php72-json php72-mbstring php72-openssl php72-session php72-simplexml php72-xml php72-zip php72-zlib php72-pdo php72-pdo_mysql php72-mysqli php72-pgsql php72-sqlite3 php72-filter php72-ftp php72-tokenizer php72-calendar php72-pecl-APCu php72-opcache php72-pecl-redis php72-phar php72-fileinfo

Проверьте версию PHP:

php --version

# PHP 7.2.7 (cli) (built: Jul 25 2019 01:28:53) ( NTS )

Включите и запустите PHP‑FPM:

sudo sysrc php_fpm_enable=yes
sudo service php-fpm start

Шаг 2 — Установка MariaDB и создание базы для Cachet

Установим MariaDB (в примере — mariadb102):

sudo pkg install -y mariadb102-client mariadb102-server

Проверьте версию клиента:

mysql --version
# mysql  Ver 15.1 Distrib 10.2.17-MariaDB

Включите и запустите сервис:

sudo sysrc mysql_enable="yes"
sudo service mysql-server start

Запустите скрипт для базовой защиты и установки пароля root:

sudo mysql_secure_installation

Следуйте подсказкам (рекомендуется отвечать утвердительно на удаление анонимных пользователей, запрет удалённого логина root, удаление тестовой базы и перезагрузку привилегий).

Подключитесь и создайте базу и пользователя для Cachet (замените dbname/username/password):

sudo mysql -u root -p
# введите пароль
CREATE DATABASE dbname;
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON dbname.* TO 'username'@'localhost';
FLUSH PRIVILEGES;
exit

Важно: храните учётные данные безопасно.

Шаг 3 — Установка acme.sh и получение сертификата Let’s Encrypt (опционально)

acme.sh — лёгкий клиент на POSIX shell для получения TLS‑сертификатов. Пример установки:

sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail your@email.example
source ~/.bashrc
cd ~

Проверка:

acme.sh --version
# v2.8.0

Получение RSA и ECDSA сертификатов (замените example.com на ваш домен):

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

Для тестирования используйте флаг –staging.

Каталоги с сертификатами (пример):

  • RSA: /home/username/example.com
  • ECDSA: /home/username/example.com_ecc

Создайте целевые папки для централизованного хранения (исправлено для корректного пути):

sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc

Скопируйте/установите сертификаты туда и настройте команду перезагрузки Nginx (пример):

# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo service nginx reload"
# ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo service nginx reload"

acme.sh автоматически будет обновлять сертификаты.

После завершения выйдите из root:

exit

Шаг 4 — Установка и настройка Nginx для Cachet

Установим Nginx (mainline/devel):

sudo pkg install -y nginx-devel

Проверьте версию:

nginx -v
# nginx version: nginx/1.17.2

Включите и запустите:

sudo sysrc nginx_enable=yes
sudo service nginx start

Создайте файл конфигурации nginx для Cachet:

sudo vim /usr/local/etc/nginx/cachet.conf

Пример содержимого (исправлены пути к сертификатам и имена файлов):

upstream php {
  server 127.0.0.1:9000;
}

server {
  listen [::]:443 ssl;
  listen 443 ssl;
  listen [::]:80;
  listen 80;

  server_name example.com;

  root /usr/local/www/cachet/public;
  index index.php;

  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/example.com/private.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;

  location / {
    try_files $uri /index.php$is_args$args;
  }

  location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    fastcgi_keep_conn on;
  }
}

Включите этот файл в основной nginx.conf, добавив внутри блока http:

include cachet.conf;

Проверка синтаксиса и перезагрузка:

sudo nginx -t
sudo service nginx reload

Совет: локально проверьте доступность порта 443 и правил файрвола.

Шаг 5 — Установка Composer

Установите Composer глобально:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer

Проверьте версию:

composer --version
# Composer version 1.9.0 2019-02-11 10:52:10

Шаг 6 — Установка Cachet

Создайте директорию для приложения:

sudo mkdir -p /usr/local/www/cachet

Смените владельца на вашего непользовательского sudo‑пользователя (замените your_user):

sudo chown -R your_user:your_user /usr/local/www/cachet

Перейдите в директорию и скачайте исходники Cachet (ветка 2.4 в примере):

cd /usr/local/www/cachet

git clone -b 2.4 --single-branch https://github.com/cachethq/Cachet.git .

Скопируйте пример .env и настройте параметры БД и APP_URL:

cp .env.example .env
vim .env

Установите зависимости Composer без dev‑пакетов:

composer install --no-dev -o

Сгенерируйте ключ приложения:

php artisan key:generate

Запустите установку Cachet (в процессе будут настройки кэша, сессий и электронной почты):

php artisan cachet:install

Установите корректные права для веб‑сервера (в примере — www):

sudo chown -R www:www /usr/local/www/cachet

Откройте сайт в браузере и следуйте мастеру настройки.

Шаг 7 — Завершение настройки через веб‑интерфейс

При установке через веб‑интерфейс выберите драйверы кэша и сессий, настройте почту и общие параметры сайта (имя сайта, домен, часовой пояс и язык). Затем создайте администратора.

/files/080bff23-034c-4862-96cc-40c9f3aa7c27.png

ALT: Экран выбора драйвера кэша и сессий в мастере установки Cachet

/files/fc198a4c-541c-4d09-bf4a-49429662abc7.png

ALT: Настройки общего сайта: имя, домен, часовой пояс, язык

/files/7d79ffe6-a987-4740-a2f8-17e084f89a6b.png

ALT: Форма создания учётной записи администратора Cachet

После успешной настройки вы увидите подтверждение и кнопку «Перейти в панель управления».

/files/a0cdb2cb-1f8d-4f68-b113-884b3c2349c4.png

ALT: Сообщение об успешной конфигурации Cachet с кнопкой перехода в панель управления

Панель доступна по пути /dashboard:

/files/63c06be0-a45c-4971-8774-214036176d70.png

ALT: Интерфейс панели управления Cachet с навигацией по компонентам и инцидентам

Полезные ссылки


Критерии приёмки

  • Сайт по APP_URL открывается и показывает страницу статуса.
  • Панель /dashboard доступна и позволяет создать/редактировать инциденты.
  • Миграции БД выполнены без ошибок (php artisan migrate завершился успешно).
  • Уведомления по почте отправляются (если настроены SMTP/MAIL).
  • HTTPS работает и сертификат корректен (если использовался Let’s Encrypt).

Рекомендации по безопасности

  • Храните .env вне публичного доступа и с ограниченными правами.
  • Регулярно обновляйте FreeBSD и пакеты: freebsd-update && pkg upgrade.
  • Отключите root‑вход по SSH и используйте ключи SSH.
  • Настройте базовую защиту Nginx (ограничение методов, заголовки HSTS).
  • Запустите периодический аудит прав на /usr/local/www/cachet (владелец веб‑сервера только для файлов контента).

Чек‑лист по ролям

  • DevOps/администратор:

    • Установил PHP‑FPM, Nginx, MariaDB, Composer.
    • Настроил SSL и перезагрузку Nginx при обновлении certs.
    • Настроил бэкапы базы.
  • Разработчик:

    • Прогнал composer install и убедился, что production‑режим (-o –no-dev).
    • Проверил работу API /api/v1/status.
  • Администратор сайта:

    • Создал учётную запись администратора в веб‑мастере.
    • Настроил уведомления подписчиков.

Трудные случаи и краткие решения (Edge cases)

  • PHP‑FPM не запускается: проверьте лог /var/log/*.php-fpm.log и синтаксис php.ini.
  • Невозможно подключиться к БД: проверьте правильность DB_HOST, DB_DATABASE, DB_USERNAME, DB_PASSWORD в .env.
  • Ошибки прав доступа: убедитесь, что www (или выбранный веб‑пользователь) владеет каталогом и имеет права на запись в storage и bootstrap/cache.
  • Composer не устанавливает зависимости: проверьте сетевой доступ и версию PHP, расширения mbstring, openssl, pdo и пр.
  • Nginx выдаёт 502 Bad Gateway: проверьте, что php-fpm слушает 127.0.0.1:9000 и fastcgi_pass настроен корректно.

Быстрый план отката (rollback)

  1. Остановить Nginx: sudo service nginx stop
  2. Восстановить файлы из бэкапа (код и .env)
  3. Откат миграций (только если знаете последствия): php artisan migrate:rollback — помните об потере данных
  4. Запустить nginx и php-fpm

Мини‑методология развертывания (шаги)

  1. Подготовка ОС, пользователей и бэкапов.
  2. Установка PHP, расширений, MariaDB.
  3. Получение TLS (опционально).
  4. Установка Nginx и конфигурация виртуального хоста.
  5. Развёртывание Cachet, запуск миграций и установка зависимостей.
  6. Настройка почты, кэша и создание администратора.
  7. Мониторинг и резервное копирование.

Мини‑словарь (1‑строчные определения)

  • Cachet: открытая платформа для статус‑страниц.
  • acme.sh: клиент для получения certs от Let’s Encrypt на чистом shell.
  • FPM: FastCGI Process Manager для PHP.
  • .env: файл с конфиденциальными настройками приложения.

Decision flowchart (Mermaid)

flowchart TD
  A[Начало установки] --> B{Есть домен и DNS?}
  B -- Нет --> C[Настройте DNS, укажите A/AAAA]
  B -- Да --> D{Хотите HTTPS?}
  D -- Да --> E[Установите acme.sh и получите сертификат]
  D -- Нет --> F[Продолжить без SSL]
  E --> G[Настройка Nginx с SSL]
  F --> G
  G --> H[Установить MariaDB и создать БД]
  H --> I[Установить PHP, Composer, Cachet]
  I --> J[Запустить мастер установки в браузере]
  J --> K[Готово]

Контрольные тесты / Критерии приёмки

  • HTTP 200 на APP_URL и /dashboard.
  • Успешная авторизация в панели администратора.
  • Уведомление подписчика приходит при создании тестового инцидента.
  • Команда php artisan schedule:run отрабатывает без ошибок (если настроены задания).

Заключение

Это подробное руководство покрывает установку Cachet на FreeBSD 12 с практическими правками конфигураций и списками проверок. После завершения у вас будет работоспособная статус‑страница с возможностью оповещать пользователей и отслеживать инциденты.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро