2010-08-27 10 views

risposta

13

n. grails run-app è progettato per lo sviluppo, in modo interattivo.

Se si desidera controllare grails come servizio, è necessario distribuirlo in un contenitore di applicazioni Web come tomcat. Il plugin tomcat ti consente di distribuire facilmente la tua app su tomcat, ad esempio. Aggiungere le linee come

tomcat.deploy.username="manager" 
tomcat.deploy.password="secret" 
tomcat.deploy.url="http://myserver.com/manager" 

a Config.groovy e quindi è possibile utilizzare

grails tomcat deploy 
grails tomcat undeploy 

per avviare e interrompere la vostra applicazione. In alternativa, è possibile utilizzare grails war per raggruppare l'app in un archivio di guerra che tutti i server di app java dovrebbero essere in grado di utilizzare.

Se davvero si vuole fermare grails run-app senza Ctrl + C, scrivere un piccolo controller che chiama System.exit(0). Quindi vai a quell'URL o scrivi un piccolo script di shell o un file batch che lo richiama con ad es. wget o curl.

+1

Se si esegue il percorso di un'azione del controllore accessibile tramite Web per terminare l'applicazione, assicurarsi di rimuoverlo prima della distribuzione in produzione o di proteggerlo in modo che gli utenti malintenzionati non possano semplicemente uccidere l'app. – cdeszaq

0

modo rapido è quello di uccidere il processo java:

ps -aux | grep grails 

kill "ID proess dall'alto che è contenitore per l'applicazione"

1

ho trovato un modo pulito che funziona su Grails 2.0.1 me.

Questo è un hack che utilizza un hack inserito in GrailsRun.groovy per arrestare i server dopo aver eseguito test funzionali. (Vedi linea 246)

Creare un file nella basedir applicazione denominata .kill-run-app

Quando Grails vede il file .kill-run-app, emette un grailsServer.stop(). Elimina inoltre comodamente il file. Questo può dipendere dall'avere autoRecompile. Non sono sicuro, come ho detto questo è un trucco.

Un giorno molto probabilmente smetterà di funzionare quando lo script GrailsRun.groovy viene modificato.

Ho creato un semplice target Ant per farlo. Certo, avrai bisogno di un altro terminale per eseguirlo (in realtà lo eseguo da Eclipse).

<target name="kill-app" description="--> Kills Grails web application" depends=""> 
    <touch file="${basedir}/.kill-run-app"/> 
</target> 
3

In Grails 2.1.0, un semplice "uscita" si ferma il server

0

Sono nuovo di Grails e ho anche avuto questo "problema". Ho scritto un piccolo script (chiamato grill ;-)) che uccide tutti i processi di graal.

#!/bin/bash 
for P in $(ps aux | grep grails | grep java | awk '{print $2};'); do 
kill -9 $P 
done 
exit 0 
10

per l'arresto del server:

Uscita dal terminale e utilizzare uno qualsiasi dal basso comando

  • graal uscire
  • graal stop-app
  • graal smettere
+1

Ciao diluito, i comandi sopra non funzionano in Grails 2.1.1 – Halil

+0

'grails stop-app' funziona su Grails 3 – GreenGiant

6

in Grails 2.3.3, l'esecuzione di 'grails dev run-app' nella riga di comando lascia la finestra di comando in un tipo di limbo. Non ti restituisce il prompt dei comandi, Ctrl-C non fa nulla e devi tornare a uccidere i processi a mano.

E 'molto più piacevole da seguire l'uso previsto, come segue:

  1. Nella riga di comando, immettere il comando 'graal' e premete Invio (informazione parametri sono dati). Ciò avvia grails stesso (e solo grails, cioè non avvia il tuo server o app). Ciò si traduce in un nuovo processo java. Ti restituisce anche il prompt Grails, quindi hai ancora il controllo.

1,1 Alle graal del prompt, è possibile avviare il server (e app), digitando 'run-app'. Questo avvia il tuo server (in modalità dev) e ti restituisce nuovamente il prompt Grails. Con il server in esecuzione, ora sono in esecuzione due processi Java, uno per i grails e l'altro per il server e l'app.

1.2 Se si desidera interrompere il server (e l'app), è possibile, al prompt Grails, immettere 'stop-app', che interromperà il server e l'app. Inoltre, tieni indietro il tuo graal. Dopo aver fermato il tuo server/app, tornerai ad avere solo un processo Java in esecuzione, cioè i graal.

1.3 Al prompt Grails, è possibile avviare e arrestare l'app tutte le volte che lo si desidera.

1.4 Per arrestare graal per sé, ai graal pronta, è possibile immettere 'uscita' o 'quit', e poi si chiuderà graal, e si lascia indietro con il prompt dei comandi normale. A questo punto, anche il processo java di Grails dovrebbe essere eliminato, quindi non dovrebbero esserci processi java in esecuzione.

Credo che tutti i grails 2.3.x si comportino così. Il mio sistema è Windows 7.

Spero che questo aiuti. Noel

+0

Funziona anche su Mac OSX, grazie !! – nickromano

6

Aprire una nuova finestra riga di comando, passare alla directory del progetto e digitare:

graal fermano-app

Questo fermerà l'applicazione se è in esecuzione in modalità biforcuta. È quindi possibile andare allo stesso URL e vedere che la pagina non verrà visualizzata, vale a dire, il server è stato arrestato in quanto verrà specificato anche quando viene eseguito il comando.

-

graal uscire

Questo fermerà l'applicazione se in esecuzione in modalità non biforcuta, altrimenti chiudere la console

-

graal smettere

Esce dalla console.

0

Ho avuto lo stesso problema per arrestare il mio server in esecuzione Grails. Ho fatto

  1. ps aux | graal grep -> che mi ha dato l'uccidere PID
  2. -9 PID

In questo modo sono stato in grado di fermare il mio server in esecuzione. Spero possa aiutare.

Problemi correlati