/IntellectBoard

Расширяемый движок сайта с разделами разных типов: форум, блог, микроблог, фотогалерея

Primary LanguagePHPGNU General Public License v3.0GPL-3.0

Intellect Board Pro 3.05 (версия от 31 марта 2024 года)

Intellect Board Pro — это движок форума с открытым исходным кодом. В отличие от аналогичных систем, он изначально создавался с возможностью расширения и включения в форум разделов других типов, что дает возможность реализовать концепцию «сайт на основе форума». На данный момент, помимо обычных форумов, позволяет создавать разделы других типов: блог, микроблог, фотогалерея, статическая страница, раздел анонимных вопросов, ссылка с главной.

Кроме этого, множество готовых классов и модулей и гибкая система управления правами доступа и отображением разделов позволяют использовать Intellect Board как конструктор для создания самых разных социально-ориентированных проектов или личных сайтов, построенных по принципу «все мое — на одном сайте». В долгосрочной перспективе планируется развитие движка до децентрализованной социальной сети.

Ключевыми принципами при разработке Intellect Board являются следующие:

  1. Форум как средство накопления и сохранения знаний. На многих форумах накоплено немало полезной информации, но хранится она там в весьма разрозненном виде. И зачастую чтобы найти что-то полезное, нужно пересмотреть немало тем с флудом. Для недопущения подобного в Intellect Board предусмотрена пометка сообщений как ценных или флудовых (как вручную модератором, так и автоматически по результатам оценки сообщения пользователями), возможность фильтрации тем в разделе и сообщений в теме по целому ряду критериев, использование системы тегов для тем, поддержка поиска с учетом морфологии.
  2. Расширяемость и кастомизация. В Intellect Board имеется большое количество настроек, гибкая система прав доступа, позволяющих управлять отдельными разделами. Кроме того, использование ООП позволяет легко и быстро создать свои типы разделов и служебных модулей (за счет использования наследования), а система наследуемых шаблонов — переделать внешний вид форума (или даже отдельных разделов) под свои нужды с изменением минимального количества файлов.
  3. Дружественность к SEO обеспечивается следующими мерами: использованием HURL, исключением дублированных страниц, уникализацией заголовков и тега description, закрытием служебных страниц с помощью noindex и robots.txt, а также корректной работой с HTTP-заголовками (ошибка 404, заголовок Last-Modified, статус 304 и т.д.).
  4. Защищенность от спама достигается гибкой системой прав доступа, которая позволяет указать, можно ли той или иной группе пользователей использовать внешние ссылки, ограничить количество личных сообщений в час, ввести запрещенные слова, отправка сообщений с которыми будет невозможна. При этом можно настроить автоматическое повышение прав доступа пользователя в зависимости от количества отправленных им сообщений и времени, проведенного на форуме.
  5. Быстрая работа, малая нагрузка на сервер и низкие требования к хостингу обеспечиваются за счет тщательного продумывания структуры и оптимизации кода, простых SQL-запросов с выборками только по индексам (за очень редкими исключениями), активным использованием кеширования различного вида. Кроме того, многие возможности форума являются отключаемыми, что в ряде случаев может дать дополнительную экономию ресурсов.
  6. Контроль над происходящим на форуме: все редактирования сообщений и действия модераторов фиксируются, сохраняются в лог и могут быть легко отменены.
  7. Традиционный интерфейс в духе PHPbb 2.x и Ikonboard 2.x.
  8. Возможность интеграции с социальными сетями: авторизация через социальные сети и возможность быстро поделиться c друзьями той или иной страницей форума, отправка новых сообщений из блогов в ВК и LiveJournal, уведомлений о новых темах в Telegram.

