Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: reload virtual hosts средствани php
Форумы портала PHP.SU » Серверное администрирование » Apache и другие веб-серверы » reload virtual hosts средствани php

Страниц (1): [1]
 

1. OmanDebian - 30 Мая, 2015 - 21:44:21 - перейти к сообщению
Всем привет! Есть задача написать некую штуковину которая будет заставлять перечитывать апач свои виртуальные хосты, данная вещь должна вызываться из php в виде класса, ну например $this->блабла->блабла('reload'); что там дальше будет уже второстепенно, будет ли его релоадить баш, сишный скрипт и т.д.
Апач весит на xampp, перечитывает виртуальные хосты в терминале вот такой командой /opt/lampp/lampp reload, ну и общем упираюсь я в права, не дает мне мне слать это обычной exec функцией. Много что перепробовал многое, и копался в исходниках как webmin, ну в общем не хватает мне мозга это сделать. Не прошу помощи за бесплатно, пишите цену. Также нужен будет мануал по установки или настройки вашего скрипта.
2. DeepVarvar - 30 Мая, 2015 - 23:45:04 - перейти к сообщению
Повесить на рутовый крон задачу, которая будет каждую минуту (это самый короткий интервал крона) запускать некий скрипт (можно даже пыхоскрипт) который будет смотреть "где-то там" пул задач, которые уже успели понадобавлять нажатием кнопок своими шаловливыми ручонками пользаки сайта.
3. LIME - 31 Мая, 2015 - 00:16:16 - перейти к сообщению
Можно проще если подойдет
http://www[dot]softtime[dot]ru/info/apac[dot][dot][dot]p?id_article=103
4. OmanDebian - 31 Мая, 2015 - 00:30:40 - перейти к сообщению
LIME пишет:
Можно проще если подойдет
http://www.softtime.ru/info/apache.php?id_article=103


В моем случае не подойдет, есть 2 домена обращающихся в одну директорию), по данной системе будет 2-е разные директории соответствующие доменам. Крон тоже не вариант, минута долго, а секунда) много, нужно что бы хоб создал домен, подключил и сразу сходу все пере записалось и пере читалось), как на хостах, но опыта мне не хватает такие штуки писать, я рассматривал ваши варианты, к сожалению в моей ситуации они не выход.
5. LIME - 31 Мая, 2015 - 00:39:23 - перейти к сообщению
Чет я не понял
если у тебя все хосты в одну папку смотрят настрой на нее дефолтный хост и все
А если хочешь это делать выборочно просто сделай симлинк на другую папку по нужному пути
6. DeepVarvar - 31 Мая, 2015 - 00:51:34 - перейти к сообщению
Ну влепи права човн-чмод прямо на файл хоста чтобы ввв-дата смог его перезаписывать. А перегружать опач через инотифи: http://habrahabr[dot]kz/blog/752[dot]html
7. OmanDebian - 31 Мая, 2015 - 01:00:38 - перейти к сообщению
DeepVarvar пишет:
Ну влепи права човн-чмод прямо на файл хоста чтобы ввв-дата смог его перезаписывать. А перегружать опач через инотифи: http://habrahabr.kz/blog/752.html


Оп! А вот это уже интересно! Завтра попробую отпишусь!
8. OmanDebian - 31 Мая, 2015 - 11:33:36 - перейти к сообщению
Итак друзья я сделал больше чем хотел, объединив 2-е мысли 2-х людей за это им низки поклон. killer8080 с форума phpforum.su и DeepVarvar с форума forum.php.su.
Итак что же я сделал:
Установил утилиту Inotify которая которая может отслеживать изменение в фалах или каталогах.
создал файла update.sh и задал на наго пользователя из под которого работает apache в моем случае это daemon, со следующим содержимым:

#!/bin/sh
while inotifywait -e modify /domain; do
if tail -n1 /domain | grep 1; then
/restart.c
fi
done

Где:
while inotifywait -e modify /domain; запускает некий цикл который мониторит всегда файл domain
if tail -n1 /domain | grep 1; Проверяет наличия появившейся 1 в данном файле
Если появилась единица то /restart.c

Создал файл restart.c с содержимым

int main() {
system("/opt/lampp/lampp reload");
}

скомпилил командой gcc restart.c -o restart

Дал права только для root что прямого доступа другие не получили

Далее запускаем скрип обычным php exec('./update.sh'), все пошел мониторинг файла domain, теперь всегда скрипт update.sh ждет изменения в файле domain.

Далее на другом сервере из под обычного php по ftp правлю файл domain пишу в его 1 и та да! Срабатывает update.sh, и дальше он запускает restart.c.
Все готово! Осталось только привести это в нужный вид, ибо это черновой рабочий вариант. Мы получили возможность даже удаленного reload виртуальных хостов, т.е. управлять перезагрузкой с абсолютно другого сервера.
Сразу хочу сказать что данная штуковина не работает если включен selinux (долго парился по чему же не работает), пока не разобрался как мне разрешить это все в selinux по этому пока что его отключил.
9. DeepVarvar - 31 Мая, 2015 - 12:51:32 - перейти к сообщению
OmanDebian пишет:
int main() {
system("/opt/lampp/lampp reload");
}
Защем тебе тут вызов завернутый в сю?
Дергай прямо команду:

#!/bin/sh
while inotifywait -e modify /domain; do
if tail -n1 /domain | grep 1; then
/opt/lampp/lampp reload
fi
done
10. OmanDebian - 31 Мая, 2015 - 14:08:08 - перейти к сообщению
DeepVarvar пишет:
OmanDebian пишет:
int main() {
system("/opt/lampp/lampp reload");
}
Защем тебе тут вызов завернутый в сю?
Дергай прямо команду:

#!/bin/sh
while inotifywait -e modify /domain; do
if tail -n1 /domain | grep 1; then
/opt/lampp/lampp reload
fi
done


И так тоже реализовывал но мне показалось что это дыра, т.к. можно запустить reload прям из exec('./update.sh'), а в моем случае на прямую exec('./restart.c') не запускается)))) т.е. ему права нужны, ну типо некая прослойка что бы прямого доступа не было к reload)), хотя хз я не шарю по этому 100% сказать не могу что моя безопасность на самом деле безопасна). А цель всего этого: пишу маленькую панельку типо сипанели в очень урезаной версии для управления хостами и сайтами ибо скопилось очень много и управлять пользователями из ssh неудобно
11. DeepVarvar - 31 Мая, 2015 - 14:52:43 - перейти к сообщению
Нет, ты просто добавил еще один слой. А права пользака и права на файл/команду остались те же.
12. OmanDebian - 31 Мая, 2015 - 16:42:36 - перейти к сообщению
DeepVarvar пишет:
Нет, ты просто добавил еще один слой. А права пользака и права на файл/команду остались те же.


Окей) тогда упростим

 

Powered by ExBB FM 1.0 RC1