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

Установка 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
Автор
Редакция

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

Windows Audio Device Graph Isolation: исправление проблем
Windows

Windows Audio Device Graph Isolation: исправление проблем

Бесплатные альтернативы функциям Windows Pro/Enterprise
Windows

Бесплатные альтернативы функциям Windows Pro/Enterprise

Bing Chat с ChatGPT в Windows 11 — руководство
Руководство

Bing Chat с ChatGPT в Windows 11 — руководство

Установка MyCroft на Gnome Shell
Программное обеспечение

Установка MyCroft на Gnome Shell

Как увеличить громкость Apple Music на iPhone
Музыка

Как увеличить громкость Apple Music на iPhone

Как выбрать электрический велосипед
Транспорт

Как выбрать электрический велосипед