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

Установка Restyaboard на CentOS 7

7 min read DevOps Обновлено 16 Oct 2025
Установка Restyaboard на CentOS 7
Установка Restyaboard на CentOS 7

О чём эта инструкция

  • Назначение: развернуть рабочую копию Restyaboard на сервере CentOS 7.
  • Кому подходит: системным администраторам и девопсам, которые управляют self-hosted сервисами.
  • Краткое требование: минимальный сервер с root-доступом и доступом в интернет.

В статье приведены подробные команды, файлы конфигурации и рекомендации по проверке. В конце — чеклист для ролей, план обновления и раздел «отладка».

Быстрые факты

  • Приложение: Restyaboard (PHP, PostgreSQL)
  • СУБД: PostgreSQL 9.6
  • Веб-сервер: Nginx
  • PHP: 7.0 (php-fpm)
  • ОС: CentOS 7

Important: PHP 7.0 больше не поддерживается официально; используйте его только если совместимость критична. По возможности мигрируйте на поддерживаемую ветку PHP и совместимую версию Restyaboard.

Пререквизиты

  • Минимальный сервер с CentOS 7
  • root или su-привилегии
  • Открытые порты 80/443 и 22 для SSH
  • Доменное имя (рекомендуется) или публичный IP

Краткое определение: self-hosted — приложение, которое вы размещаете и управляете на собственном сервере, не завися от облачных сервисов третьих сторон.

Шаг 1 — Установка Nginx

Перед установкой обновите систему:

yum -y update

EPEL не содержит Nginx по умолчанию, поэтому подключите EPEL:

yum -y install epel-release

Установите nginx:

yum -y install nginx

Запустите и включите автозапуск:

systemctl start nginx systemctl enable nginx

Проверьте статус:

systemctl status nginx

Если firewall включён, разрешите HTTP/HTTPS:

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Notes: если вы планируете проксировать Nginx через внешний балансировщик, настройте server_name и правила соответственно.

Шаг 2 — Установка и настройка PHP-FPM с mbstring

Restyaboard заявляет о поддержке PHP 7.0; инструкция показывает установку через репозиторий Webtatic.

Установите Webtatic:

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Установите PHP 7.0 и расширения, необходимые приложению:

yum -y install php70w php70w-fpm php70w-devel php70w-cli php70w-curl php70w-pgsql php70w-mbstring php70w-ldap php70w-pear php70w-imap php70w-xml php70w-pecl-imagick ImageMagick

По умолчанию php-fpm настроен под Apache user; изменим его под nginx. Откройте конфигурационный файл пула:

nano /etc/php-fpm.d/www.conf

Найдите и измените user/group на nginx:

; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

Переключаемся с TCP-порта на Unix-сокет (рекомендуется для производительности и безопасности):

listen = /run/php-fpm/php7.0-fpm.sock

Установите владельца, группу и права сокета:

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Редактирование php.ini — timezone и безопасные опции:

nano /etc/php.ini

Установите часовой пояс (пример):

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Kolkata

Замените на ваш регион, например Europe/Moscow, если требуется.

Отключите cgi.fix_pathinfo (важно для безопасности):

cgi.fix_pathinfo=0

Установите GeoIP и подключите расширение:

yum -y install GeoIP-devel

Добавьте в конец /etc/php.ini:

extension=geoip.so

Запустите php-fpm и включите автозапуск:

systemctl start php-fpm systemctl enable php-fpm

Перезапустите Nginx:

systemctl restart nginx

Important: проверьте, что сокет /run/php-fpm/php7.0-fpm.sock существует и принадлежит nginx. При проблемах — смотрите логи /var/log/php-fpm/error.log и /var/log/nginx/error.log.

Шаг 3 — Установка и настройка PostgreSQL

PostgreSQL служит хранилищем данных Restyaboard.

Добавьте репозиторий PostgreSQL 9.6:

rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

Установите сервер и дополнительные модули:

yum -y install postgresql96-server postgresql96-contrib

Инициализируйте базу данных:

/usr/pgsql-9.6/bin/postgresql96-setup initdb

Откройте pg_hba.conf для настройки аутентификации:

nano /var/lib/pgsql/9.6/data/pg_hba.conf

Замените локальную аутентификацию peer на trust (локально) и ident на md5 для IPv4/IPv6, чтобы использовать пароли:

local   all             all                                     trust
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5

Запустите и включите PostgreSQL:

systemctl start postgresql-9.6 systemctl enable postgresql-9.6

Установите пароль для системного пользователя postgres (опционально можно менять после входа в psql):

passwd postgres

Переключитесь на postgres и создайте пользователя базы:

su - postgres
createuser rb_user
psql

В psql задайте пароль и создайте базу данных:

ALTER USER rb_user WITH ENCRYPTED password 'StrongPassword';
CREATE DATABASE rb_data OWNER rb_user ENCODING 'UTF8' TEMPLATE template0;
\q

exit # вернуться в root

Security note: используйте сложные пароли и управляйте доступом через firewall и локальные правила. Для production-системы рассмотрите кластеризацию/репликацию PostgreSQL.

