<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="uk">
	<id>https:///index.php?action=history&amp;feed=atom&amp;title=%D0%AF%D0%B4%D1%80%D0%BE</id>
	<title>Ядро - Історія редагувань</title>
	<link rel="self" type="application/atom+xml" href="https:///index.php?action=history&amp;feed=atom&amp;title=%D0%AF%D0%B4%D1%80%D0%BE"/>
	<link rel="alternate" type="text/html" href=""/>
	<updated>2026-05-05T13:31:48Z</updated>
	<subtitle>Історія редагувань цієї сторінки в вікі</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id></id>
		<title>Sv в 15:29, 13 лютого 2018</title>
		<link rel="alternate" type="text/html" href=""/>
		<updated>2018-02-13T15:29:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторінка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;NoDeny+ это не только веб-интерфейс. В фоне должны выполняться определенные действия, например, снятие абонплаты, подсчет трафика и т.д. Эти действия выполняет ядро биллинга: файл '''nokernel.pl'''&lt;br /&gt;
&lt;br /&gt;
Ядро запускает модули, которые находятся в папке  /usr/local/nodeny/kernel/. Модули конфигурируются двумя способами: через веб-интерфейс и через конфигурационные файлы. Постепенно идет отказ от конфигурационных файлов и параметры переносятся в веб-интерфейс. Если у модуля есть конфигурационный файл с расширением cfg, то в нем есть команда run - следует или нет запускать данный модуль (1 - да, 0 - нет). Нет смысла запускать те модули, которые вам не нужны. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
run =&amp;gt; 1,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание на структуру конфига: переменная =&amp;gt; значение и в конце запятая.&lt;br /&gt;
&lt;br /&gt;
Давайте получим список всех установленных модулей:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
perl /usr/local/nodeny/nokernel.pl -L&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
YES напротив названия модуля означает, что модуль будет запускаться при старте ядра. Стартовать ядро необходимо так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
perl /usr/local/nodeny/nokernel.pl -d &amp;amp;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь мы запустили ядро вручную и при перезагрузке оно само не запустится, поэтому необходимо прописать его старт в автозагрузку (я написал полный путь к интерпретатору perl, поскольку бывали случаи, что в некоторых системах при запуске rc.local не всегда устанавливались необходимые пути):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo '/usr/bin/perl /usr/local/nodeny/nokernel.pl -d &amp;amp;' &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вы ставили NoDeny по документации, то запуск в автозагрузке уже есть и лучше проверить, что нет дублирующего запуска:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /etc/rc.local&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если вдруг показало, что есть дубликат запуска nokernel.pl - удалите, но, внимание! На самом деле, допускается запуск нескольких ядер. Более того, иногда это необходимо.&lt;br /&gt;
&lt;br /&gt;
Здесь необходимо слегка описать как работает ядро. Ядро загружает модули и передает управление первому, когда первый закончил работу - второму, после второго - третьему, после последнего - снова первому и т.д. по кругу. Если какой-то из модулей затупит, другие модули вынуждены будут ждать пока томозящий модуль не закончит работу.&lt;br /&gt;
&lt;br /&gt;
Да, есть модули, которые могут тормозить. Например, заглушка. По сути - это вебсервер, написанный на перл. Когда у заблокированного абонента(тов) запущено много программ, которые делают запросы по http, эти все запросы идут на заглушку, которая будет непрерывно отвечать на них и просто не даст время на выполнение других модулей.&lt;br /&gt;
&lt;br /&gt;
Также может забирать ресурсы модуль подсчета трафика (collectors), особенно если включена детализация.&lt;br /&gt;
&lt;br /&gt;
Поэтому такие модули (cap, collectors), которые требуют ресурсы, необходимо запускать отдельной копией ядра:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
perl /usr/local/nodeny/nokernel.pl -m=collectors -d &amp;amp;&lt;br /&gt;
perl /usr/local/nodeny/nokernel.pl -m=cap -d &amp;amp;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Главное не забыть:&lt;br /&gt;
* установить переменную run =&amp;gt; 0 для этих модулей&lt;br /&gt;
* прописать в автозапуск в /etc/rc.local&lt;br /&gt;
* в автозапуске должен быть запуск nokernel.pl без ключа -m только в одном экземпляре + возможно запуск нескольких ядер с ключем -m=имя модуля&lt;br /&gt;
* не забыть указать ключ -d - это заставит лог писать в файл, а не выводить в консоль&lt;br /&gt;
&lt;br /&gt;
Не забывайте,  если конфиг начинается с подчеркивания - это фантом, если вы его отредактируете, скажем, измените переменную run, то при следующем запуске ''perl install.pl -x'' все изменения затрутся, поэтому менять надо файл modules/имя_модуля/create.kernel.имя_модуля.cfg&lt;br /&gt;
&lt;br /&gt;
Не забывайте про логи в папке  /usr/local/nodeny/logs/ из которых можно понять почему не запустилось ядро.&lt;br /&gt;
&lt;br /&gt;
===Кратко о модулях ядра===&lt;br /&gt;
&lt;br /&gt;
* '''auth''' управляет авторизацией:&lt;br /&gt;
**завершение авторизаций по таймауту. Если не включить модуль, то клиент, единожды авторизовавшись (авторизатором, pppoe и т.д), в админке будет авторизованным все время, не смотря на то, что давно уже отключился.&lt;br /&gt;
**запись в лог авторизаций, благодаря чему можно узнать все сеансы подключений&lt;br /&gt;
**освобождение динамических ip от привязки к клиентам, которые отключились&lt;br /&gt;
*'''websession''' удаляет устаревшие сессии админки. Когда админ/клиент залогинился в админку, создается сессия, которая становится недействительной если не производится никаких действий определенный период времени. Время от времени нужно удалять такие сессии.&lt;br /&gt;
* '''authserver''' принимает соединения от программ-авторизаторов. Если вы не используете такие программы - модуль следует отключить.&lt;br /&gt;
* '''tmppays''' удаляет кредиты, срок которых завершен. Также восстанавливает границу отключения, если пришло время.&lt;br /&gt;
* '''collectors''' опрашивает коллекторы сбора информации о трафике, обрабатывает ее и сохраняет в базе данных. В конфиге задаются тип коллектора и его параметры (адрес и т.д.). Также задаются общие параметры: период опроса и вести ли детализацию. Период опроса - это период, с которым информация будет сохраняться в базе данных, т.е информация записывается срезами, например, собирается минуту, группируется и сохраняется в БД.&lt;br /&gt;
* '''system_clean''' удаляет устаревшую информацию. На данный момент - это удаление устаревшей информации по трафику. Время устаревания задается в настройках. Если вы ведете учет трафика клиентов и, что еще более важно, ведете детализацию по всем ip, с которым были соединения - вам необходимо удалять информацию о давнем трафике иначе рискуете получить переполнение диска. В зависимости от объема сети и ваших дисков установите время устаревания от 2 месяцев до года. Также модуль необходим при использовании блокирующих сообщений.&lt;br /&gt;
* '''services''' завершает услуги, для которых пришло время, а также создает новую, если включен флаг автопродления.&lt;br /&gt;
* '''balance''' переводит учетную запись в состояние &amp;quot;заблокирована&amp;quot;, если баланс становится ниже границы отключения и установлен флаг &amp;quot;блокировать при лимите&amp;quot;. Если упрощенно, то: блокирует клиентов с отрицательными балансами.&lt;br /&gt;
* '''cap''' выводит «заглушку» когда доступ в интернет заблокирован клиенту.&lt;br /&gt;
* '''dhcp''' - управляет авторизацией по dhcp&lt;br /&gt;
* '''make_config''' - периодически создает конфигурационный файл, скажем, для какого-либо устройства. Предварительно требуется создание шаблона конфига иначе нет смысла запускать этот модуль&lt;br /&gt;
* '''notifications''' - отправляет push-уведомления. Например, вы хотите, чтобы сообщения, которые вы отправляете абоненту, оперативно приходили к нему на смартфон и отображались в области уведомлений&lt;/div&gt;</summary>
		<author><name>Sv</name></author>
	</entry>
</feed>