migrating to WebSphere Application Server V5.1.x or V6.x to V7.x in the background
migrating to WebSphere Application Server V5.1.x or V6.x to V7.x in the background
IBM HTTPServer rotatelogs log setting
HTTPServer 로그 로테이션 설정
Test Environment
- Test OS : CentOS 7.2
- Test Version : IBM HTTPServer v8.5 (apache)
- 아파치 로그 설정(로테이션 설정)
위치 : /IBM/HTTPServer/conf
수정 : httpd.conf
# ErrorLog logs/error_log
ErrorLog "|/IBM/HTTPServer/bin/rotatelogs /IBM/HTTPServer/logs/error_%Y%m%d.log 86400"
# CustomLog logs/access_log common
CustomLog "|/IBM/HTTPServer/bin/rotatelogs /IBM/HTTPServer/logs/access_%Y%m%d.log 86400" common
- 참고 형식 문자열
%A (지역화된) 완전한 요일 이름
%a (지역화된) 3-문자 요일 이름
%B (지역화된) 완전한 달 이름
%b (지역화된) 3-문자 달 이름
%c (지역화된) 날짜와 시간
%d 2-자리 일
%H 2-자리 시간 (24 시간 시계)
%I 2-자리 시간 (12 시간 시계)
%j 3-자리 날짜수
%M 2-자리 분
%m 2-자리 달
%p (지역화된) 12 시간 시계의 am/pm
%S 2-자리 초
%U 2-자리 주일수 (주의 첫번재 날은 일요일)
%W 2-자리 주일수 (주의 첫번재 날은 월요일)
%w 1-자리 요일수 (주의 첫번째 날은 일요일)
%X (지역화된) 시간
%x (지역화된) 날짜
%Y 4-자리 연도
%y 2-자리 연도
%Z 시간대 이름
%% 문자그대로 `%’
SSL setting
SSL Setting
- Test OS : CentOS 7.2
- Test Version : IBM HTTPServer v8.5, WebSphere v8.5
- httpd.conf 수정 부분
위치 : F:\IBM\HTTPServer\conf
파일 : \httpd.conf
수정 : SSL 설정 부분의 주석 해제
### SSL Module Start ###
NameVirtualHost 211.1.1.1:80
NameVirtualHost 211.1.1.1:443
LoadModule ibm_ssl_module modules/mod_ibm_ssl.so
Listen 443
<VirtualHost ad1.test.com:80>
# ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "C:/IBM/HTTPServer/htdocs"
ServerName ad1.test.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
<VirtualHost ad1.test.com:443>
SSLEnable
SSLClientAuth none
DocumentRoot "C:/IBM/HTTPServer/htdocs"
ServerName ad1.test.com
</VirtualHost>
SSLDisable
Keyfile "C:/IBM/kera.kdb"
# End of example SSL configuration
IBM HTTPServer의 경우 버전에 따라 취약한 프로토콜은 Disable 된다.
- ikeyman을 이용한 인증서 발급
- 발급된 인증서가 있는 경우 해당 인증서 사용
- 콘솔상에서 가상호스트 추가 작업
- 관리콘솔 접속 해당 위치의 추가된 포트 정보 등록
위치: 가상 호스트 > default_host > 호스트 별명
내용: 443 Port 를 기존 가상호스트 에 등록
- WebServer Restart
apachectl -t 옵션으로 conf내의 오류사항을 체크하고 기동
WebSphere에서 OS hostname 변경시 작업 사항
* serverindex.xml 파일의 hostname수정
ND의 경우 [WAS_HOME]/profiles/[Dmgr Profile]/config/cells/[Cell_Name]/nodes
Base의 경우[WAS_HOME]/profiles/[App Profile]/config/cells/[Cell_Name]/nodes(Base의 경우 해당 AppSrv만 수정)
*ND의 경우에는 dmgr과 노드 연합을 이루고 있는 각각의 노드의 모든 serverindex.xml 수정
*serverindex.xml 파일의 기존 hostname 이 남아 있는 경우에는 구동하더라고 시작 안됨
*hostname 변경시 serverindex.xml 파일만 수정 해도 구동이 가능
shell script 이용해서 'target'(old_host_name) 을 $1 (new_host_name) 으로 변경
find ./AppServer -type f | xargs grep -l 'target' > f.txt
for file in `cat f.txt`
do
cat $file | sed "s/target/$1/g" > f1.txt
mv f1.txt $file
done
그 중 IBM에서 소개하고 있는 여러가지 방법은 아래 link를 참고하면 많은 도움이 될듯하다. The WebSphere Contrarian: Changing host names and migrating profiles in WebSphere Application Server
AdminTask 오브젝트에 대한 NodeConfigCommands 명령 그룹
추가적으로 fixpack v6.1.0.25 이상 update 권고...
PK83773: THE ADMINTASK.CHANGEHOSTNAME COMMAND INCORRECTLY MODIFIES THE MULTICAST ENDPOINTS IN SERVERINDEX.XML
fixpack v7.0.0.13 이상 update 권고.
PM13373: UNABLE TO GENERATE CERTS USING REGENDEFAULTCERT OPTION USING WSADMIN ADMINTASK.CHANGEHOSTNAME COMMAND
결론적인내용은다음과 같다.
위치: {Profile_Root}/{Profiles_name}/bin
# ./wsadmin.sh -conntype NONE -lang jython
wsadmin> AdminTask.changeHostName(‘[-nodeName <node_name> -hostName <new_host_name>]‘)
wsadmin> AdminConfig.save()
wsadmin> quit
ND edition은 #./syncNode.sh 로 처리하는 센스.
[출처] [WebSphere] hostname 변경하기|작성자 jaejeongk
[Node Name 변경]===================================================
Dmgr start
변경하고자 하는 해당 profile > bin 디렉토리 아래에서 renameNode.bat(sh) 실행(실행시 해당 node 아래 있는 프로세스 중지)
사용 예)[WAS_HOME]/profiles/[App Profile]/bin>renameNode.bat [dmgr hostname] [dmgr SOAP_CONNECTOR_ADDRESS port] [new_node_name] -username admin -password admin (보안 설정이 되어 있는 경우 해당 user와 password 입력)
[Cell Naem 변경]====================================================
* 셀이름 변경 - 아래 명시된 파일에서 기존 셀 이름으로 되어 있는 것을 찾아서 수정한다.
[WAS_HOME]/profiles/[Dmgr Profile]/config/cells 아래 있는, 셀 이름으로 된 디렉토리 이름 수정
[WAS_HOME]/profiles/[Dmgr Profile]/config/cells/[Cell_Name]/cell.xml
[WAS_HOME]/profiles/[Dmgr Profile]/bin/setupCmdLine.bat
[WAS_HOME]/profiles/[Dmgr Profile]/config/cells/[Cell_Name]/security.xml
[WAS_HOME]/profiles/[Dmgr Profile]/config/cells/[Cell_Name]/variables.xml
아래 두개는 웹 어드민 콘솔 관련 어플리케이션이다.
[WAS_HOME]/profiles/[Dmgr Profile]/config/cells/[Cell_Name]/applications/isclite.ear/deployments/isclite/deployment.xml
[WAS_HOME]/profiles/[Dmgr Profile]/config/cells/[Cell_Name]/applications/isclite.ear/deployments/isclite/isclite.war/WEB-INF/components.xml
* 각 노드(프로파일)에 있는 위의 파일들(isclite.ear 아래 있는 것들 제외-이것은 어드민 콘솔 관련 어플리케이션이라서 다른 노드에는 없다) 수정
[dmgr Node name 변경]================================================
[WAS_HOME]/profiles/[Dmgr Profile]/config/cells/[Cell_Name]/nodes 아래 있는 디렉토리 이름 수정
[WAS_HOME]/profiles/[Dmgr Profile]/config/cells/[Cell_Name]/nodes/VicCellManager03/node.xml
[WAS_HOME]/profiles/[Dmgr Profile]/bin/setupCmdLine.bat
[WAS_HOME]/profiles/[Dmgr Profile]/config/cells/[Cell_Name]/security.xml
[WAS_HOME]/profiles/[Dmgr Profile]/config/cells/[Cell_Name]/applications/isclite.ear/deployments/isclite/deployment.xml
[CoreGroup & NodeGroup name 변경]========================================
*코어 그룹과 노드 그룹은 기본적으로 DefaultCoreGroup, DefaultNodeGroup 이름으로 생성이 되는데, 사용자가 추가적으로 생성해 준 것이 있다면 이에 따른 파일들도 수정해 줘야 한다.
[WAS_HOME]/profiles/[Dmgr Profile]/config/cells/[Cell_Name]/coregroups/DefaultCoreGroup/coregroup.xml
[WAS_HOME]/profiles/[Dmgr Profile]/config/cells/[Cell_Name]/nodegroups/DefaultNodeGroup/nodegroup.xml
[etc name 변경]======================================================
[WAS_HOME]/profiles/[Dmgr Profile]/config/templates 아래 있는 파일들 중 기존의 노드 이름이 되어 있는 파일
(이 파일들은 수정하지 않아도 운영사에 지장이 없어 보인다)
*각 노드(프로파일)에 있는 아래 내용 수정
[WAS_HOME]/profiles/[Dmgr Profile]/config/cells/[Cell_Name]/nodes 아래 있는 디렉토리 이름 수정
[WAS_HOME]/profiles/[App Profile]/config/cells/[Cell_Name]/security.xml
=================================================================
*해당 작업 수행 후 플러그인 파일 생성 후 재 배포 실시
[HTTPServer_HOME]/bin apachectl.sh restart
*windows 의 경우 해당 서비스 재 시작
WebSphere WEB - WAS 동적, 정적 컨텐츠 구분
WEB - WAS 동적 & 정적 구분
Test Environment
- Test OS : CentOS 7.2
- Test Version : IBM HTTPServer v8.5, WebSphere v.85
WebSphere에서 컨텐츠 구분을 위해 작업해줘야 하는 사항
사실 별다른 설정없이 Plugin에 Uri 패턴설정만 해줘도 상관은 없다.
- Plugin-cfg.xml 파일을 커스트마이징해서 전체 request에 대한 Uri 매핑을 만들게 되면 당연히 WebServer에서는 모든 request를 WAS로 전달
- 위치 : F:\IBM\HTTPServer\Plugins
- 수정 : Plugin-cfg.xml 수정 부분
<UriGroup Name="default_host_server1_root-PCNode01_Cluster_URIs">
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="*.jsp"/>
</UriGroup>
해당 설정을 해주게 되면 설정된 패턴부분만 WAS로 넘기고 나머지는 WEB에서 찾게 된다.
- httpd.conf 파일에 Alias 추가
(/home/images에 이미지 파일이 복사돼 있어야 합니다.)
위치 : F:\IBM\HTTPServer\conf
추가 : Alias /images /home/images
- WebSphere 에서는 fileServingEnabled을 이용한 동적 & 정적 구분
WebSphere 에서는 fileServingEnabled 이라는 옵션을 해당 어플리케이션의 .ear/WEB-INF/ibm-web-ext.xmi 에 줄수 있는데 fileServingEnabled=“true” 로 하면 WAS 에서도 *.html 같은 정적 파일을 처리하고 “false” 로 하면 동적 컨텐츠만 처리하고 나머지 부분은 웹서버에서 처리하게 된다.
- fileServingEnabled=“true” => "false"값을 변경후에는 해당 어플리케이션의 모든 파일을 수정해 주어야 한다.
위치 :
/WebSphere/AppServer/profiles/[Profile_Name]/config/cells/[Cell_Name]/applications/[Application_Name].ear/deployments/[Application_Nam]/[Application_Name].war/WEB-INF
/[Application Source Path]/[Application_Name].war/WEB-INF
수정 : ibm-web-ext.xmi
변경 : fileServingEnabled=“false”
수정 : ibm-web-ext.xml인 경우
변경 :
- 플러그인 재 생성 후 전파(WebServer가 분리 되어 통신이 안되는 경우 해당 WebServer의 Plugin-cfg.xml 위치에 넣어 준다.)
예)F:\IBM\HTTPServer\Plugins\config\webserver1\Plugin-cfg.xml
변경된 Plugin-cfg.xml 파일을 확인 할수 있다.
<UriGroup Name="default_host_server1_root-PCNode01_Cluster_URIs">
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="*.jsp"/>
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="*.jsv"/>
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="*.jsw"/>
</UriGroup>
- httpd.conf 파일에 Alias 추가
(/home/images에 이미지 파일이 복사돼 있어야 합니다.)
위치 : F:\IBM\HTTPServer\conf
추가 : Alias /images /home/images
이렇게 두가지 방법으로 Plugin-cfg.xml 파일을 수정 후에는 해당 WebServer을 restart
- WAS에서 모든 처리을 다할 경우 Plugin-cfg.xml의
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="*"/>
WebSphere에서 한글이 깨질 경우 확인 사항
WebSphere에서 한글 깨질때 확인 사항
- Test OS : CentOS 7.2
- Test Version : WebSphere v.8.5
한글 언어 설정
언어의 경우 우선적으로 소스에 인코딩되어 있는 설정을 인식
- JSP 소스 첫줄
<%@page language="java" contentType="text/html;charset=euckr" %>
<%@page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
- HTML META
<META http-equiv="Content-Type" content="text/html;charset=euc-kr">
<META http-equiv="Content-Type" content="text/html;charset=UTF-8">
- WebSphere JVM 옵션
경로 : Application Server > {server name} > 서버인프라 >> 프로세스 정의 > 추가특성 >> JVM > 추가특성 >> 사용자 정의
설정 : WebSphere Application Server의 JVM Custom property에 설정
client.encoding.override = EUC-KR
file.encoding = EUC-KR
client.encoding.override = UTF-8
file.encoding = UTF-8
Application Source에서 한글 처리가 가능 해야 함