Заметки программиста

Расширение в ISPConfig для выполнения задания

Чтобы создать расширение в ISPConfig, которое выполняет задание по записи файла, вам нужно создать простой PHP-файл, который будет вызываться демоном. Этот подход не требует использования веб-интерфейса и API, так как вы напрямую интегрируете свой код в систему заданий сервера. 

Шаг 1: Создание файла задания

Создайте файл задания для вашего плагина. В этом примере файл будет называться hello.job.php и будет содержать логику для записи файла.

  1. Создайте файл в директории server/plugins-available/.bashsudo nano /usr/local/ispconfig/server/plugins-available/hello.job.php Используйте код с осторожностью.

Вставьте в этот файл следующий PHP-код:

php

<?php
// Подключение к ISPConfig. Необходимо для использования глобальных переменных и функций.
require_once('/usr/local/ispconfig/server/lib/config.inc.php');
require_once('/usr/local/ispconfig/server/lib/app.inc.php');

// Проверяем, что скрипт запущен демоном, а не через веб-интерфейс
if (PHP_SAPI !== 'cli') {
    die('This script can only be run from the command line.');
}

// Логика записи файла
$file_path = '/tmp/hello_from_ispconfig.log';
$message = "Hello, ISPConfig daemon!\n";
$timestamp = date('Y-m-d H:i:s');
$log_entry = "[$timestamp] $message";

// Открываем файл для записи. 'a' — для добавления в конец.
file_put_contents($file_path, $log_entry, FILE_APPEND);

// Добавляем сообщение в лог демона
$app->log('Hello job executed successfully.', 'INFO');
?>

Шаг 2: Включение плагина через символическую ссылку

Чтобы демон ISPConfig узнал о вашем новом задании, нужно создать символическую ссылку на файл в директории server/plugins-enable/

bash

sudo ln -s /usr/local/ispconfig/server/plugins-available/hello.job.php /usr/local/ispconfig/server/plugins-enabled/hello.job.php

Шаг 3: Настройка запуска задания

Чтобы демон ISPConfig регулярно запускал ваше задание, нужно добавить его в список cron-заданий в конфигурации сервера.

  1. Откройте файл server/lib/config.inc.php: sudo nano /usr/local/ispconfig/server/lib/config.inc.php

Найдите массив $conf['server']['cron_jobs'] и добавьте в него имя вашего файла:

php

$conf['server']['cron_jobs'] = array(
    'cron.job.php',
    'cron_daily.job.php',
    'cron_weekly.job.php',
    'cron_monthly.job.php',
    'hello.job.php' // Добавляем ваше задание
);

Шаг 4: Перезапуск демона ISPConfig

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

bash

sudo systemctl restart ispconfig

Шаг 5: Проверка

  1. Дождитесь выполнения задания. Демон ISPConfig запускает cron-задания с определённым интервалом (обычно каждую минуту).
  2. Проверьте наличие файла. Убедитесь, что файл /tmp/hello_from_ispconfig.log создан и содержит ваши записи.bashcat /tmp/hello_from_ispconfig.log Используйте код с осторожностью.

Проверьте лог демона ISPConfig. Вы можете найти записи о выполнении вашего задания в системных логах.

bash

grep "hello job" /var/log/ispconfig/ispconfig.log

Важное замечание:
Этот метод напрямую интегрирует код в систему демона ISPConfig. Это подходит для простых задач, но для более сложных или зависимых от данных операций рекомендуется использовать API или систему cron-заданий через веб-интерфейс.