Шаг 4 — Загрузка Restyaboard

Скачайте готовый релиз и распакуйте:

cd /usr/share/nginx/html wget https://github.com/RestyaPlatform/board/releases/download/v0.4.2/board-v0.4.2.zip

Если нет unzip:

yum -y install unzip

Распакуйте:

unzip board-v0.4.2.zip -d board

Импортируйте SQL-дамп в созданную базу:

psql -d rb_data -f "/usr/share/nginx/html/board/sql/restyaboard_with_empty_data.sql" -U rb_user

Отредактируйте конфигурацию Restyaboard с учётом учётных данных БД:

nano /usr/share/nginx/html/board/server/php/config.inc.php

Найдите и измените значения:

define('R_DB_HOST', 'localhost');
define('R_DB_USER', 'rb_user');
define('R_DB_PASSWORD', 'StrongPassword');
define('R_DB_NAME', 'rb_data');
define('R_DB_PORT', 5432);

Важно: не оставляйте пароль в общедоступных бэкапах.

Шаг 5 — Конфигурация блока сервера Nginx

В архиве есть конфиг для Restyaboard; скопируйте его в /etc/nginx/conf.d:

cp /usr/share/nginx/html/board/restyaboard.conf /etc/nginx/conf.d
nano /etc/nginx/conf.d/restyaboard.conf

В начале замените default_server и server_name:

