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

Установка Cachet на CentOS 7 с Nginx, PHP и MariaDB

• 6 min read • Инфраструктура • Обновлено 17 Nov 2025
Установка Cachet на CentOS 7
Установка Cachet на CentOS 7

Это руководство показывает, как установить и настроить открытый статус-пейдж 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-привилегиями

Быстрая карта действий

  1. Обновить систему и установить базовые утилиты.
  2. Установить PHP и расширения.
  3. Установить MariaDB и создать базу данных для Cachet.
  4. (Опционально) Получить TLS-сертификат через acme.sh / Let’s Encrypt.
  5. Установить и настроить Nginx.
  6. Установить Composer и зависимости Cachet.
  7. Запустить инсталлятор 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 — Финальная настройка через веб‑интерфейс

Выберите драйверы кеша и сессий, настройте параметры почты.

Завершение настройки Cachet

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

Общие настройки Cachet

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

Создание админа

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

Установка завершена

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

Панель Cachet

Контрольный список перед запуском

  • Домен и DNS указывают на сервер
  • Порты 80 и 443 открыты и доступны
  • Сертификаты TLS корректны и автоматически обновляются
  • [ ] Переменные .env заполнены (DB*, MAIL*, APP_URL)
  • Права на файлы и папки установлены правильно
  • Регулярный бэкап базы данных настроен

Роли и ответственность (короткий чеклист)

  • Системный администратор: установка PHP, Nginx, MariaDB, бэкапы.
  • DevOps/инженер релиза: CI/CD, обновления Cachet, мониторинг сертификатов.
  • Оператор поддержки: создание сообщений об инцидентах, уведомления подписчиков.
  • Безопасность: аудит прав доступа, 2FA, политика паролей.

Runbook: основные ошибки и способы устранения

  1. Nginx возвращает 502 Bad Gateway
    • Проверьте, что PHP-FPM запущен: sudo systemctl status php-fpm
    • Убедитесь, что fastcgi_pass в конфигурации совпадает с настройкой php-fpm (TCP порт или сокет).
  2. Ошибки миграции/установки в php artisan cachet:install
    • Проверьте подключение к БД (.env DB_*). Тест: mysql -u cachet_user -p -h 127.0.0.1 cachet_db
    • Убедитесь, что у пользователя БД есть права на создание и изменение таблиц.
  3. Проблемы с SSL
    • Проверьте пути к сертификатам в конфигурации Nginx.
    • Смотрите логи acme.sh и /var/log/nginx/error.log.
  4. Почта не уходит
    • Проверьте настройки MAIL_DRIVER, SMTP-хост, порт и аутентификацию в .env.

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

  • Включите двухфакторную аутентификацию для админов.
  • Ограничьте доступ к /dashboard по IP при необходимости.
  • Используйте безопасные пароли и храните секреты вне репозитория.
  • Настройте автоматические обновления безопасности для ОС и PHP.
  • Отключите ненужные расширения PHP.

Миграция/обновление Cachet: краткая методология

  1. Сделайте полный бэкап базы данных и папки /var/www/cachet
  2. Войдите в maintenance mode (если предусмотрено) или поставьте сайт на кратковременный read-only режим
  3. Выполните git pull и composer install –no-dev -o
  4. Запустите миграции: php artisan migrate
  5. Очистите кэш: php artisan config:cache && php artisan route:cache
  6. Тестируйте в staging перед продакшеном

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

  • Страница статуса доступна по HTTPS без ошибок сертификатов.
  • Авторизация и создание инцидента работают.
  • Уведомления подписчиков отправляются корректно.
  • Логи ошибок не содержат критических исключений.

Короткий глоссарий

  • APP_URL — базовый URL приложения Cachet.
  • .env — файл с конфигурацией окружения приложения.
  • artisan — интерфейс командной строки Laravel/Cachet.

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

Заключение

Вы установили Cachet и настроили окружение: PHP-FPM, Nginx, MariaDB и TLS. После финальной настройки через веб‑мастер вы получите рабочий статус‑пейдж для оповещений пользователей и команд. Следуйте чеклистам по безопасности и бэкапам для стабильной работы.

Важно: если у вас специфичная инфраструктура (контейнеры, Kubernetes, облако), рассмотрите адаптацию шагов под вашу среду и настройку внешнего хранения секретов и логов.

Поделиться: 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 быстро