2012-09-04 2 views
10

quando si distribuisce localmente su tomcat, apporto questa modifica (sotto) a server.xml, c'è un modo per fornire questo a Elastic Beanstalk?Come fornisco la configurazione per il beanstalk tomcat elastico

<Connector connectionTimeout="20000" port="8080" 
     protocol="org.apache.coyote.http11.Http11NioProtocol" 
     redirectPort="8443"/>' 

grazie '

risposta

22

Si può farlo ora senza fornire personalizzato AMI. Seguire le istruzioni in: http://aws.typepad.com/aws/2012/10/customize-elastic-beanstalk-using-configuration-files.html

Al fine di fornire xml server personalizzato creare la cartella .ebextensions in webapp, ci ha messo personalizzato server.xml di file e aggiungere più di un file: server update.config con i contenuti:

container_commands: 
    replace-config: 
    command: cp .ebextensions/server.xml /etc/tomcat7/server.xml 
+0

Ciao, ho provato a farlo in questo modo e ho ricevuto il seguente messaggio di errore: "Il file di configurazione .ebextensions/server-update.config nella versione dell'applicazione gd377807-dirty contiene YAML o JSON non validi. Eccezione YAML: durante la ricerca di il token successivo ha trovato il carattere '\ t' che non può iniziare alcun token in "", riga 2, colonna 3: replace-config: ^, eccezione JSON: carattere imprevisto (c) nella posizione 0 .. Aggiornamento del file di configurazione. – TeraTon

+7

Questo perché YAML non supporta i caratteri TAB (\ t) all'inizio della riga, è necessario utilizzare solo gli spazi –

+0

@sebsto, Wow. Vorrei avere più di uno "Plus One" per dare. – Beachhouse

10

Un altro modo per implementare questo senza dover sostituire l'intero file Tomcat server.xml sta usando il seguente nella cartella .ebextensions (ad es tomcat.config)

files: 
    "/tmp/update_tomcat_server_xml.sh": 
    owner: root 
    group: root 
    mode: "000755" 
    content: | 
     #! /bin/bash 
     CONFIGURED=`grep -c '<Connector port="8080" URIEncoding="UTF-8"' /etc/tomcat7/server.xml` 
     if [ $CONFIGURED = 0 ] 
     then 
      sed -i 's/Connector port="8080"/Connector port="8080" URIEncoding="UTF-8"/' /etc/tomcat7/server.xml 
      logger -t tomcat_conf "/etc/tomcat7/server.xml updated successfully" 
      exit 0 
     else 
      logger -t tomcat_conf "/etc/tomcat7/server.xml already updated" 
      exit 0 
     fi 

container_commands: 
    00_update_tomcat_server_xml: 
    command: sh /tmp/update_tomcat_server_xml.sh 

Questa configurazione crea uno script (files) e quindi lo esegue (container_command). Lo script controlla lo server.xml per la stringa UIREncoding="UTF8" e se non lo trova, lo aggiunge quindi utilizzando il comando sed.

La cosa bella di questa soluzione è che se si aggiorna la versione di Tomcat (ad esempio da 7 a 8), non è necessario aggiornare lo server.xml nei vari file WAR.

Inoltre, questo esempio è per l'aggiunta del parametro UIREncoding ma lo script è facilmente adattato per aggiungere la proprietà <Connector ... />' dalla domanda originale.

+0

È davvero un modo intelligente per configurare URIEncoding. –

+0

Posso farlo senza aggiungere un .ebextensions al mio codice base? Non ne avevo uno e ho già eseguito il provisioning dell'istanza di tomcat in Beanstalk. Non voglio apportare modifiche al codice stesso, se possibile. –

+0

Utilizzare .ebextensions è il metodo consigliato se sei su ElasticBeanstalk. – bobmarksie