이 문서는 Tomcat으로 운영중인 앱을 Bamboo에서 자동으로 배포하는 방법을 정리한다.
Tomcat 설정
Bamboo에서 자동 배포 가능하도록 권한 설정
사용자 및 권한 설정
배포용 사용자 추가 및 권한 설정conf/tomcat-users.xml... <user username="bamboo" password="password" roles="manager-gui,manager-script"/> ...
manager-gui: 웹을 통해 앱 관리를 할 경우 추가
접속 가능한 서버 등록
기본적으로 Tomcat은 동일한 서버로부터의 접속만 허용하므로 배포가 이루어질 배포할 Bamboo 서버의 IP 등록이 필요하다.webapps/manager/META-INF/context.xml<Context antiResourceLocking="false" privileged="true" > <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|<배포할 Bamboo 서버의 IP>|<GUI 화면을 접소할 PC의 IP>" /> <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> </Context>
Tomcat 서버 재기동
설정은 Tomcat 재기동 후 반영된다.bin/shutdown.sh bin/startup.sh
참고사항
server.xml의 파일에서 war배포에 대한 옵션 설정. war파일이 서버에 생성되지 않는 부분과는 상관없음.
conf/server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
- autoDeploy 옵션(디폴트 true)
기본적으로 톰캣은 autoDeploy 옵션이 true일 경우 WAR파일을 appBase(=webapps) 디렉토리에 위치시키면 톰캣 구동시 WAR파일을 자동으로 읽어서 배포(deploy)합니다. - unPackWARs 옵션(디폴트 true)
unPackWARs 옵션이 true로 되어 있을 경우에는 WAR 파일의 압축을 풀어서 배치하게 됩니다. war파일은 서버에 배포되지만 압축을 풀지 않음
Bamboo 설정
- Deploy Tomcat Application 테스크 추가
Add task > Deploy Tomcat Application - 항목 설정
Tomcat Manager URL
설정 항목 설정값 Tomcat Manager URL - http(s)://<tomcat 서버 주소>:<port>/mansger/
예) https://10.0.1.120:8080/manager/
Tomcat Manager Username - tomcat-users.xml 파일에 설정한 manager-script role 을 가진 사용자 이름
예) bamboo
Tomcat Manager Password tomcat-users.xml 파일에 설정한 Manager user의 암호 Application Context 배포할 application의 context 설정 version for Parallel Deployment 하나의 앱에 여러 버전을 배포하는 경우 설정할 수 있으며, Bamboo build number등의 변수를 사용하면 편리하다.
예) $bamboo_buildNumber
WAR File 배포할 war 파일 이름 Deployment Tag undeploy 후 재 배포할 경우 사용할 tag 이름 (tag를 이용해야만 undeploy 가능)
예) 예) $bamboo_buildNumber
재배포 명령 예) http://localhost:8080/manager/text/deploy?path=/footoo&tag=footag
- http(s)://<tomcat 서버 주소>:<port>/mansger/