jetty 9 (현재 최신 버전)을 설치하는 하고 거기에 jenkins 까지 올려보겠습니다
STEP1 : jetty 설치
rpm이나 yum을 이용하고 싶으나 공식적인 저장소가 없으므로 기본적인 방법을 이용해보겠습니다.
먼저 jetty 9의 경우 JDK 1.7 버전이 요구됩니다.
# yum install java-1.7.0-openjdk
# cd /tmp
# wget wget http://download.eclipse.org/jetty/9.1.0.v20131115/dist/jetty-distribution-9.1.0.v20131115.tar.gz -O jetty.tar.gz
# tar -xf jetty.tar.gz
jetty라는 사용자를 생성하고 jetty를 /srv/jetty 경로로 이동시킵니다. 이제 /srv/jetty 가 jetty 홈경로입니다. 그리고 권한까지 생성합니다.
# useradd jetty
# mv jetty /srv
# chown -R jetty:jetty /srv/jetty
서비스에 등록한다.
# ln -s /srv/jetty/bin/jetty.sh /etc/init.d/jetty
# chkconfig --add jetty
# chkconfig jetty on
등록된 서비스를 수정한다. 최초 주석 아래쪽에 하단 내용을 추가한다. (본인의 경우 8081을 작동포트로 하였다.)
# vi /etc/init.d/jetty
# jetty에 추가할 내용
JETTY_HOME=/srv/jetty
JETTY_USER=jetty
JETTY_ARGS=jetty.port=8081
JETTY_LOGS=/srv/jetty/logs
8081 방화벽을 해제한다.
# vi /etc/sysconfig/iptables
# 방화벽에 추가할 내용
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT
jetty를 기동하고 내용을 확인한다.
# service jetty start
# curl http://localhost:8081
1차적으로 jetty 가동까지는 확인하였습니다.
STEP2 : jenkins 설치
jetty 기본 webapps 경로에 jenkins.war 최신 버전을 다운로드합니다.
권한 설정을 위해서 jenkins.xml 파일을 webapps에 생성합니다.
* jetty 9 부터는 contexts 폴더가 사라지고 관련 설정을 webapps 폴더에서 합니다.
# /srv/jetty/webapps/jenkins.xml
<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"><!-- ==================================================================Configure and deploy the jenkins web application in $(jetty.home)/webapps/jenkinsNote. If this file did not exist or used a context path other that /jenkinsthen the default configuration of jetty.xml would discover the jenkinswebapplication with a WebAppDeployer. By specifying a context in thisdirectory, additional configuration may be specified and hot deployments detected.===================================================================== --><Configure class="org.eclipse.jetty.webapp.WebAppContext"> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <!-- Required minimal context configuration : --> <!-- + contextPath --> <!-- + war OR resourceBase --> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <Set name="contextPath">/jenkins
</Set> <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/jenkins.war
</Set> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <!-- Optional context configuration --> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <Set name="extractWAR">true
</Set> <Set name="copyWebDir">false
</Set> <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml
</Set> <!--<Set name="overrideDescriptor"><SystemProperty name="jetty.home" default="."/>/webapps/jenkins.d/override-web.xml</Set>--> <Get name="securityHandler"> <Set name="loginService"> <New class="org.eclipse.jetty.security.HashLoginService"> <Set name="name">Jenkins Realm
</Set> <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties
</Set> <!-- To enable reload of realm when properties change, uncomment the following lines --> <!-- changing refreshInterval (in seconds) as desired --> <!-- <Set name="refreshInterval">5</Set> <Call name="start"></Call> --> </New> </Set> <Set name="authenticator"> <New class="org.eclipse.jetty.security.authentication.FormAuthenticator"> <Set name="alwaysSaveUri">true
</Set> </New> </Set> <Set name="checkWelcomeFiles">true
</Set> </Get> <!-- Add context specific logger <Set name="handler"> <New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler"> <Set name="requestLog"> <New id="RequestLogImpl" class="org.eclipse.jetty.server.NCSARequestLog"> <Set name="filename"><Property name="jetty.logs" default="./logs"/>/jenkins-yyyy_mm_dd.request.log</Set> <Set name="filenameDateFormat">yyyy_MM_dd</Set> <Set name="append">true</Set> <Set name="LogTimeZone">GMT</Set> </New> </Set> </New> </Set> --></Configure>
만약 $JETTY_HOME/etc/realm.properties 파일이 존재하지 않으면 생성시켜줍니다.
1. demo 에서 복사
# cp /srv/jetty/demo-base/etc/realm.properties /srv/jetty/etc
2. 직접생성
# vi /srv/jetty/etc/realm.properties
#
# This file defines users passwords and roles for a HashUserRealm
#
# The format is
# <username>: <password>[,<rolename> ...]
#
# Passwords may be clear text, obfuscated or checksummed. The class
# org.eclipse.util.Password should be used to generate obfuscated
# passwords or password checksums
#
# If DIGEST Authentication is used, the password must be in a recoverable
# format, either plain text or OBF:.
#
jetty: MD5:164c88b302622e17050af52c89945d44,user
admin: CRYPT:adpexzg3FUZAk,server-administrator,content-administrator,admin,user
other: OBF:1xmk1w261u9r1w1c1xmq,user
plain: plain,user
user: password,user
# This entry is for digest auth. The credential is a MD5 hash of username:realmname:password
digest: MD5:6e120743ad67abfbc385bc2bb754e297,user
마지막으로 다시 추가된 파일들을 위해서 권한 설정을 하고 재시작을 합니다.
# chown -R jetty:jetty /srv/jetty/webapps
# chown -R jetty:jetty /srv/jetty/etc
# service jetty restart
# curl http://localhost:8081