riavviare sempre apache e bind

catellostefano

Utente Attivo
19 Dic 2008
525
2
0
www.stepo.biz
Ciao a tutti,
avevo una domanda:
si potrebbe evitare (impostando qualcosa) che ad ogni modifica bisogni riavviare il software del server (es. apache)???

ciaooo
 
Su Windows non sono informato, ma su Linux basta inviare il segnale di hangup al processo di Apache per fargli ricaricare le configurazioni. Es.

Codice:
killproc httpd -HUP
 
Se in PHP puoi usare la funzione exec basta fare, ad esempio:

PHP:
exec("net stop apache2.2 && net start apache2.2");

Controlla solo che il servizio si chiami effettivamente apache2.2!!!

Per controllare vai sulla proprietà del servizio e guarda cosa c'è scritto in "Nome del servizio"
 
grazie stasera proverò!!!!

grazie a te sto riuscendo a configurarare il mio server casalingo!!!:book::book:

sai quando installi cPannel/WHM fa tutto lui, il vero piacere è agire direttamente su codice, non pensi???:ilpirata:

ho il mio server con cPannel su (http://www.ismaele.eu)
il nuovo aggira solo sulla lan:o
 
nn và
ti spiego

credo che bind funzioni bene ma apache no, ragionando filosoficamente capisco il motivo

se io dico al server web prima di fermarsi "exec("net stop apache2.2 "

poi gli dico di partire "net start apache2.2"); "

chiaramente al secondo comando non mi risponde in quanto è stato stoppato

ESEMPIO:
io sono Ingegnere edile e sto al 3° piano di una casa in costruzione, vedo che il solaio del 3° piano bisogna rifarlo e dico: "abbattete il 3° solaio" poi una volta abbattuto dico di ricostruirlo, ma se do il primo comando standoci sopra, potrò dare il 2° comando?? no!! perché sono finito sotto le materie!!!

NON so se sono stato chiaro!

MI POTRESTE AIUTARE???


p.s. ho provato a dare questo comando

Codice:
exec("net restart apache2.2");

ma effettivamente non lo riavvia
 
ragionando filosoficamente capisco il motivo
Purtroppo però non stiamo parlando di Iperuranio, ma di un servizio di Windows.

chiaramente al secondo comando non mi risponde in quanto è stato stoppato
Che è come dire che non posso più far ripartire Word dopo averlo chiuso (che magari trattandosi di Word può anche essere vero...)

net restart apache2.2
Questo comando non esiste, che non riavvii così mi sembra il minimo.

Chiariti questi punti:

Collegati sul server, apri il prompt di DOS e digita:
Codice:
net stop apache2.2 && net start apache2.2

E vedi cosa dice.

Tra parentesi, hai controllato che il servizio di Apache si chiami effettivamente "apache2.2"?
 
il servizio si chiama così perche si stoppa ma non si riavvia!!!

ora vado a vedere se il comando lo faccio nel pompet

ti allego il file che ho messo il codice

Codice:
<?php
//Recupero i dati dal form
$utente = $_GET['utente'];
$dominio = $_POST['dominio'];



//creo il virtual host

$fp=fopen('d:\Apache\conf\extra\httpd-vhosts.conf','a');
fwrite($fp, 
'
<VirtualHost *:80>
DocumentRoot "D:/clienti/'.$utente.'/'.$dominio.'/www"
ServerName '.$dominio.'
ServerAlias www.'.$dominio.'
ErrorLog logs/dummy-host2.-error_log
CustomLog logs/dummy-host2.-access_log common
</VirtualHost>
');
fclose($fp);


//creo la cartella $dominio e le sottocartelle www, dns e error

mkdir("D:/clienti/$utente/$dominio", 0700);
mkdir("D:/clienti/$utente/$dominio/www", 0700);
mkdir("D:/clienti/$utente/$dominio/dns", 0700);
mkdir("D:/clienti/$utente/$dominio/error", 0700);


//creo il la zona DNS

$fp=fopen('c:\named\etc\named.conf','a');
fwrite($fp, 
'
zone "'.$dominio.'" {
  type master;
  file "'.$utente.'/'.$dominio.'/dns/db.'.$dominio.'.txt";
};
');
fclose($fp);


//creo il file DNS

$fp=fopen("D:/clienti/$utente/$dominio/dns/db.$dominio.txt",'a');
fwrite($fp, 
'$TTL	86400
@	IN	SOA	ns.server.nino. stepo.server.nino. (
			      1		; Serial
			 604800		; Refresh
			  86400		; Retry
			2419200		; Expire
			  86400 )	; Negative Cache TTL

@	IN	NS	ns.server.nino.
www	IN	A	127.0.0.1
');
fclose($fp);


//riavvio Apache e bind

exec("net restart Apache2.2");

?>



<html>
<head>
<title>Dominio aggiunto con successo</title>
</head>
<body>

Il dominio <?php print $dominio;?>, è stato aggiunto al tuo pacchtto hosting con successo.<br>
- Creazione vistrual-host OK<br>
- Creazione zona DNS OK<br>
<a href="/login">Clicca qui per tornare indietro</a>

</body>
</html>
 
non ancora ho il server su una lan tutta sua e il pc su una lan con il web

e tanto che stò facendo non ho tampo di aggire sul server

ti faccio sapere tra poco
GRAZIE ANCORA
 
fatto e funziona nel pompet dei comandi

poi se faccio una pagina per riavviare bind va perfettamente mentre per apache mi da come risultato: "errore di connessione con il web-server"
 
Beh, che ti dia un errore di connessione mi sembra il minimo dato che la pagina che richiami ti riavvia Apache e quindi chiude tutte le connessioni.
Quello che interessa è se Apache dopo essersi stoppato si riavvia anche!!!
Ieri sera ho provato sotto Windows a richiamare questo script:

PHP:
<?

exec("net stop apache2.2 && net start apache2.2");

?>

Ho ricevuto anch'io ovviamente l'errore di connessione, ma tenendo d'occhio i log di Apache ho anche verificato che il servizio si stoppa e si riavvia. Infatti dopo aver richiamato lo script ed aver atteso il tempo di riavvio di Apache, il webserver mi risponde nuovamente.
 
allora bisognerebbe fare cosa per vedere la pagina, prova ad eseguire il codice che ti ho riportato sopra, vedi un pò (cancella chiaramente ciò che non vuoi che modifichi)!!!!

cioè il risultato della pagina lo deve rilasciare!!!!!
 
Il risultato della pagina non lo può visualizzare dato che il webserver è down. E non c'è scampo... ho provato a cercare in giro se esiste un modo per far ricaricare la configurazione ad Apache senza riavviare sotto Windows, ma non ho trovato niente di incoraggiante.

Da un altro tuo post ho visto che parli di formattare e installare Linux. Se riguarda questa macchina allora il tuo problema è risolto.
 
Ottimo il passaggio a Linux, ma sinceramente uso Ubuntu solo per Desktop, non ho mai testato la versione server e non saprei dire.

Comunque, per completezza col problema iniziale, ho trovato questo per Windows (http://httpd.apache.org/docs/2.2/platform/windows.html):

MaxRequestsPerChild: Like the Unix directive, this controls how many requests (actually, connections) which a single child process will serve before exiting. However, unlike on Unix, a replacement process is not instantly available. Use the default MaxRequestsPerChild 0, unless instructed to change the behavior to overcome a memory leak in third party modules or in-process applications.
Warning: The server configuration file is reread when a new child process is started. If you have modified httpd.conf, the new child may not start or you may receive unexpected results.

La configurazione non si carica immediatamente, ma così non c'è nessun disservizio...
 

Discussioni simili