Skocz do zawartości
ownator

Restart Apache Z Poziomu Php

Polecane posty

Czy to jest w ogole mozliwe? nawet nie o restart mi chodzi ale o wykonanie apache2ctl graceful. Probowalem juz za pomoca exec("/usr/sbin/apache2ctl graceful"), shell_exec("/usr/sbin/apache2ctl graceful") , system("/usr/sbin/apache2ctl graceful") lecz za kazdym razem jedyne co uzyskiwalem to: httpd not running, trying to start.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Możliwe jest ale raczej niezbyt dobre ze względu na bezpieczeństwo. Przede wszystkim raczej jedynym użytkownikiem, który może zrobić restart apache jest root natomiast skrypty PHP nie działają (a przynajmniej nie powinny) na takich wysokich prawach. Możesz więc ratować się jakimś sudo lub innymi wynalazkami. Powtórzę jednak raz jeszcze - nie polecam tego ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

dobra wiec moze inaczej.. potrzbne te restarty ze wzgledu na to, ze mam vhosty apacza wpisane do mysql jednak zeby zatrybily musze robic chociaz apache2ctl graceful. jezeli da sie to robic bez retyartu to prosze o nakierowanie mnie chociaz na wlasciwy tor.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Z pomysłu restartu apache z poziomu php lepiej zapomnij.

 

Najprostszy sposób to chyba napisanie skryptu w bashu który sprawdzał będzie czy zostały wprowadzone zmiany w vhost'ach który to odpalany będzie z crona co XX minut?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Najprostszy sposób to chyba napisanie skryptu w bashu który sprawdzał będzie czy zostały wprowadzone zmiany w vhost'ach który to odpalany będzie z crona co XX minut?
...albo odpalenie w tym celu monit'a

 

$ su -
# cat >/etc/monitrc <<EOF
>set daemon 30
>set logfile syslog facility log_daemon
>set alert root@localhost
>
>check file httpd.conf with path /etc/apache2/httpd.conf
>	if changed checksum then exec "/usr/sbin/apachectl2 graceful"
>EOF
# chmod 600 /etc/monitrc
# wget http://www.tildeslash.com/monit/dist/monit-4.10.1.tar.gz
# tar -zxvf monit-4.10.1.tar.gz
# cd monit-4.10.1
# ./configure
# make && make install
# monit

...do autostartu dodaj sobie sam ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Skoro i tak trzeba restartować apache? Nie mam pojęcia... ;) A tak serio to chyba jedyny plus płynie z ułatwionej konfiguracji vhostów (choć jak dobrze to zorganizować to używanie zwykłych plików konfiguracyjnych jest całkiem wygodne).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

#pleple no tak ale mając konfigurację vhostow w bazie danych można sobie nawet dla zabawy zrobic panelik do zarządzania nimi i będzie to chyba znacznie wydajniejsze niż na samych plikach .txt?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nie bedzie wydajniejsze, gdyz apache i tak czyta konfiguracje w momencie startu.

Wygoda tez niekoniecznie - mozna to fajnie zorganizowac na plikach.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jak mnie pamięć nie myli to kiedyś grzebiąc po modułach do apache widziałem jakiś który trzymał konfigurację vhostó tylko w bazie danych ale czy on sprawdza się w praktyce to nie mam pojęcia.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Generalnie jak kto woli. Dla mnie dobrym rozwiązaniem jest używanie plików konfiguracyjnych. Apache całkiem wydajnie nimi zarządza choć tak na prawdę nie jest to jakieś szczególnie istotne bo chyba nikt nie zmienia konfiguracji vhostów kilkadziesiąt razy na sekundę.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

pomysl "p" nawet mi sie spodobal... co do bazy... coz zrobie sobie w takim razie generowanie pliku z vhostami z bazy i problem w sumie z glowy.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dwie proste mozliwosci -

1) skrypt php ktory jak ma restartowac to zaklada plik restartuj

2) co minute z roota z krona skrypt ktory sprawdza czy jest plik restartuj - jak jest - kasuje go i restartuje

 

Druga - rewrite - gotowa regółka - dopisz do httpd.conf to:

LoadModule rewrite_module libexec/mod_rewrite.so

AddModule mod_rewrite.c

RewriteEngine on

RewriteMap lowercase int:tolower

RewriteMap vhost txt:/gdzies-tam-na-serwerze/vhosty.txt

RewriteCond %{HTTP_HOST} !^$

RewriteCond ${lowercase:%{HTTP_HOST}|NONE} ^(.+)$

RewriteCond ${vhost:%1} ^(/.*)$

RewriteRule ^/(.*)$ %1/$1 [E=VHOST:${lowercase:%{HTTP_HOST}}]

 

Utworz plik:

/gdzies-tam-na-serwerze/vhosty.txt

 

a do pliku php niech juz sobie dopisuje wg wzoru:

 

www.domena.pl /home/user/domena

domena.pl /home/user/domena

 

 

I masz online. Najwazniejsze - keep it simple stupid

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Druga - rewrite - gotowa regółka - dopisz do httpd.conf to:

To już chyba prościej jest użyć VirtualDocumentRoot. Tylko, że to (jak i użycie mod_rewrite) często nie jest dopuszczalne rozwiązanie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×