Пакетное добавление сайтов в панель ISP Manager 6
Друзья, привет! Недавно столкнулся с задачей, по переносу с сервера на сервер более пятисот сайтов, после переноса все сайты нужно было добавить в панель управления сервером ISP Manager 6, с указанием директории сайта, алиаса, режима работы PHP и его версию, поддержку HTTPS и SSL сертификат. Разумеется вручную, такую работу выполнить невозможно, поэтому я написал скрипт на PHP, который всю работы сделает сам, а именно: — получит нужные данные из конфигурации хостов веб-сервера Apache и добавить сайты в панель. Далее расскажу обо всем подробнее.
О работе скрипта
Скрипт написан на PHP, для его запуска необходимо указать директорию в которой Apache хранит конфигурационные файлы веб-хостов, это может быть директория на сервере /etc/apache2/vhosts/user/ или /etc/httpd/vhosts/user/. Далее скрипт запускается из командой строки с правами root (т.е. вы должны авторизоваться по SSH именно под root).
Запуск скрипт:
php addSitesToIsp.php |
Скрипт обходит все конфигурационные файлы в директории, получает из них данные о домене, SSL сертификате и IP адресе хоста. Затем, проверяет полученные данные на корректность и путем вызова команды exec(), выполняет внешнюю команду, запрос к API панели ISP Manager, на добавление сайта, с указанием всех необходимых параметров. Если домен уже существует в панели, то он просто будет пропущен, API панели сообщит об этом. Скрипт работает как для панели версии 5, так и 6.
Код скрипта
<?php // Скрипт добавляет домены в ISP. /** * Проверка, является ли переменная IP адресом v4 */ function is_IP($ip) { return (bool) (ip2long($ip) > 0); } /** * Проверка, является ли домен корректным */ function is_valid_domain_name($domain_name) { return (preg_match("/^([a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i", $domain_name) //valid chars check && preg_match("/^.{1,253}$/", $domain_name) //overall length check && preg_match("/^[^\.]{1,63}(\.[^\.]{1,63})*$/", $domain_name) ); //length of each label } $files = scandir('/etc/apache2/vhosts/user/'); // Путь к директории в которой Apache хранит конфигурационные файлы веб-хостов $i = 0; foreach($files as $file) { $file = trim($file); if(!in_array($file, array('.', '..')) && strpos($file, '.conf') !== false ) { $i++; $data = file_get_contents($file); $regexp = "/ServerName\s([a-z0-9_.-]{3,50})$/ism"; preg_match($regexp, $data, $matched); $regexp = "/VirtualHost\s([0-9.]{7,15})/ism"; preg_match($regexp, $data, $matchedHost); if(isset($matched[1]) && is_valid_domain_name($matched[1]) && isset($matchedHost[1]) && is_IP($matchedHost[1])) { $domain = trim($matched[1]); $ip = trim($matchedHost[1]); $regexp = "/SSLCertificateFile\s[\"]{1}(.*?)([\*a-z0-9_.-]{3,50})[\"]{1}/ism"; preg_match($regexp, $data, $matched); if(isset($matched[2])) { $cert = trim($matched[2]); } else { $cert = ''; } $command = '/usr/local/mgr5/sbin/mgrctl -m ispmgr webdomain.edit aliases=www.' . $domain . ' name=' . $domain . ' owner=admin docroot=/var/www/admin/data/www/' . $domain . ' php_mode=php_mode_mod ' . 'php_version=5.6.40 active=on analyzer=off ipaddr=' . $ip .' email=webmaster@' . $domain . ' ' . ($cert ? 'secure=on ssl_port=443 ssl_cert=\'' . $cert . '\' ' : '') . ' sok=ok ;' . "\n\n"; exec($command); echo 'ADD: '. $domain . " | {$cert} \n"; } else { echo 'NOT FOUND Domain'; } } else { echo 'SKEEP: '. $file . "\n"; } } |
Данный скрипт вы можете изменить под себя. Он хорош как базовая заготовка для манипуляцией большим количеством сайтов в рамках панели ISP Manager и использования его API. Разумеется команды API можно использовать и другие, для других действий с сайтами. А если вам нужна помощь в администрировании серверов, с большими объемами данных, большим количеством сайтов, то обращайтесь, буду рад помочь.
Похожие записи
Оставить комментарий
Full Stack
Senior, Architect
предложить оффер
- jQuery: как получить значение атрибута?
- PHP работа с изображением, класс SimpleImage
- Интеграция с API ОСАГО сайта sravni.ru
- Комментарии на PHP, Ajax, mySQL
- PHP: Категории бесконечного уровня вложенности.
- Nginx редирект на другой сервис с сохранением URL спросил (а) Сергей
- Исполнитель пропал, почему такое случается и понять с кем работать? спросил (а) Артем
- Можно ли WordPress считать универсальным движком? спросил (а) Андрей
- Что такое самописный скрипт или CMS? спросил (а) Антон
- Как при поиске в linux используя grep, добавить исключения? спросил (а) Алексей
- Консольный скрипт(JavaScript) для автоматических заказов на OZON к записи
- Консольный скрипт(JavaScript) для автоматических заказов на OZON к записи
- Как создать Telegram-бота с авторизацией через сайт к записи
- PHP скрипт: каталог закладок на сайты к записи
- Валидация на PHP к записи
- Сколько зарабатывают в бизнесе на совместных покупках к записи
- Сколько зарабатывают в бизнесе на совместных покупках к записи
Archive
- +2024 (34)
- Декабрь 2024 (6)
- Ноябрь 2024 (13)
- Октябрь 2024 (8)
- Сентябрь 2024 (1)
- Август 2024 (5)
- Май 2024 (1)
- +2023 (27)
- Ноябрь 2023 (1)
- Октябрь 2023 (13)
- Сентябрь 2023 (10)
- Апрель 2023 (1)
- Март 2023 (1)
- Февраль 2023 (1)
- +2022 (21)
- Декабрь 2022 (11)
- Ноябрь 2022 (1)
- Май 2022 (2)
- Апрель 2022 (2)
- Март 2022 (3)
- Февраль 2022 (1)
- Январь 2022 (1)
- +2021 (17)
- Декабрь 2021 (5)
- Ноябрь 2021 (2)
- Июль 2021 (1)
- Июнь 2021 (2)
- Май 2021 (5)
- Апрель 2021 (1)
- Март 2021 (1)
- +2020 (20)
- Декабрь 2020 (6)
- Сентябрь 2020 (2)
- Август 2020 (1)
- Июль 2020 (2)
- Май 2020 (2)
- Апрель 2020 (2)
- Март 2020 (2)
- Февраль 2020 (1)
- Январь 2020 (2)
- +2019 (18)
- Декабрь 2019 (3)
- Ноябрь 2019 (2)
- Октябрь 2019 (2)
- Сентябрь 2019 (1)
- Август 2019 (2)
- Июль 2019 (1)
- Июнь 2019 (1)
- Апрель 2019 (2)
- Март 2019 (1)
- Февраль 2019 (3)
- +2018 (44)
- Декабрь 2018 (4)
- Ноябрь 2018 (7)
- Октябрь 2018 (8)
- Сентябрь 2018 (1)
- Август 2018 (4)
- Июль 2018 (5)
- Май 2018 (3)
- Апрель 2018 (7)
- Март 2018 (1)
- Февраль 2018 (2)
- Январь 2018 (2)
- +2017 (19)
- Декабрь 2017 (2)
- Ноябрь 2017 (1)
- Октябрь 2017 (1)
- Сентябрь 2017 (2)
- Июль 2017 (1)
- Июнь 2017 (1)
- Май 2017 (2)
- Апрель 2017 (3)
- Март 2017 (2)
- Февраль 2017 (1)
- Январь 2017 (3)
- +2016 (36)
- Декабрь 2016 (3)
- Ноябрь 2016 (3)
- Октябрь 2016 (2)
- Сентябрь 2016 (3)
- Август 2016 (7)
- Июнь 2016 (3)
- Май 2016 (3)
- Апрель 2016 (3)
- Февраль 2016 (1)
- Январь 2016 (8)
- +2015 (36)
- Ноябрь 2015 (5)
- Октябрь 2015 (4)
- Сентябрь 2015 (1)
- Август 2015 (8)
- Июнь 2015 (1)
- Май 2015 (4)
- Апрель 2015 (8)
- Март 2015 (3)
- Февраль 2015 (2)
- +2014 (26)
- Ноябрь 2014 (2)
- Октябрь 2014 (5)
- Сентябрь 2014 (6)
- Июль 2014 (1)
- Июнь 2014 (2)
- Май 2014 (3)
- Апрель 2014 (6)
- Февраль 2014 (1)
- +2013 (27)
- Декабрь 2013 (2)
- Ноябрь 2013 (1)
- Октябрь 2013 (1)
- Август 2013 (1)
- Июль 2013 (3)
- Июнь 2013 (10)
- Май 2013 (1)
- Апрель 2013 (2)
- Февраль 2013 (3)
- Январь 2013 (3)
- +2012 (41)
- Декабрь 2012 (2)
- Ноябрь 2012 (3)
- Октябрь 2012 (7)
- Сентябрь 2012 (2)
- Август 2012 (1)
- Июль 2012 (3)
- Июнь 2012 (2)
- Май 2012 (6)
- Апрель 2012 (2)
- Март 2012 (7)
- Февраль 2012 (5)
- Январь 2012 (1)
- +2011 (57)
- Декабрь 2011 (6)
- Ноябрь 2011 (2)
- Октябрь 2011 (3)
- Сентябрь 2011 (5)
- Август 2011 (4)
- Июль 2011 (3)
- Июнь 2011 (3)
- Май 2011 (3)
- Апрель 2011 (4)
- Март 2011 (10)
- Февраль 2011 (5)
- Январь 2011 (9)
- +2010 (43)
- Декабрь 2010 (7)
- Ноябрь 2010 (21)
- Октябрь 2010 (14)
- Сентябрь 2010 (1)
Свежие записи
- Шифрование в PHP и расшифровка в JavaScript по ключу 15.12.2024
- Объединить несколько PDF в один документ (linux, php) 14.12.2024
- Восстановление работы служб сервера в случае ошибки Mysql —upgrade 12.12.2024
- Пакетное добавление сайтов в панель ISP Manager 6 07.12.2024
- Обрезка документа PDF в Linux из PHP 06.12.2024