server {
        listen 80;
        server_name board.yourdomain.com;

Укажите корректный документ-рут для релиза:

root /usr/share/nginx/html/board;

location / {
        root /usr/share/nginx/html/board/client;
}

root /usr/share/nginx/html/board/client;

Проверьте fastcgi_pass: у вас должен быть тот же путь, что указали в php-fpm:

fastcgi_pass    unix:/run/php-fpm/php7.0-fpm.sock;

Сохраните и закройте файл.

Назначьте владельца и права:

chown -R nginx:nginx /usr/share/nginx/html/board/
chmod -R go+w "/usr/share/nginx/html/board/media"
chmod -R go+w "/usr/share/nginx/html/board/client/img"
chmod -R go+w "/usr/share/nginx/html/board/tmp/cache"
chmod -R 0755 /usr/share/nginx/html/board/server/php/shell/*.sh

Добавьте cron-задачи для фоновых задач Restyaboard:

echo "*/5 * * * * /usr/share/nginx/html/board/server/php/shell/instant_email_notification.sh" >> /var/spool/cron/root
echo "0 * * * * /usr/share/nginx/html/board/server/php/shell/periodic_email_notification.sh" >> /var/spool/cron/root
echo "*/30 * * * * /usr/share/nginx/html/board/server/php/shell/imap.sh" >> /var/spool/cron/root
echo "*/5 * * * * /usr/share/nginx/html/board/server/php/shell/webhook.sh" >> /var/spool/cron/root
echo "*/5 * * * * /usr/share/nginx/html/board/server/php/shell/card_due_notification.sh" >> /var/spool/cron/root

Important: cron-файлы редактировать аккуратно; убедитесь, что в результате не продублируются строки при повторных запусках скрипта установки.

SELinux и доступность

Инструкция предлагает отключить SELinux, так как проксирование может конфликтовать с политиками. Для временного отключения:

setenforce 0

Чтобы полностью отключить, отредактируйте /etc/selinux/config:

nano /etc/selinux/config

Измените:

SELINUX=disabled

Security note: отключение SELinux снижает защиту. Альтернатива — настроить правильные контексты SELinux для Nginx и PHP-FPM. Для production-среды рекомендуется либо корректная настройка контекстов, либо документированное и обоснованное отключение с ведением риска.

После всех изменений перезапустите Nginx:

systemctl restart nginx

Зайдите по адресу:

http://board.yourdomain.com

Вы увидите экран логина.

Экран входа Restyaboard

Логин по умолчанию: admin / restya. После входа — поменяйте пароль администратора и настройте почту для уведомлений.

Рабочая панель Restyaboard

Создание новой доски: кликните стрелку в левом углу и затем Add Board или Organization.

Создание новой доски

Введите имя и выберите шаблон.

Выбор шаблона для доски

Готовая доска будет выглядеть так:

Новая доска в Restyaboard

Админ-панель доступна внизу справа -> Admin -> Settings.

Доступ к админ-панели

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

  • Измените дефолтные пароли и создайте отдельные учётные записи с минимальными правами.
  • Включите HTTPS (Let’s Encrypt + certbot) и перенаправление 80 -> 443.
  • Настройте регулярное резервное копирование базы данных и медиа-файлов.
  • Ограничьте доступ к административным URL по IP, если это возможно.
  • Логи: /var/log/nginx, /var/log/php-fpm/*. Анализируйте и храните ротацию логов (logrotate).

Пример включения HTTPS с certbot (nginx plugin):

yum -y install certbot python2-certbot-nginx
certbot --nginx -d board.yourdomain.com

Резервное копирование и восстановление

Минимально требуется бэкап SQL-дампа и каталога media.

Резервное копирование БД:

pg_dump -U rb_user -F c rb_data > /root/backups/rb_data_$(date +%F).dump

Резервное копирование файлов:

tar -czf /root/backups/restyaboard_media_$(date +%F).tgz /usr/share/nginx/html/board/media

Критерии приёмки: после восстановления база и медиа должны соответствовать тестовой доске; пользователи должны входить и загружать карточки.

Тесты и приёмка

  • Откройте главную страницу и убедитесь, что логин доступен.
  • Залогиньтесь под админом, смените пароль, создайте доску, колонку и карточку.
  • Проверьте отправку писем (при необходимости настройте SMTP) и выполнение cron-скриптов (проверьте логи).
  • Проверьте загрузку и отображение изображений на карточках.

Тестовые команды:

curl -I https://board.yourdomain.com
psql -U rb_user -d rb_data -c "SELECT count(*) FROM boards;"
ls -l /usr/share/nginx/html/board/media

Troubleshooting — типичные ошибки и решения

  • 502 Bad Gateway: проверьте статус php-fpm и путь сокета, права на сокет, nginx-конфигурацию fastcgi_pass.
  • 500 Internal Server Error: смотрите логи nginx и php-fpm, включите display_errors в dev среде.
  • Проблемы с почтой: проверьте настройки SMTP в админке или в config.inc.php, последовательно тестируйте через telnet/openssl s_client.
  • Проблемы с правами на файлы: убедитесь, что nginx владеет каталогами и что нужные папки имеют запись.

Альтернативные подходы

  • Docker: развернуть Restyaboard в контейнерах (nginx + php-fpm + postgres) для изоляции и быстрой миграции.
  • Apache + mod_php: если требование инфраструктуры — использовать Apache.
  • Использовать более новые версии PostgreSQL/PHP: перед переходом — проверьте совместимость Restyaboard.

Ментальная модель деплоя

  1. Сеть и домен
  2. Веб-сервер и PHP
  3. СУБД и данные
  4. Приложение и права
  5. Фоновые задачи и мониторинг
  6. Резервирование и безопасность

Эта последовательность помогает минимизировать простоев и упростить откат.

План обновления (high-level)

  1. Сделать полный бэкап БД и медиа
  2. Тестировать обновление на копии инстанса
  3. Откатный план (вернуться к бэкапу)
  4. Применить обновление на проде вне пиковых часов
  5. Проверить функциональность и логи

Роли и чеклист

  • Системный администратор:
    • Установить и проверить Nginx, PHP-FPM, PostgreSQL
    • Настроить брандмауэр и HTTPS
    • Настроить бэкап и мониторинг
  • Разработчик / интегратор:
    • Проверить API-интеграции, webhook-ы
    • Протестировать импорт/экспорт данных
  • Администратор приложения (продукт):
    • Создать организации и шаблоны досок
    • Настроить почтовые уведомления и права пользователей

SOP: быстрый чеклист развёртывания

  1. Обновить систему: yum -y update
  2. Установить nginx, epel
  3. Установить PHP-FPM и расширения
  4. Настроить php.ini и сокет
  5. Установить PostgreSQL, создать пользователя и БД
  6. Скачать и распаковать Restyaboard
  7. Импортировать SQL, настроить config.inc.php
  8. Настроить nginx-конфигурацию, права файлов
  9. Добавить cron, настроить SELinux или контексты
  10. Настроить HTTPS и бэкап

Часто задаваемые вопросы

Как сменить пароль администратора?

Перейдите в Admin → Users, выберите admin и измените пароль. Если недоступно, смените в базе напрямую.

Можно ли использовать MySQL вместо PostgreSQL?

Restyaboard использует PostgreSQL в текущей инструкции; замена на MySQL потребует иной сборки/конфигурации и проверки совместимости.

Нужно ли отключать SELinux?

Не обязательно. Корректная настройка контекстов SELinux предпочтительнее отключения. Отключение — быстрый, но менее безопасный путь.

FAQ (в формате для JSON-LD внизу)

Итог и рекомендации

Restyaboard можно поставить на CentOS 7 по шагам: Nginx → PHP-FPM → PostgreSQL → развертывание приложения → настройка прав и cron. Для production-среды дополнительно настройте HTTPS, бэкапы, мониторинг и продумайте политику безопасности (SELinux/контейнеризация).

Ключевые действия на ближайшие 24 часа:

  • сменить дефолтный пароль admin
  • настроить HTTPS
  • настроить ежедневные бэкапы

Спасибо — после развёртывания проверьте логи и выполните минимальные тесты из раздела «Тесты и приёмка».

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

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

Создание домена аутентификации WiKID
Аутентификация

Создание домена аутентификации WiKID

Открыть и редактировать ODT в браузере
Обзор ПО

Открыть и редактировать ODT в браузере

Windows 11 в стиле ChromeOS с Start11
Windows

Windows 11 в стиле ChromeOS с Start11

Репликация MySQL с SSL на CentOS 5.4
Базы данных

Репликация MySQL с SSL на CentOS 5.4

Как открыть AppImage в Linux
Linux

Как открыть AppImage в Linux

Do Not Track — что это и как включить
Приватность

Do Not Track — что это и как включить