A couple of month ago I wrote blog on how to start Oracle Unified Directory (OUD) on system boot (see Start OUD Servers on Boot using systemd) using a unit file and systemd. Quite a simple and straightforward way to start OUD. Why not using the same approach for ODSM? This can be easily implemented, because my weblog infrastructure is only used for the ODSM domain.
Boot Properties File for ODSM
Normally the credentials must be specified when the weblogic server is started. To avoid this, a boot.properties file is defined. This file does contain the username and password of the weblogic admin. Excerpt from my weblogic startup log including the prompt for username and password.
... <sep 7, 2017 6:01:09 AM CEST> <info> <weblogicserver> <bea -000377> <starting WebLogic Server with Java HotSpot(TM) 64-Bit Server VM Version 24.141-b31 from Oracle Corporation> <sep 7, 2017 6:01:10 AM CEST> <info> <management> <bea -141107> <version: WebLogic Server 10.3.6.0.170418 PSU Patch for BUG25388747 WED MAR 21 18:34:42 IST 2017 WebLogic Server 10.3.6.0 Tue Nov 15 08:52:36 PST 2011 1441050 > <sep 7, 2017 6:01:11 AM CEST> <info> <security> <bea -090065> <getting boot identity from user.> Enter username to boot WebLogic server:weblogic Enter password to boot WebLogic server: <sep 7, 2017 6:01:39 AM CEST> <notice> <weblogicserver> <bea -000365> <server state changed to STARTING> <sep 7, 2017 6:01:39 AM CEST> <info> <workmanager> <bea -002900> <initializing self-tuning thread pool> ...
ODSM just has an admin server. So let’s create the boot.properties file in the security folder of the admin server. Since this security directory may not already exist, we must create it beforehand. On my environment I’ve put the user projects outside of my middleware folder in /u00/app/oracle/user_projects. The working directory for the next couple of commands will be /u00/app/oracle/user_projects/domains/ODSM_domain.
cd /u00/app/oracle/user_projects/domains/ODSM_domain ls servers/AdminServer adr cache data logs sysman tmp mkdir -p servers/AdminServer/security touch servers/AdminServer/security/boot.properties
Add values for username and password to the boot.properties file.
vi servers/AdminServer/security/boot.properties username=weblogic password=manager
The boot.properties file fortunately does not stay like this. so. During the first start of the weblogic server, the username and password is encrypted with AES.
cat servers/AdminServer/security/boot.properties #Thu Sep 07 06:34:11 CEST 2017 password={AES}lCtDx2TYm8rHZt/n9CiwmCgbiPjE+noBdyI+1MmJ21o\= username={AES}4ROGb6gIkFWhqQA6uoV2mTN7cZy/jdM/pUO4aDbB74k\=
Unit File for ODSM
After the weblogic server can now be started without password input, one only need the corresponding unit file to automatically start the ODSM domain during system boot. The unit file will be created as root in the folder /usr/lib/systemd/system. For my environment I do create the following unity file. Working directory, domain name, user name etc has to be adjusted accordingly for other environments. Add the following content to the new unit file.
sudo vi /usr/lib/systemd/system/wls_odsm.service # ----------------------------------------------------------------------- # Trivadis AG, Infrastructure Managed Services # Saegereistrasse 29, 8152 Glattbrugg, Switzerland # ----------------------------------------------------------------------- # File-Name........: wls_odsm.service # Author...........: Stefan Oehrli, stefan.oehrli at trivadis.com # Date.............: 07. Sept 2017 # Revision.........: 1.0 # Purpose..........: Unit file for ODSM domain # Usage............: systemctl enable wls_odsm.service # Notes............: -- # ----------------------------------------------------------------------- # Revision history.: # 07.09.2017 soe initial release # ----------------------------------------------------------------------- [Unit] Description=WLS ODSM Instance Wants=network.target After=network.target [Service] Type=simple User=oracle Group=osdba WorkingDirectory=/u00/app/oracle/user_projects/domains/ODSM_domain ExecStart=/u00/app/oracle/user_projects/domains/ODSM_domain/startWebLogic.sh ExecStop=/u00/app/oracle/user_projects/domains/ODSM_domain/bin/stopWebLogic.sh StandardOutput=syslog [Install] WantedBy=multi-user.target
As soon as we have the new unit file we have to enable the service. This also creates a softlink in /etc/systemd/system/multi-user.target.wants to the new unit file.
sudo systemctl enable wls_odsm.service Created symlink from /etc/systemd/system/multi-user.target.wants/wls_odsm.service to /usr/lib/systemd/system/wls_odsm.service.
Start the admin server for the ODSM domain using systemctl.
sudo systemctl start wls_odsm.service
Stop the admin server for the ODSM domain using systemctl.
sudo systemctl stop wls_odsm.service
Display the status of the admin server for the ODSM domain.
sudo systemctl status wls_odsm.service wls_odsm.service - WLS ODSM Instance Loaded: loaded (/usr/lib/systemd/system/wls_odsm.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2017-09-07 06:55:25 CEST; 1min 32s ago Main PID: 10645 (startWebLogic.s) CGroup: /system.slice/wls_odsm.service ├─10645 /bin/sh /u00/app/oracle/user_projects/domains/ODSM_domain/startWebLogic.sh ├─10648 /bin/sh /u00/app/oracle/user_projects/domains/ODSM_domain/bin/startWebLogic.sh └─10695 /u00/app/oracle/product/jdk1.7.0_141/bin/java -server -Xms256m -Xmx512m -XX:MaxPermSize=512m -Dweblogic.Name=AdminServer -Djava.security.polic... Sep 07 06:56:19 euterpe startWebLogic.sh[10645]: <sep 7, 2017 6:56:19 AM CEST> <notice> <server> <bea -002613> <channel "Default[4]" is now listening on ...p, http.> Sep 07 06:56:19 euterpe startWebLogic.sh[10645]: <sep 7, 2017 6:56:19 AM CEST> <notice> <server> <bea -002613> <channel "Default" is now listening on fd1...p, http.> Sep 07 06:56:19 euterpe startWebLogic.sh[10645]: <sep 7, 2017 6:56:19 AM CEST> <notice> <server> <bea -002613> <channel "Default[1]" is now listening on ...p, http.> Sep 07 06:56:19 euterpe startWebLogic.sh[10645]: <sep 7, 2017 6:56:19 AM CEST> <notice> <server> <bea -002613> <channel "Default[5]" is now listening on ...p, http.> Sep 07 06:56:19 euterpe startWebLogic.sh[10645]: <sep 7, 2017 6:56:19 AM CEST> <notice> <server> <bea -002613> <channel "Default[6]" is now listening on ...p, http.> Sep 07 06:56:19 euterpe startWebLogic.sh[10645]: <sep 7, 2017 6:56:19 AM CEST> <notice> <server> <bea -002613> <channel "Default[7]" is now listening on ...p, http.> Sep 07 06:56:19 euterpe startWebLogic.sh[10645]: <sep 7, 2017 6:56:19 AM CEST> <notice> <weblogicserver> <bea -000329> <started WebLogic Admin Server "Ad...ion Mode> Sep 07 06:56:19 euterpe startWebLogic.sh[10645]: <sep 7, 2017 6:56:19 AM CEST> <warning> <server> <bea -002611> <hostname "localhost", maps to multiple I...:0:0:0:1> Sep 07 06:56:19 euterpe startWebLogic.sh[10645]: <sep 7, 2017 6:56:19 AM CEST> <notice> <weblogicserver> <bea -000365> <server state changed to RUNNING> Sep 07 06:56:19 euterpe startWebLogic.sh[10645]: <sep 7, 2017 6:56:19 AM CEST> <notice> <weblogicserver> <bea -000360> <server started in RUNNING mode> Hint: Some lines were ellipsized, use -l to show in full.
All in all, a simple and easy way to start the ODSM automatically at system boot.
Reference
Some references and links to MOS Notes:
- Red Hat Enterprise Linux 7 System Administrator’s Guide Creating and Modifying systemd Unit Files
- ORACLE BASE article on Linux Services (systemd, systemctl)
- Understanding Systemd Units and Unit Files
- Wikipedia systemd
- A really well aged Oracle By Example (OBE) article about enable auto login on Oracle WebLogic Server 10g. Enabling Auto Login by Using the Boot Identity File
- Newer version of the article for Oracle WebLogic Server 12c. Creating a Boot Identity File for Easier Server Start Up