Tomcat의 자동 배포

Tomcat의 자동 배포

저는 최근 Windows의 Tomcat에서 실행되는 웹 애플리케이션을 설정하고 있습니다. 내가 해야 할 일은 다음과 같습니다.

  • 원하는 폴더에 Tomcat을 추출합니다.
  • 내 웹 애플리케이션이 포함된 폴더를 복사합니다 ./webapps(Tomcat 루트를 기준으로 표시됨).
  • Tomcat의 일부 구성 파일에서 JRE 경로 설정
  • 실행 startup.bat- 생성된 이 콘솔 창에는 유용한 디버깅 출력이 있습니다.

Linux의 상황은 완전히 다른 것 같습니다. 일반적으로 설치를 수행한 후 aptTomcat이 이미 실행 중입니다. 그것은 또한파일 시스템 전체에서 다양한 폴더를 차지합니다.. 서버는 Java가 있든 없든 자동으로 시작되므로(제가 아는 한 실제로는 아직 Java가 없습니다) 콘솔 출력이 없습니다. 그러나 어딘가에 로그가 포함된 폴더가 있어야 합니다.

그래서 제 질문은 Windows에서 제가 한 일을 Tomcat을 사용하여 수행하는 방법입니다. 이 방법을 재현하거나 자동화해야 합니다. Tomcat을 설정할 수 있는 일괄 설치 프로그램을 만들 수 있다면 좋을 것 같습니다.그리고내 웹 앱 - 하지만 그건 문제가 아닙니다.

답변1

Tomcat의 자동 배포

기본적으로 Linux에 Tomcat을 설치하거나 apt선택한 패키지 관리자를 사용하는 것은 쉽지만 지적했듯이 모든 것이 어디에 있고 무엇이 구성되어 있는지 알기가 어렵습니다.

Linux에서 Tomcat 설치를 자동화하기 위해 제가 찾은 가장 구성 가능한 방법은 Chef를 사용하는 것입니다. 이것셰프 DK설치 후 사용할 수 있습니다.톰캣 요리법Chef를 사용하면 Chef를 계속해서 구성하고 배포할 수 있습니다!

Chef를 사용하여 Tomcat을 설치하면 Linux에 Tomcat 설치에 대한 설명서와 일치하는 지원되는 표준 방식으로 일관되게 설치할 수 있다는 이점이 있습니다.

Java 전제조건

Tomcat 레시피는 Java를 설치하지 않으므로 일반적으로 결합합니다.자바 레시피Tomcat을 사용하여 JRE를 자동으로 설치합니다.

Chef 역할은 Tomcat을 설치합니다.

아래는 예시입니다요리사 역할JRE와 Tomcat을 Linux 시스템에 배포했습니다.

  • JRE 및 Tomcat을 설치하는 주요 두 단계는 run_listJSON 파일 섹션 에 있습니다.
  • Chef 역할의 일부는 override_attributesJava 및 Tomcat 레시피에 대한 속성을 설정합니다.
{
  "name": "java-appserver-small",
  "default_attributes": {},
  "override_attributes": {
    "java": {
      "jdk_version": "7"
    },
    "oracle": {
      "accept_oracle_download_terms": true
    },
    "tomcat": {
      "java_options": "${JAVA_OPTS} -Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m -Xmx3g -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+DisableExplicitGC -XX:+CMSClassUnloadingEnabled"
    }
  },
  "json_class": "Chef::Role",
  "description": "Role for Java Apps Servers using OpenJDK7 - 15GB Memory",
  "chef_type": "role",
  "run_list": [
    "recipe[java]",
    "recipe[tomcat]"
  ]
}

학습 곡선이 있지만 Chef를 사용하여 Linux에서 모든 것을 자동화하는 방법을 알게 되면 상상할 수 있는 모든 것을 신속하게 재배포하고 자동화할 수 있는 훌륭한 시작이 됩니다.

애플리케이션 자동 배포(WAR)

Tomcat에 애플리케이션을 배포할 세 번째 레시피를 Chef 역할에 추가할 수 있습니다. 보통 바람둥이구성 가능 자동으로 압축 해제 및 배포전쟁 문서.

run_list다른 레시피를 포함하도록 역할을 수정합니다 .

"run_list": [
  "recipe[java]",
  "recipe[tomcat]",
  "recipe[app-deploy]"
]

Linux 인스턴스의 로컬 파일에서 WAR 배포

Recipe Chef는 app-deploy일련의 지침을 사용하여 사전 정의된 WAR 파일을 Tomcat에 복사합니다.웹 애플리케이션 디렉토리. 아래 레시피 예시에서는 WAR 파일 경로가 별도의 파일에 정의되어 있습니다.속성 파일하지만 복사할 위치를 하드코딩할 수도 있습니다.

#
# Cookbook Name:: myChefCookbook
# Recipe:: app-deploy
#
# This recipe only installs the application.
# Base app server is setup via the java app server role.
#

# Copy WAR to webapps for auto-deployment
execute "cp #{node['myappfile']} /var/lib/tomcat/webapps/" do
  action :run
  not_if { File.exist?("/var/lib/tomcat/webapps/#{server_file(node['myappfile'])}") }
end

이 레시피는 WAR 파일을 복사하고 Tomcat이 이를 배포합니다.

AWS S3 버킷에서 AWS Linux 인스턴스로 WAR 배포

아래의 마지막 레시피 예는 Amazon의 WAR 파일을 복사합니다(AWS 도구 사용).S3 버킷도착하다리눅스 인스턴스Amazon Web Services 클라우드 공급자에서 Chef가 배포한 Tomcat을 실행합니다.

# Copy  WAR to webapps for auto-deployment - Requires that the instance have role with access to bucket
execute "aws s3 cp #{node['urls']['myappurl']} /var/lib/tomcat/webapps/" do
  action :run
  not_if { File.exist?("/var/lib/tomcat/webapps/#{server_file(node['urls']['myappurl'])}") }
end

관련 정보