Установка Cachet на CentOS 7 с Nginx, PHP и MariaDB
Это руководство показывает, как установить и настроить открытый статус-пейдж Cachet на CentOS 7 с PHP-FPM, Nginx, MariaDB и Composer. Включены подготовка сервера, установка PHP, базы данных, получение сертификатов Let’s Encrypt, конфигурация Nginx, установка Cachet через Composer и финальная настройка панели.
Что такое Cachet
Cachet — это статус-пейдж система с открытым исходным кодом на PHP. Она помогает информировать пользователей и команды о простоях и инцидентах. Основные функции: JSON API, отчёты об инцидентах, метрики, транскрипция сообщений событий, уведомления подписчиков по e‑mail и двухфакторная аутентификация.
Важно: краткие определения
- PHP-FPM — менеджер процессов PHP, запускает PHP в виде отдельных процессов для вебсервера.
- Composer — менеджер зависимостей PHP.
- acme.sh — клиент для получения TLS сертификатов от Let’s Encrypt.
Требования
- PHP 7.1 или выше
- Веб‑сервер с поддержкой PHP (Nginx, Apache, Caddy и т. п.)
- Composer
- Поддерживаемая СУБД: MariaDB/MySQL, PostgreSQL или SQLite
- Git
- CentOS 7 и пользователь с sudo-привилегиями
Быстрая карта действий
- Обновить систему и установить базовые утилиты.
- Установить PHP и расширения.
- Установить MariaDB и создать базу данных для Cachet.
- (Опционально) Получить TLS-сертификат через acme.sh / Let’s Encrypt.
- Установить и настроить Nginx.
- Установить Composer и зависимости Cachet.
- Запустить инсталлятор Cachet и завершить настройку через веб‑интерфейс.
Подготовка сервера
Проверьте версию CentOS:
cat /etc/centos-releaseУстановите часовой пояс:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'Обновите пакеты ОС:
sudo yum update -yУстановите базовые утилиты:
sudo yum install -y curl wget vim git unzip socat bash-completionВажно: выполняйте команды от пользователя с sudo, а не напрямую от root, если не требуется.
Шаг 1 — Установка PHP и расширений
Добавьте внешний репозиторий для современных пакетов PHP (в примере используется Webtatic):
sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpmУстановите PHP и необходимые расширения (пример для PHP 7.2 из webtatic):
sudo yum install -y php72w-cli php72w-fpm php72w-common php72w-xml php72w-gd php72w-zip php72w-mbstring php72w-mysqlnd php72w-pgsql php72w-sqlite3 php72w-opcache php72w-apcu php72w-jsonПроверьте установленные модули PHP и версию:
php -m
php --versionЗапустите и включите службу PHP-FPM:
sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.serviceПримечание: при использовании другой сборки PHP (SCL, REMI) пакеты и имена могут отличаться.
Шаг 2 — Установка MariaDB и создание базы данных
Добавьте репозиторий MariaDB 10.2 для CentOS 7:
sudo vim /etc/yum.repos.d/MariaDB.repoВставьте в файл:
# MariaDB 10.2 CentOS repository list
[mariadb]
name=MariaDB
baseurl=https://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1Установите MariaDB:
sudo yum install -y MariaDB-server MariaDB-clientПроверьте версию:
mysql --version
# mysql Ver 15.1 Distrib 10.2.x-MariaDBЗапустите сервис и включите автозапуск:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.serviceЗапустите скрипт безопасной настройки:
sudo mysql_secure_installationСледуйте подсказкам (рекомендуется отключить удалённый root, удалить анонимных пользователей и тестовую базу).
Создайте базу и пользователя для Cachet (запомните имя базы, логин и пароль):
sudo mysql -u root -p
MariaDB> CREATE DATABASE cachet_db;
MariaDB> GRANT ALL ON cachet_db.* TO 'cachet_user' IDENTIFIED BY 'secure_password';
MariaDB> FLUSH PRIVILEGES;
MariaDB> exitЗамените cachet_db, cachet_user и secure_password на свои значения.
Шаг 3 — Установка acme.sh и получение сертификата Let’s Encrypt (опционально)
acme.sh — лёгкий shell-клиент для получения сертификатов Let’s Encrypt. Его удобно использовать для автоматизации TLS.
Установка acme.sh:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~Проверьте версию:
acme.sh --versionПолучение сертификата (standalone):
# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256Для тестирования используйте флаг –staging.
После получения сертификатов они окажутся в директориях /home/username/example.com и /home/username/example.com_ecc.
Создайте директории для копий сертификатов (используем /etc/letsencrypt как пример):
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 systemctl reload nginx.service"
# ECC
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 systemctl reload nginx.service"Все сертификаты acme.sh обновляет автоматически.
Закончив — выйдите из root:
exitВажно: если вы используете прокси/брандмауэр, обеспечьте доступ к 80/443 для проверки домена.
Шаг 4 — Установка и настройка Nginx
Установите Nginx:
sudo yum install -y nginxПроверьте версию и включите сервис:
sudo nginx -v
sudo systemctl start nginx.service
sudo systemctl enable nginx.serviceСоздайте конфигурацию для Cachet:
sudo vim /etc/nginx/conf.d/cachet.confПример конфигурации (адаптируйте server_name, пути к сертификатам и PHP‑FPM):
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
server_name status.example.com;
root /var/www/cachet/public;
index index.php;
ssl_certificate /etc/letsencrypt/status.example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/status.example.com/status.example.com.key;
ssl_certificate /etc/letsencrypt/status.example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/status.example.com_ecc/status.example.com.key;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_keep_conn on;
}
}Проверьте конфигурацию и перезагрузите Nginx:
sudo nginx -t
sudo systemctl reload nginx.serviceПримечание: если PHP-FPM слушает unix-сокет, замените fastcgi_pass на unix:/run/php-fpm/www.sock и проверьте права доступа.
Шаг 5 — Установка Composer
Установите Composer глобально:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { 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Шаг 6 — Установка Cachet
Создайте директорию для приложения и задайте права:
sudo mkdir -p /var/www/cachet
sudo chown -R your_user:your_user /var/www/cachetВажно: замените your_user на имя вашего не‑root пользователя.
Перейдите в директорию и скачайте код:
cd /var/www/cachet
git clone -b 2.4 --single-branch https://github.com/cachethq/Cachet.git .Скопируйте пример переменных окружения и отредактируйте .env (укажите DB_* и APP_URL):
cp .env.example .env
vim .envУстановите зависимости через Composer (продакшен):
composer install --no-dev -oСгенерируйте ключ приложения и запустите установщик Cachet:
php artisan key:generate
php artisan cachet:installПосле установки смените владельца файлов на nginx (или на пользователя, под которым работает веб‑сервер):
sudo chown -R nginx:nginx /var/www/cachetОтредактируйте конфигурацию PHP-FPM, чтобы процессы запускались от пользователя nginx, если требуется:
sudo vim /etc/php-fpm.d/www.conf
# user = nginx
# group = nginxПерезапустите php-fpm после изменений:
sudo systemctl restart php-fpm.serviceОткройте в браузере указанный в APP_URL адрес и следуйте мастеру завершения установки.
Шаг 7 — Финальная настройка через веб‑интерфейс
Выберите драйверы кеша и сессий, настройте параметры почты.

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

Создайте административную учётную запись.

После успешной настройки вы увидите сообщение об удачной установке и сможете перейти в панель управления.

Панель управления доступна по адресу: https://status.example.com/dashboard

Контрольный список перед запуском
- Домен и DNS указывают на сервер
- Порты 80 и 443 открыты и доступны
- Сертификаты TLS корректны и автоматически обновляются
- [ ] Переменные .env заполнены (DB*, MAIL*, APP_URL)
- Права на файлы и папки установлены правильно
- Регулярный бэкап базы данных настроен
Роли и ответственность (короткий чеклист)
- Системный администратор: установка PHP, Nginx, MariaDB, бэкапы.
- DevOps/инженер релиза: CI/CD, обновления Cachet, мониторинг сертификатов.
- Оператор поддержки: создание сообщений об инцидентах, уведомления подписчиков.
- Безопасность: аудит прав доступа, 2FA, политика паролей.
Runbook: основные ошибки и способы устранения
- Nginx возвращает 502 Bad Gateway
- Проверьте, что PHP-FPM запущен: sudo systemctl status php-fpm
- Убедитесь, что fastcgi_pass в конфигурации совпадает с настройкой php-fpm (TCP порт или сокет).
- Ошибки миграции/установки в php artisan cachet:install
- Проверьте подключение к БД (.env DB_*). Тест: mysql -u cachet_user -p -h 127.0.0.1 cachet_db
- Убедитесь, что у пользователя БД есть права на создание и изменение таблиц.
- Проблемы с SSL
- Проверьте пути к сертификатам в конфигурации Nginx.
- Смотрите логи acme.sh и /var/log/nginx/error.log.
- Почта не уходит
- Проверьте настройки MAIL_DRIVER, SMTP-хост, порт и аутентификацию в .env.
Рекомендации по безопасности
- Включите двухфакторную аутентификацию для админов.
- Ограничьте доступ к /dashboard по IP при необходимости.
- Используйте безопасные пароли и храните секреты вне репозитория.
- Настройте автоматические обновления безопасности для ОС и PHP.
- Отключите ненужные расширения PHP.
Миграция/обновление Cachet: краткая методология
- Сделайте полный бэкап базы данных и папки /var/www/cachet
- Войдите в maintenance mode (если предусмотрено) или поставьте сайт на кратковременный read-only режим
- Выполните git pull и composer install –no-dev -o
- Запустите миграции: php artisan migrate
- Очистите кэш: php artisan config:cache && php artisan route:cache
- Тестируйте в staging перед продакшеном
Критерии приёмки
- Страница статуса доступна по HTTPS без ошибок сертификатов.
- Авторизация и создание инцидента работают.
- Уведомления подписчиков отправляются корректно.
- Логи ошибок не содержат критических исключений.
Короткий глоссарий
- APP_URL — базовый URL приложения Cachet.
- .env — файл с конфигурацией окружения приложения.
- artisan — интерфейс командной строки Laravel/Cachet.
Полезные ссылки
- Официальный сайт Cachet: https://cachethq.io/
- Репозиторий Cachet на GitHub: https://github.com/CachetHQ/Cachet
Заключение
Вы установили Cachet и настроили окружение: PHP-FPM, Nginx, MariaDB и TLS. После финальной настройки через веб‑мастер вы получите рабочий статус‑пейдж для оповещений пользователей и команд. Следуйте чеклистам по безопасности и бэкапам для стабильной работы.
Важно: если у вас специфичная инфраструктура (контейнеры, Kubernetes, облако), рассмотрите адаптацию шагов под вашу среду и настройку внешнего хранения секретов и логов.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента