WebLogic 15c on Oracle Linux 9
Overview
Oracle WebLogic Server 15c (release 15.1.1.0.0) is the newest generation of the Oracle Java EE / Jakarta EE application server. It supports Jakarta EE 9.1 and a Java SE 21 LTS runtime. This guide walks you through deploying and using the SecureAnyCloud Oracle WebLogic Server 15c on Oracle Linux 9 image on Microsoft Azure.
The image ships WebLogic 15.1.1.0.0 preinstalled on an Oracle Linux 9 base, patched at build time. The weblogic administrator password is generated per VM at first boot and written to a credentials file that only root can read, so every VM has a unique secret out of the box.
What you get:
- WebLogic 15.1.1.0.0 with Oracle JDK 21 LTS at
/u01/java/jdk-21 - A
base_domainconfigured under/u01/app/oracle/product/user_projects/domains/base_domain - The AdminServer listening on TCP port 7001 in production mode
- NodeManager configured and enabled
- A unique administrator password for every VM
Typical use cases include:
- Hosting Java EE / Jakarta EE applications behind a managed application server
- Lift-and-shift of legacy WebLogic deployments to Azure
- Building development and staging environments that match production WebLogic topologies
- Running JMS, EJB, JAX-WS and JAX-RS workloads on a fully supported Oracle stack
Prerequisites
Before you begin, make sure you have:
- An active Microsoft Azure subscription
- Sufficient vCPU quota in your target region (2 vCPUs for entry workloads, 4 or more for production)
- An SSH key pair on your local machine
- Basic familiarity with the Azure Portal or the Azure CLI
- Inbound network rules that allow TCP 22 (SSH) and TCP 7001 (Admin Console) from your client IP. Also allow TCP 7002 if you intend to use the SSL listener, and TCP 5556 if you will run NodeManager remotely
Deploy the virtual machine
Option A: Deploy via the Azure Portal
- Sign in to the Azure Portal.
- Choose Create a resource and search for Oracle WebLogic Server 15c on Oracle Linux 9, published by SecureAnyCloud.
- Choose Create on the product listing.
- Complete the Basics tab:
- Subscription: choose your subscription
- Resource group: create a new resource group or pick an existing one
- Virtual machine name: for example
weblogic-15c - Region: your preferred Azure region
- Image: leave at the default (Oracle WebLogic Server 15c on Oracle Linux 9)
- Size:
Standard_D2s_v3minimum.Standard_D4s_v3or larger is recommended for production - Authentication type: SSH public key
- Username: azureuser
- SSH public key source: paste your public key
- On the Disks tab, choose Premium SSD and size the OS disk to 64 GB or larger, depending on the size of your applications and logs.
- On the Networking tab, create or select a virtual network and subnet. Open the following inbound ports on the NIC security group:
- 22 (SSH)
- 7001 (WebLogic Admin Console, T3, IIOP, LDAP, SNMP)
- 7002 (SSL listener, optional)
- 5556 (NodeManager, optional)
- Review and create the VM. Deployment typically completes in under five minutes.
Option B: Deploy via the Azure CLI
az group create --name weblogic-rg --location eastus
az vm image terms accept --urn sac1647283583153:oracle-weblogic-15c-oel9:default:latest
az vm create \
--resource-group weblogic-rg \
--name weblogic-15c \
--image sac1647283583153:oracle-weblogic-15c-oel9:default:latest \
--size Standard_D2s_v3 \
--admin-username azureuser \
--ssh-key-values ~/.ssh/id_rsa.pub \
--public-ip-sku Standard
az vm open-port --resource-group weblogic-rg --name weblogic-15c --port 22 --priority 1001
az vm open-port --resource-group weblogic-rg --name weblogic-15c --port 7001 --priority 1002
az vm open-port --resource-group weblogic-rg --name weblogic-15c --port 7002 --priority 1003
az vm open-port --resource-group weblogic-rg --name weblogic-15c --port 5556 --priority 1004Connect via SSH
When the VM is running, retrieve its public IP and connect:
az vm show --resource-group weblogic-rg --name weblogic-15c --show-details --query publicIps -o tsv ssh azureuser@<public-ip>On first login, you see the standard Oracle Linux 9 welcome banner. All commands below assume you are connected as azureuser.
Wait for the first-boot hook to complete
The first time the VM boots, a one-shot systemd unit named sac-weblogic-firstboot.service performs the following steps:
- Generates a fresh, per-VM administrator password.
- Starts the AdminServer with the temporary password set at build time.
- Connects to the running domain over WLST and rotates the
weblogicuser password. - Rewrites
boot.propertieswith the new password (encrypted by WebLogic on the next start). - Writes the new credentials to
/stage/scripts/weblogic-credentials.log. - Stops the AdminServer, marks the firstboot complete, disables itself, and starts
weblogic.servicecleanly.
The full first-boot hook usually takes three to five minutes. To watch the most recent log lines, run:
sudo journalctl -u sac-weblogic-firstboot.service -n 50 --no-pagerRe-run the same command every few seconds until the unit reports inactive (dead) with code=exited, status=0/SUCCESS.
When the unit exits successfully, weblogic.service starts the AdminServer in the background. Confirm that both services are healthy:
sudo systemctl status weblogic.service --no-pager sudo systemctl status nodemanager.service --no-pagerThe weblogic.service unit should report Active: active (running). The AdminServer process should be listening on TCP 7001 across the loopback interface, IPv6 and the private NIC of the VM, as shown below:
Retrieve the administrator password
When the first-boot hook has completed, the credentials file is at /stage/scripts/weblogic-credentials.log. It is owned by root with mode 0600. Read it with:
sudo cat /stage/scripts/weblogic-credentials.logExample output:
# Oracle WebLogic Server 15c — Per-VM Credentials
# Generated: Thu Apr 30 22:18:11 UTC 2026
#
# Admin Console: http://<vm-public-ip>:7001/console WEBLOGIC_USER=weblogic WEBLOGIC_PASSWORD=<set-at-first-boot> DOMAIN_HOME=/u01/app/oracle/product/user_projects/domains/base_domain
#
# Change the password from the Console (Security Realms → myrealm → Users)
# or via WLST: connect → resetUserPassword('weblogic','<new>') → save/activate.The screenshot below shows the same command on a freshly deployed VM, with the password redacted and the on-disk domain layout shown for reference.
Save the password to a secret manager and treat the file as sensitive material.
Verify the server in a browser
In your browser, go to:
http://<vm-public-ip>:7001/consoleWebLogic Server 15c removed the legacy in-server /console administration console. Instead, the AdminServer serves a welcome page that confirms the server is up and explains how to administer it. The screenshot below shows the page.
You can also probe the welcome endpoint from the VM itself:
curl -sIL -o /dev/null -w 'HTTP %{http_code}\n' http://localhost:7001/consoleA successful response is HTTP 200, after one or two 302 redirects to /console/welcome/.
Administer with WebLogic Remote Console
In 15c, Oracle replaced the in-server admin console with WebLogic Remote Console. It is a standalone Electron desktop application that runs on your workstation and connects to the AdminServer over T3 / HTTP. Two flavours are available, and either works with this image:
- Desktop client: Download the installer from oracle.com/middleware/weblogic-remote-console, or follow the link on the welcome page above. Install it on your laptop or admin jump host. Then add a connection that points at
http://<vm-public-ip>:7001, with usernameweblogicand the password from Step 4. - Hosted Remote Console: The same UI deployed as a WAR onto a WebLogic server. Choose this if you prefer a browser-based admin surface that does not need a desktop install. Download the
console-rest-ext-*.warandwls-remote-console-hosted-*.warfiles from the Oracle download page, then deploy them through WLST or an automation pipeline.
Both flavours expose the same management surface as the legacy in-server console. You can deploy applications, configure data sources, manage security realms, monitor JVM and JDBC pools, and edit any domain MBean.
For headless administration without a GUI, WLST (Step 7 below) and the WebLogic REST Management API are both supported and unchanged in 15c.
Use WLST for scripted administration
WebLogic Scripting Tool (WLST) is the recommended way to automate domain configuration. Run it from the VM:
sudo -u oracle bash -lc 'export JAVA_HOME=/u01/java/jdk-21; export PATH=$JAVA_HOME/bin:$PATH; /u01/app/oracle/product/wlserver/common/bin/wlst.sh -help' | head -25You can run WLST online, connected to a running AdminServer, or offline, against the on-disk domain. For an online edit session, run:
connect('weblogic', '<password>', 't3://localhost:7001') edit() startEdit()
# ...
cd into MBean trees and call cmo.* methods ... save() activate() disconnect()The screenshot below shows a successful WLST online connection that uses the per-VM admin password.
Manage NodeManager
NodeManager is enabled in the image but stopped by default. Start it when you are ready to use it:
sudo systemctl start nodemanager.service
sudo systemctl status nodemanager.service --no-pagerTo debug in the foreground, start it manually as the oracle user:
sudo -u oracle /u01/app/oracle/product/user_projects/domains/base_domain/bin/startNodeManager.shNodeManager listens on TCP 5556.
Server components
The image includes:
- Oracle WebLogic Server 15.1.1.0.0 (Jakarta EE 9.1)
- Oracle Coherence 15.1.1.0.0
- Oracle JDK 21 LTS at
/u01/java/jdk-21 - A WLST-created
base_domainrunning in production mode - AdminServer listening on
0.0.0.0:7001for HTTP, T3, IIOP, LDAP and SNMP - NodeManager configured to listen on
0.0.0.0:5556 weblogic.serviceandnodemanager.servicesystemd units (enabled at boot)sac-weblogic-firstboot.serviceone-shot hook for per-VM password rotation- Oracle Linux 9 base with the latest security patches applied at build time
The image does not ship the Hosted Remote Console WAR. By default, you administer the server with the desktop Remote Console, WLST or the REST API. To get a browser-based admin surface, deploy the Hosted Remote Console WAR yourself (Step 6).
Filesystem layout
Path Purpose
/u01/java/jdk-21 Oracle JDK 21 LTS
/u01/app/oracle/product MW_HOME (Middleware Home)
/u01/app/oracle/product/wlserver WL_HOME (WebLogic Server install)
/u01/app/oracle/product/user_projects/domains/base_domain DOMAIN_HOME
/u01/app/oraInventory Oracle Inventory
/etc/systemd/system/weblogic.service AdminServer systemd unit
/etc/systemd/system/nodemanager.service NodeManager systemd unit
/etc/systemd/system/sac-weblogic-firstboot.service First-boot password rotation unit
/usr/local/sbin/sac-weblogic-firstboot.sh First-boot rotation script
/var/lib/sac/data/weblogic-firstboot.done First-boot sentinel (created on success)
/stage/scripts/weblogic-credentials.log Per-VM admin credentials (root-only)
/var/log/sac/sac-weblogic-firstboot.log First-boot hook log
Managing the WebLogic services
Check the status of the AdminServer:
sudo systemctl status weblogic.service --no-pagerUse the standard systemctl verbs to restart, stop or start the AdminServer:
sudo systemctl restart weblogic.servicesudo systemctl stop weblogic.servicesudo systemctl start weblogic.service
The same verbs apply to nodemanager.service. A clean WebLogic restart can take up to two minutes while the AdminServer fully shuts down and reinitialises. The AdminServer log is under $DOMAIN_HOME/servers/AdminServer/logs/:
sudo tail -n 200 /u01/app/oracle/product/user_projects/domains/base_domain/servers/AdminServer/logs/AdminServer.log
sudo journalctl -u weblogic.service -n 200 --no-pagerScripts and log files
- Credentials:
/stage/scripts/weblogic-credentials.log(regenerated on first boot) - First-boot hook:
/usr/local/sbin/sac-weblogic-firstboot.sh - First-boot log:
/var/log/sac/sac-weblogic-firstboot.log - AdminServer log:
/u01/app/oracle/product/user_projects/domains/base_domain/servers/AdminServer/logs/AdminServer.log - NodeManager log:
/u01/app/oracle/product/user_projects/domains/base_domain/nodemanager/nodemanager.log
On startup
weblogic.service is enabled and starts the AdminServer automatically when the first-boot hook has completed. nodemanager.service is enabled but starts only when you bring it up explicitly. On the first customer boot only, the unit at /etc/systemd/system/sac-weblogic-firstboot.service runs once. It rotates the weblogic administrator password, writes the new credentials file and disables itself.
To suppress the first-boot hook, for example when you clone a customised VM into a template of your own, touch the sentinel before the next boot:
sudo install -d -o root -g root -m 0755 /var/lib/sac
sudo touch /var/lib/sac/data/weblogic-firstboot.doneTroubleshooting
AdminServer will not start
sudo systemctl status weblogic.service --no-pager sudo tail -n 200 /u01/app/oracle/product/user_projects/domains/base_domain/servers/AdminServer/logs/AdminServer.logCommon causes are that the first-boot hook has not finished yet, a port conflict on 7001, or a permissions issue under /u01/app/oracle. Ownership should be oracle:oinstall.
Cannot reach the Admin Console from a browser
- Confirm that the firewalld rules on the VM allow your ports:
sudo firewall-cmd --list-ports - Confirm that the NSG inbound rules allow your client IP on 7001 (and on 7002 if you use SSL)
- Confirm that the AdminServer is listening:
ss -lnt | grep -E ':(7001|7002)'
weblogic-credentials.log is missing
The first-boot hook may still be running, or it may have failed. To check, run:
sudo systemctl status sac-weblogic-firstboot.service --no-pager sudo tail -n 200 /var/log/sac/sac-weblogic-firstboot.logIf the unit is stuck, delete the sentinel and re-run it manually:
sudo rm -f /var/lib/sac/data/weblogic-firstboot.done
sudo systemctl start sac-weblogic-firstboot.serviceForgotten administrator password
Reset the password offline using WLST in offline mode against the embedded LDAP. Alternatively, restore from a snapshot of /u01/app/oracle/product/user_projects/domains/base_domain/security/.
Security recommendations
- Replace the per-VM password from the credentials file with one of your own immediately after first login
- Restrict NSG inbound rules on 7001 and 7002 to trusted client IP ranges only
- Enable the SSL listener on 7002 and front the AdminServer with TLS for any production deployment
- Create dedicated WebLogic security realms and per-application users, and do not deploy as
weblogic - Keep the base OS patched:
sudo dnf -y update && sudo reboot - Take regular managed disk snapshots of
/u01so you can roll back domain configuration changes - Mount persistent application data on a separate Azure managed data disk
Support
For support, questions or feedback, visit secureanycloud.com/support or contact sales@secureanycloud.com.
Additional Oracle WebLogic Server documentation is available at the official site: docs.oracle.com/en/middleware/standalone/weblogic-server/.
Deploy on Azure
Launch Oracle WebLogic Server 15c on Oracle Linux 9 on Azure with 24/7 support from SecureAnyCloud.
View on Marketplace
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com