2012-09-04 37 views
10

al implementar localmente en tomcat, realizo este cambio (a continuación) en server.xml, ¿hay alguna manera en que pueda proporcionar esto a Elastic Beanstalk?¿Cómo proporciono la configuración a tomcat elástico beanstalk

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

gracias '

Respuesta

22

Puede hacerlo ahora sin proporcionar personalizada IAM. Siga las instrucciones en: http://aws.typepad.com/aws/2012/10/customize-elastic-beanstalk-using-configuration-files.html

el fin de proporcionar xml servidor personalizado crear la carpeta .ebextensions en webapp, puso en su lugar a medida archivo server.xml y agregue más archivos: servidor update.config con contenido:

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

Hola, traté de hacerlo de esta manera y recibí el siguiente mensaje de error: "El archivo de configuración .ebextensions/server-update.config en la versión de la aplicación gd377807-dirty contiene YAML o JSON no válido. Excepción de YAML: mientras se busca el token siguiente encontró el carácter '\ t' que no puede iniciar ningún token en "", línea 2, columna 3: replace-config: ^, excepción JSON: carácter inesperado (c) en la posición 0 .. Actualice el archivo de configuración. – TeraTon

+7

Esto se debe a que YAML no admite caracteres TAB (\ t) al comienzo de la línea, solo debe usar espacios –

+0

@sebsto, Wow. Ojalá tenga más de uno "Plus One" para dar. – Beachhouse

10

Otra forma de implementar esta sin tener que reemplazar todo el archivo de Tomcat server.xml está utilizando el siguiente en la carpeta de .ebextensions (por ejemplo 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 

Esta configuración crea una secuencia de comandos (files) y luego la ejecuta (container_command). El script comprueba el server.xml para la cadena UIREncoding="UTF8" y, si no lo encuentra, lo agrega usando el comando sed.

Lo bueno de esta solución es que si actualiza su versión de Tomcat (por ejemplo, de 7 a 8), entonces no tiene que preocuparse de actualizar el server.xml en sus diversos archivos WAR.

Además, este ejemplo es para agregar el parámetro UIREncoding pero la secuencia de comandos se adapta muy fácilmente para agregar la propiedad <Connector ... />' de la pregunta original.

+0

Realmente es una forma inteligente de configurar URIEncoding. –

+0

¿Puedo hacer esto sin agregar un .ebextensions a mi código base? No tenía uno y ya aprovisioné la instancia de tomcat en Beanstalk. No quiero realizar ningún cambio en el código, si es posible. –

+0

Usar .ebextensions es la manera recomendada si está en ElasticBeanstalk. – bobmarksie

Cuestiones relacionadas