1. Системные требования

  1. Web-сервер Apache 2.x или nginx, поддерживающий выполнение PHP-скриптов (возможна работа и на других серверах, но потребуется ручная настройка переадресации запросов)
  2. PHP версии не ниже 5.3.0 (рекомендуется 7.4 или 8.0, также работоспособен на версии 8.2)
  3. Одна из следующих СУБД: MySQL версии 5.0.4 или выше, PostgreSQL (тестировался на версии 15.6, но возможно, будет работать и на более ранних), SQLite 3.x.
  4. База данных с правами на выполнение основных действий: выборки, создания, удаления записей (на момент установки нужны также права на создание и модификацию таблиц, об этом см. ниже)
  5. Не менее 10 Mb дискового пространства для скриптов и картинок и 10 Mb для базы данных (по мере роста количества пользователей и сообщений на форуме требования к месту на диске будут расти)
  6. Расширение GD для корректной работы с графическими файлами
  7. Лимиты: memory_limit = 4M (рекомендуется 8M на 64-битных системах), max_execution_time = 10 (рекомендуется 30).

2. Загрузка и установка

Установка Intellect Board производится следующим образом: скачайте дистрибутив в формате ZIP или 7z, распакуйте его и загрузите на ваш сервер, после этого запустите устаовочный скрипт install.php. (Если у вас есть доступ по SSH, то можно загрузить дистрибутив на сервер с помощью wget или curl сразу на сервер и распаковать его там.) Если у вас корректно настроено все необходимое (см. ниже), запустится процесс установки, если нет — появится сраница с указанием, что необходимо настроить. Если при попытке запустить инсталлятор появляется белый экран или ошибка 500, попробуйте произвести действия, описанные в файле index.htm в корне дистрибутива.

После окончания установки из соображений безопасности необходимо удалить файл www/install.php. Обычно Центр Администрирования делает это автоматически, но на некоторых хостингах это невозможно. В этом случае на каждой странице Центр Администрирования будет выдаваться предупреждение, и вам необходимо удалить его вручную через FTP или SSH.

При загрузке Intellect Board на хостинг следует учитывать, что он спроектирован из расчета, что через протокол HTTP должны быть доступны только файлы, расположенные в подкаталоге www/. Поэтому если вы устанавливаете его в поддомен, то настройте DocumentRoot для этого поддомена так, чтобы он указывал на подкаталог www/, а не на корень дистрибутива. Т.е., например, если вы установили Intellect Board в каталог /var/www/forum.test.ru, то в качестве DocumentRoot указывайте /var/www/forum.test.ru/www. Если форум ставится в подкаталог, то вместо DocumentRoot можно использовать директиву Alias: Alias /forum /var/www/forum.test.ru/www. Если возможности задать DocumentRoot или Alias нет, то Intellect Board все равно будет работать корректно за счет переадресации запросов с помощью корневого файла .htaccess, но это приведет к незначительному ухудшению производительности.

Для работы Intellect Board на запись пользователю, от имени которого выполняется скрипт, должны быть доступны следующие каталоги (относительно корня скрипта):

  • etc/
  • tmp/
  • logs/
  • www/f/av
  • www/f/cap
  • www/f/ph
  • www/f/up/1
  • www/f/up/1/pr/240x180

При использовании СУБД SQLite на этапе установки для записи также должен быть доступен на запись каталог db — в нём будет создан файл с базой данных.

Примечание: в случае изменения размеров предпросмотров картинок в настройках форума может потребоваться создать другой подкаталог в www/f/up/1/pr/.

В зависимости от особенностей хостинга может потрбоваться выставить им права 700 (rwx------) или 777 (rwxrwxrwx). Попробуйте сначала выставить права 700, если инсталлятор не запустится или выдаст предупреждения о недоступности, измените права на 777.

После того, как права выставлены, запустите install.php. Он произведет проверку системы на соответствие требованиям Intellect Board, запросит данные для подключения к СУБД, произведет начальную настройку таблиц и создание пользователя-основателя. Внимание: не забывайте завершать работу с Центром Администрирования через пункт "Выход", если работаете с чужого компьютера!

