By William Sescu
One of the questions that pops up immediately, after you have installed your OUD successfully is how to integrate it into the automatic startup routines of the OS.
My example here show how to do it on Oracle Linux 6. On Oracle Linux 7 it looks a little different. Fortunately, Oracle delivers a script called “create-rc-script”, which can be found in your asinst home directory. It lets you specify the user name under which the OUD will run, the JAVA home and few more stuff. The whole documentation can be found under the following link.
https://docs.oracle.com/cd/E52734_01/oud/OUDAG/appendix_cli.htm#OUDAG01144
Running “–help” gives you all the options.
$ cat /etc/oracle-release Oracle Linux Server release 6.9 $ ./create-rc-script -V Oracle Unified Directory 11.1.2.3.170418 Build 20170206221556Z $ ./create-rc-script --help Create an RC script that may be used to start, stop, and restart the Directory Server on UNIX-based systems Usage: create-rc-script {options} where {options} include: -f, --outputFile {path} The path to the output file to create -u, --userName {userName} The name of the user account under which the server should run -j, --javaHome {path} The path to the Java installation that should be used to run the server -J, --javaArgs {args} A set of arguments that should be passed to the JVM when running the server General Options -V, --version Display Directory Server version information -?, -H, --help Display this usage information
Take care that you start the “create-rc-script” script from your asinst_1 home, and not from the Oracle_OUD1 home. The reason for that, is that the “create-rc-script” sets the working directory to your current directory. “WORKING_DIR=`pwd`”, and if not started from the correct directory, you might end up with a not working start/stop script.
So .. to do it correctly, switch to your OUD asinst home first and run it from there. I am using here only a few options. The JAVA home, the user name under which the OUD will run and the output file.
$ cd /u01/app/oracle/product/middleware/asinst_1/OUD/bin $ pwd /u01/app/oracle/product/middleware/asinst_1/OUD/bin $ ./create-rc-script --userName oracle --javaHome /u01/app/oracle/product/middleware/jdk --outputFile /home/oracle/bin/oud
The output generated by the script will be the start/stop script.
$ pwd /home/oracle/bin $ ls -l total 4 -rwxr-xr-x. 1 oracle oinstall 862 Jun 16 13:35 oud $ cat oud #!/bin/sh # # Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. # # # chkconfig: 345 90 30 # description: Oracle Unified Directory startup script # # Set the path to the Oracle Unified Directory instance to manage INSTALL_ROOT="/u01/app/oracle/product/middleware/asinst_1/OUD" export INSTALL_ROOT # Specify the path to the Java installation to use OPENDS_JAVA_HOME="/u01/app/oracle/product/middleware/jdk" export OPENDS_JAVA_HOME # Determine what action should be performed on the server case "${1}" in start) /bin/su - oracle -- "${INSTALL_ROOT}/bin/start-ds" --quiet exit ${?} ;; stop) /bin/su - oracle -- "${INSTALL_ROOT}/bin/stop-ds" --quiet exit ${?} ;; restart) /bin/su - oracle -- "${INSTALL_ROOT}/bin/stop-ds" --restart --quiet exit ${?} ;; *) echo "Usage: $0 { start | stop | restart }" exit 1 ;; esac
The generated start/stop script looks quite complete. The only thing missing is the “status” section which is quite useful from my point of view. To add the status section, we can use the “status” script, which is also part of the OUD installation.
$ ./status --help This utility can be used to display basic server information Usage: status {options} where {options} include: LDAP Connection Options -D, --bindDN {bindDN} DN to use to bind to the server Default value: cn=Directory Manager -j, --bindPasswordFile {bindPasswordFile} Bind password file -o, --saslOption {name=value} SASL bind options -X, --trustAll Trust all server SSL certificates -P, --trustStorePath {trustStorePath} Certificate trust store path -U, --trustStorePasswordFile {path} Certificate trust store PIN file -K, --keyStorePath {keyStorePath} Certificate key store path -u, --keyStorePasswordFile {keyStorePasswordFile} Certificate key store PIN file -N, --certNickname {nickname} Nickname of certificate for SSL client authentication --connectTimeout {timeout} Maximum length of time (in milliseconds) that can be taken to establish a connection. Use '0' to specify no time out Default value: 30000 Utility Input/Output Options -n, --no-prompt Use non-interactive mode. If data in the command is missing, the user is not prompted and the tool will fail -s, --script-friendly Use script-friendly mode --propertiesFilePath {propertiesFilePath} Path to the file containing default property values used for command line arguments --noPropertiesFile No properties file will be used to get default command line argument values -r, --refresh {period} When this argument is specified, the status command will display its contents periodically. Used to specify the period (in seconds) between two displays of the status General Options -V, --version Display Directory Server version information -?, -H, --help Display this usage information
Take care. Per default, the status utility is an interactive one, and it asks you for the user bind DN and the password. So, the interactive version of that script is not useful for our script.
$ ./status >>>> Specify Oracle Unified Directory LDAP connection parameters Administrator user bind DN [cn=Directory Manager]: Password for user 'cn=Directory Manager': --- Server Status --- Server Run Status: Started Open Connections: 6 --- Server Details --- Host Name: dbidg01 Administrative Users: cn=Directory Manager Installation Path: /u01/app/oracle/product/middleware/Oracle_OUD1 Instance Path: /u01/app/oracle/product/middleware/asinst_1/OUD Version: Oracle Unified Directory 11.1.2.3.170418 Java Version: 1.7.0_141 Administration Connector: Port 4444 (LDAPS) --- Connection Handlers --- Address:Port : Protocol : State -------------:------------------------:--------- -- : LDIF : Disabled 8899 : Replication (secure) : Enabled 0.0.0.0:161 : SNMP : Disabled 0.0.0.0:1389 : LDAP (allows StartTLS) : Enabled 0.0.0.0:1636 : LDAPS : Enabled 0.0.0.0:1689 : JMX : Disabled ... ...
And we need to do some adjustments, like in the following example.
./status --trustAll --no-prompt --bindDN cn="Directory Manager" --bindPasswordFile /home/oracle/.oudpwd | head -24
OK. To complete the script, we can add the status section to the script.
$ cat oud #!/bin/sh # # Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. # # # chkconfig: 345 90 30 # description: Oracle Unified Directory startup script # # Set the path to the Oracle Unified Directory instance to manage INSTALL_ROOT="/u01/app/oracle/product/middleware/asinst_1/OUD" export INSTALL_ROOT # Specify the path to the Java installation to use OPENDS_JAVA_HOME="/u01/app/oracle/product/middleware/jdk" export OPENDS_JAVA_HOME # Determine what action should be performed on the server case "${1}" in start) /bin/su - oracle -- "${INSTALL_ROOT}/bin/start-ds" --quiet exit ${?} ;; stop) /bin/su - oracle -- "${INSTALL_ROOT}/bin/stop-ds" --quiet exit ${?} ;; restart) /bin/su - oracle -- "${INSTALL_ROOT}/bin/stop-ds" --restart --quiet exit ${?} ;; status) /bin/su - oracle -- "${INSTALL_ROOT}/bin/status" --trustAll --no-prompt --bindDN cn="Directory Manager" --bindPasswordFile /home/oracle/.oudpwd | head -24 exit ${?} ;; *) echo "Usage: $0 { start | stop | restart | status }" exit 1 ;; esac
Last but not least, we need to move it with the root user to the /etc/init.d directory and add it via chkconfig.
# mv /home/oracle/bin/oud /etc/init.d/ # chkconfig --add oud # chkconfig --list | grep oud oud 0:off 1:off 2:off 3:on 4:on 5:on 6:off
That’s all. The OUD part is done now. But what about the ODSM? We want the WebLogic domain to startup automatically as well. For doing so, we need another script.
$ cat /home/oracle/bin/weblogic #!/bin/sh # # # chkconfig: 345 90 30 # description: WebLogic 10.3.6 startup script # # Specify the path to the Java installation to use JAVA_HOME="/u01/app/oracle/product/middleware/jdk" export JAVA_HOME BASE_DOMAIN="/u01/app/oracle/product/middleware/user_projects/domains/base_domain" export BASE_DOMAIN # Determine what action should be performed on the server case "${1}" in start) /bin/su - oracle -c "nohup ${BASE_DOMAIN}/bin/startWebLogic.sh &" exit ${?} ;; stop) /bin/su - oracle -c "${BASE_DOMAIN}/bin/stopWebLogic.sh" exit ${?} ;; restart) /bin/su - oracle -c "${BASE_DOMAIN}/bin/stopWebLogic.sh" /bin/su - oracle -c "nohup ${BASE_DOMAIN}/bin/startWebLogic.sh &" exit ${?} ;; *) echo "Usage: $0 { start | stop | restart }" exit 1 ;; esac
Now it’s time to move the weblogic to the start routines as well.
# mv /home/oracle/bin/weblogic /etc/init.d/ # chkconfig --add weblogic # chkconfig --list | grep weblogic weblogic 0:off 1:off 2:off 3:on 4:on 5:on 6:off
After everything is setup, it is time to test it. 😉
# chkconfig --list | egrep '(weblogic|oud)' oud 0:off 1:off 2:off 3:on 4:on 5:on 6:off weblogic 0:off 1:off 2:off 3:on 4:on 5:on 6:off # init 6
Now just check if everything came up correctly.
Conclusion
The OUD comes with a script “create-rc-script” which is quite useful. However, in case you have the OSDM and you want the OUD status section as well, some adjustments have to be done.