Silent Installation and Configuration of Standalone Oracle HTTP Server
Posted by Dirk Nachbar on Monday, April 10, 2017 with 6 comments
Currently I am working in a project for which will be needed the Oracle HTTP Server (OHS) in a Standalone Mode as a frontend Web Server for a Oracle SOA 12.2.1.2.0 environment.
As I am not really a fan of clicking through several installers and configuration wizards, I have created some scripts for a complete silent installation of the Standalone Oracle HTTP Server 12.2.1.2.0 and on top a silent configuration of the standalone Domain for the Oracle HTTP Server.
Make sure you that you have a JDK 1.8 on your server, I prefer to install the JDK under the Oracle user, e.g. /u00/app/oracle/product/jdk1.8.0_121
Connect to your server as oracle user and create following files under the directory /u00/app/oracle/tmp
webtier.rsp
oraInst.loc
Now we can extract the installation software and install the Oracle HTTP Server in silent mode
Now we have installed the Oracle HTTP Server Software.
For this I have 3 scripts:
setLocalEnv.sh
The above Environment Variables are all self-explained, you may align them to your specific needs.
cr_ohs_domain.sh
cr_ohs_domain.py
Now we can execute the cr_ohs_domain.sh which will create silently the Standalone Domain for our Oracle HTTP Server:
And thats it, now you can start your Oracle HTTP Server Instance named ohs1
As I am not really a fan of clicking through several installers and configuration wizards, I have created some scripts for a complete silent installation of the Standalone Oracle HTTP Server 12.2.1.2.0 and on top a silent configuration of the standalone Domain for the Oracle HTTP Server.
Silent Installation of the Oracle HTTP Server Software
For the following example, we will use following naming convention:- MW_HOME=/u00/app/oracle/product/fmw-webtier-12.2.1.2.0
- JAVA_HOME=/u00/app/oracle/product/jdk1.8.0_121
- DOMAIN_HOME=/u00/app/oracle/user_projects/domains/ohs_domain
Make sure you that you have a JDK 1.8 on your server, I prefer to install the JDK under the Oracle user, e.g. /u00/app/oracle/product/jdk1.8.0_121
Connect to your server as oracle user and create following files under the directory /u00/app/oracle/tmp
webtier.rsp
[ENGINE] Response File Version=1.0.0.0.0 [GENERIC] ORACLE_HOME=/u00/app/oracle/product/fmw-webtier-12.2.1.2.0 INSTALL_TYPE=Standalone HTTP Server (Managed independently of WebLogic server) DECLINE_SECURITY_UPDATES=true SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
oraInst.loc
inst_group=oinstall inventory_loc=/u00/app/oracle/oraInventory
Now we can extract the installation software and install the Oracle HTTP Server in silent mode
oracle@server> cd /u00/app/oracle/tmp oracle@server> unzip fmw_12.2.1.2.0_ohs_linux64_Disk1_1of1.zip oracle@server> ./fmw_12.2.1.2.0_ohs_linux64.bin -jreLoc /u00/app/oracle/product/jdk1.8.0_121 -silent -responseFile /u00/app/oracle/tmp/webtier.rsp -invPtrLoc /u00/app/oracle/tmp/oraInst.loc 0%...................................................................................................100% Launcher log file is /tmp/OraInstall2017-04-10_12-39-12PM/launcher2017-04-10_12-39-12PM.log. Checking if CPU speed is above 300 MHz. Actual 2194.918 MHz Passed Checking swap space: must be greater than 512 MB. Actual 3071 MB Passed Checking if this platform requires a 64-bit JVM. Actual 64 Passed (64-bit not required) Checking temp space: must be greater than 300 MB. Actual 8528 MB Passed . . . . . . Percent Complete : 90 Visit http://www.oracle.com/support/policies.html for Oracle Technical Support policies. Percent Complete : 100 The installation of Oracle HTTP Server 12.2.1.2.0 completed successfully. Logs successfully copied to /u00/app/oracle/oraInventory/logs.
Now we have installed the Oracle HTTP Server Software.
Silent Configuration of the Standalone Domain for the Oracle HTTP Server
The next step is to configure in a silent way the required Standalone Domain for our Oracle HTTP Server.For this I have 3 scripts:
- setLocalEnv.sh = contains all necessary Environment Variables for the creation of the Standalone Domain
- cr_ohs_domain.sh = Wrapper Script to source the setLocalEnv.sh and execute the cr_ohs_domain.py
- cr_ohs_domain.py = Python Script to create the Standalone Domain for the Oracle HTTP Server
setLocalEnv.sh
# # Author: Dirk Nachbar # # http://dirknachbar.blogspot.com # # Environment Script for silent Standalone OHS Domain Creation # # export SCRIPT_HOME=$PWD export MW_HOME=/u00/app/oracle/product/fmw-webtier-12.2.1.2.0 export WLST_HOME=$MW_HOME/oracle_common/common/bin export JAVA_HOME=/u00/app/oracle/product/jdk1.8.0_121 export DOMAIN_NAME=ohs_domain export DOMAIN_HOME=/u00/app/oracle/user_projects/domains/$DOMAIN_NAME export NM_LISTENADDRESS=`hostname -f` export NM_TYPE=SSL export NM_PORT=5557 export NM_USERNAME=nodemanager export NM_PASSWORD=welcome1 export NM_HOME=$DOMAIN_HOME/nodemanager export OHSINSTANCENAME=ohs1 export OHSADMINPORT=9999 export OHSHTTPPORT=7777 export OHSHTTPSPORT=4443
The above Environment Variables are all self-explained, you may align them to your specific needs.
cr_ohs_domain.sh
#!/bin/sh # # Author: Dirk Nachbar # # http://dirknachbar.blogspot.com # # Shell Script Wrapper for Silent Standalone OHS Domain Creation # start_time=$(date +%s) . $PWD/setLocalEnv.sh echo "=============================================" echo " Program: cr_ohs_domain.sh ....." echo "=============================================" if [ -z "${WLST_HOME}" ]; then echo " Environment not correctly set - please verify" exit 1 fi if ! test -d "${DOMAIN_HOME}"; then echo "=============================================" echo " Domain will be installed ....." echo "=============================================" if [ -z "${MW_HOME}" -o -z "${JAVA_HOME}" -o -z "${DOMAIN_NAME}" -o -z "${DOMAIN_HOME}" -o -z "${NM_LISTENADDRESS}" -o -z "${NM_TYPE}" -o -z "${NM_PORT}" -o -z "${NM_USERNAME}" -o -z "${NM_PASSWORD}" -o -z "${NM_HOME}" -o -z "${OHSADMINPORT}" -o -z "${OHSHTTPPORT}" -o -z "${OHSHTTPSPORT}" ]; then echo " Environment not set - Exit" exit 1 fi # In case we are facing problems with /dev/random export CONFIG_JVM_ARGS=-Djava.security.egd=file:/dev/./urandom:$CONFIG_JVM_ARGS ${WLST_HOME}/wlst.sh ${SCRIPT_HOME}/cr_ohs_domain.py # Set End Time finish_time=$(date +%s) echo "Finished" echo "Domain Build Time: $(( $((finish_time - start_time))/60)) minutes." else echo "Domain is already installed ..." fi
cr_ohs_domain.py
#!/usr/bin/python # # Author: Dirk Nachbar # # http://dirknachbar.blogspot.com # import os, sys v_mwHome=os.environ['MW_HOME'] v_jdkHome=os.environ['JAVA_HOME'] v_domainHome=os.environ['DOMAIN_HOME'] v_domainName=os.environ['DOMAIN_NAME'] v_NMUsername=os.environ['NM_USERNAME'] v_NMPassword=os.environ['NM_PASSWORD'] v_NMHome=os.environ['NM_HOME'] v_NMHost=os.environ['NM_LISTENADDRESS'] v_NMPort=os.environ['NM_PORT'] v_NMType=os.environ['NM_TYPE'] v_OHSInstanceName=os.environ['OHSINSTANCENAME'] v_OHSAdminPort=os.environ['OHSADMINPORT'] v_OHSHTTPPort=os.environ['OHSHTTPPORT'] v_OHSHTTPSPort=os.environ['OHSHTTPSPORT'] readTemplate(v_mwHome +'/wlserver/common/templates/wls/base_standalone.jar') addTemplate(v_mwHome +'/ohs/common/templates/wls/ohs_standalone_template.jar') cd('/') create(v_domainName, 'SecurityConfiguration') cd('SecurityConfiguration/' + v_domainName) set('NodeManagerUsername',v_NMUsername) set('NodeManagerPasswordEncrypted',v_NMPassword) setOption('NodeManagerType', 'CustomLocationNodeManager'); setOption('NodeManagerHome', v_NMHome); setOption('JavaHome', v_jdkHome ) cd('/Machines/localmachine/NodeManager/localmachine') cmo.setListenAddress(v_NMHost); cmo.setListenPort(int(v_NMPort)); cmo.setNMType(v_NMType); delete(v_OHSInstanceName,'SystemComponent') create (v_OHSInstanceName,'SystemComponent') cd('/OHS/'+v_OHSInstanceName) cmo.setAdminPort(v_OHSAdminPort) cmo.setListenPort(v_OHSHTTPPort) cmo.setSSLListenPort(v_OHSHTTPSPort) writeDomain(v_domainHome)
Now we can execute the cr_ohs_domain.sh which will create silently the Standalone Domain for our Oracle HTTP Server:
oracle@server> cd /u00/app/oracle/tmp ./cr_ohs_domain.sh ============================================= Program: cr_ohs_domain.sh ..... ============================================= ============================================= Domain will be installed ..... ============================================= Initializing WebLogic Scripting Tool (WLST) ... Welcome to WebLogic Server Administration Scripting Shell Type help() for help on available commands Finished Domain Build Time: 1 minutes.
And thats it, now you can start your Oracle HTTP Server Instance named ohs1
oracle@server> cd /u00/app/oracle/user_projects/domains/ohs_domain/bin oracle@server> ./startNodeManager > /dev/null 2>&1 & oracle@server> ./startComponent.sh ohs1 storeUserConfig
Categories: Oracle HTTP Server
HI Dirk,
ReplyDeleteWe have carried out installation using the steps you have provided but facing issue While running cr_ohs_domain.sh on OEL5 we are getting below error -
Error: readTemplate() failed. Do dumpStack() to see details.
Problem invoking WLST - Traceback (innermost last):
File "/dboracle/tmp/cr_ohs_domain.py", line 25, in ?
File "/tmp/WLSTOfflineIni8403358284061262876.py", line 19, in readTemplate
64040: Specified template does not exist or is not a file: "/dboracle/OHS_HOME/wlserver/common/templates/wls/base_standalone.jar".
64040: Provide a valid template location.
Could you please help here?
Regards
Animesh Sarkar
Hi Animesh,
ReplyDeletedid you set the Variable MW_HOME in the setLocalEnv.sh correctly? Looks for me, that the provided path is not correct.
Regards
Dirk
Hi Dirk,
ReplyDeleteI'm just curious on why you delete then recreate the ohs instance on lines 42 & 43 in cr_ohs_domain.py.
delete(v_OHSInstanceName,'SystemComponent')
create (v_OHSInstanceName,'SystemComponent')
Thanks,
Brian Fekete
Very good Dirk, just used the steps and definitely saved me quite some time from what I used to do with 11g...
ReplyDeleteCheers!
Thanks .. the script is awesome and helped me. However delete(v_OHSInstanceName,'SystemComponent') is not required else it would throw error for the first time
ReplyDeleteThanks a lot. That's great post.
ReplyDelete