Для работы Intellect Board достаточно минимального набора прав доступа к СУБД: SELECT, INSERT, UPDATE, DELETE. Однако в процессе установки нужны также права на создание и изменение таблиц (CREATE и ALTER). С учетом этого в Intellect Board предусмотрена возможность указать для проведения установки IntB учетные данные более привилегированного пользователя, которые будут использоваться только в момент установки. Для этого нужно указать соответствующую опцию на третьем шаге установки. Кроме того, в этом случае база данных и непривилегированный пользователь могут быть созданы прямо в процессе установки.

3. Права доступа

В Intellect Board 3.x по сравнению с 2.x существенно переработана система прав доступа. Все права (за исключением модераторских) назначаются только для групп, а не для отдельных пользователей. При этом существует система наследования: по создании раздела все права доступа к нему наследуются от родительского (а в случае его отсутствия — от прав доступа на форум в целом для данной группы), но при необходимости могут быть заданы явно.

В Центр Администрирования имеют доступ пользователи из групп, имеющих признаки "Основатели" и "Администраторы" (по умолчанию это группы 1024 и 1000), но возможно создание и других групп. При этом Основатели имеют неограниченный доступ, а Администраторы не могут ставить кому-либо права Администратора или Основателя, создавать группы доступа, удалять разделы, очищать корзину или менять некоторые наиболее критичные для работы форума настройки.

Нововведением в IntB 3.x является наличие у групп признака "Команда форума". Пользователи, состоящие в этих группах, выводятся на странице "Наша команда", кроме того, чтобы назначить пользователя модератором или экспертом, его нужно сначала перевести в одну из этих групп.

Все группы доступа делятся на специальные и обычные. В специальную группу пользователь может быть добавлен только администратором, в обычную может попасть по мере активности на форуме: если с момента регистрации прошло указанное количество дней и пользователь набрал необходимое количество сообщений. Переход в обычных группах происходит только снизу вверх, т.е., например, возможен переход из группы с уровнем 100 в группу с уровенем 120, но не наоборот. Кроме того, пользователи из особых групп автоматически не переходят в обычные группы даже при выполнении всех необходимых условий.

4. Планировщик задач Intellect Board

В целях снижения нагрузки на сервер БД Intellect Board снабжен планировщиком, который выполняет периодические задания по очистке устаревших данных форума (таких как старые коды CAPTCHA, результатов поиска по форуму, списка присутствующих онлайн и т.п.). Этот планировщик может быть запущен двумя способами: либо через Web, когда при заходе на сайт пользователя в сайт вставляется прозрачная картинка, при обращении к которой происходит запуск скрипта планировщика, либо с помощью системного cron. По умолчанию включен первый вариант, так как он не требует дополнительных настроек, однако второй вариант предпочтительнее по причине меньшей нагрузки на сервер. Чтобы использовать этот вариант, добавьте в системный cron строку вида

0 * * * cd /путь_к_Intellect_Board/www; /usr/bin/php ./crontab.php

и выставьте в настройках Центра Администрирования опцию "Запуск планировщика заданий форума: Через системный cron".

5. Особенности работы шаблонизатора

В Intellect Board используется шаблонизатор Twig, поддерживающий кеширование. Использование кеш-файлов позволяет существенно снизить объем памяти, требующийся для работы Intellect Board (почти в два раза: при работе с кешированным файлом требуется примерно 2.5 Мб памяти, без кеша — до 4 Мб, а в отдельных случаях и больше), поэтому рекомендуется деражть кеширование включенным, отключая только в ситуациях, когда требуется выполнть какие-либо отладочные действия. Кроме того, имеет смысл переместить кеш в tmpfs, если такое возможно, для увеличения производительности. Путь для сохранения файлов кеша задается в разделе "Задаваемые библиотеки".

Дополнительная документация будет выкладываться по адресу http://intbpro.ru/docs/ по мере написания. В случае проблем со входом в Центр Администрирования по адресу http://адрес_форума/admin/ попробуйте воспользоваться адресом http://адрес_форума/admin/settings/view.htm