2012-09-04 48 views
10

本地到tomcat部署的時候,我做(如下圖)此更改server.xml中,是有辦法,我可以提供這彈性魔豆?我如何配置提供彈性魔豆的tomcat

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

感謝 '

回答

22

你可以現在就做,不提供定製AMI。按照說明:http://aws.typepad.com/aws/2012/10/customize-elastic-beanstalk-using-configuration-files.html

爲了提供自定義服務器的xml web應用程序中創建文件夾.ebextensions,放在那裏定製的server.xml文件,並添加一個多個文件:服務器update.config與內容:

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

您好,我試圖做這種方式,我得到了以下錯誤消息:「配置文件.ebextensions /服務器update.config在應用程序版本gd377807髒包含無效YAML或JSON YAML例外:當掃描下一個標記發現字符「\ T」不能在「」啓動任何令牌,第2行,第3列:取代-配置:^,JSON例外:在位置0非預期的字符(C)..更新配置文件 – TeraTon

+7

這是因爲YAML沒有在該行開始支持TAB(\ t)的字符,你只能使用空格 –

+0

@sebsto,哇,我希望不止一個「加一」給。 – Beachhouse

10

實現這個無需更換整個Tomcat的server.xml文件的另一種方法是使用在.ebextensions文件夾下(如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 

這個配置創建一個腳本(files),然後運行它(container_command)。該腳本將檢查server.xmlUIREncoding="UTF8"字符串,如果沒有找到它,它然後將它在使用sed命令。

這個解決方案的好處是,如果你升級你的Tomcat版本(例如從7到8),那麼你不必擔心在你的各種WAR文件中更新server.xml

此外,此示例用於添加UIREncoding參數,但腳本非常容易適用於從原始問題中添加<Connector ... />'屬性。

+0

這真的是一個聰明的方式來配置URIEncoding。 –

+0

我可以在不向我的代碼庫中添加.ebextensions的情況下執行此操作嗎?我沒有一個,我已經在Beanstalk中調配了tomcat實例。如果可能,我不想對代碼本身進行任何更改。 –

+0

如果您使用ElasticBeanstalk,則推薦使用.ebextensions。 – bobmarksie