重新认识weblogic

  1. 安装
  2. 域创建
  3. weblogic免密后台启动
  4. 命令行部署
  5. 使用weblogic脚本工具 wlst

  由于之前所接触的项目中,使用weblogic实在windowsserver上面操作,安装界面部署界面都是以图形化为主,最近的项目使用的weblogic则是在linux环境下的,所有重新了解下weblogic在linux下的使用。此处以weblogic12为例

安装

  其实在linux下面也是可以使用图形化安装界面的,但是,是不是觉得在Linux下面还用图形化界面,太low了。所有这里采用静默安装的方式,看着这一堆小黑窗口是不是感觉很高大上。

  • 1.创建weblogic用户 配置jdk1.8环境变量
#创建用户组
[root@192 home]$ groupadd weblogic
[root@192 home]$ useradd  -g weblogic weblogic
[root@192 home]$ passwd weblogic 
# 切换用户到weblogic 配置环境变量
[weblogic@192 home]$ cat  << EOF >> ~/.bash_profile
export JAVA_HOME=/home/weblogic/jdk/jdk1.8.0_201
export JRE_HOME=\$JAVA_HOME/jre
export CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar:\$JRE_HOME/lib
export PATH=\$JAVA_HOME/bin:\$PATH
EOF

[weblogic@192 home]$source ~/.bash_profile

*NOTE 提示权限不足需要给足权限

chmod +x /home/weblogic/jdk/jdk1.8.0_201/bin/javac
chmod +x /home/weblogic/jdk/jdk1.8.0_201/bin/java

  • 2.创建rsp响应文件
[weblogic@192 home]$ touch wls.rsp
[weblogic@192 home]$ cat << EOF >wls.rsp
[ENGINE]
Response File Version=1.0.0.0.0
[GENERIC]
#ORACLE_HOME weblogic位置 主要文件位置权限
ORACLE_HOME=/home/weblogic/bea
INSTALL_TYPE=WebLogic Server
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=<SECURE VALUE>
DECLINE_SECURITY_UPDATES=true
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=<SECURE VALUE>
COLLECTOR_SUPPORTHUB_URL=
EOF
  • 3.创建loc文件
[root@192 home]$ touch oraInst.loc
[root@192 home]$ cat << EOF >>oraInst.loc
inventory_loc=/home/weblogic/oraInventory
# 实际创建的用户组
inst_group=weblogic
EOF
  • 执行静默安装
#-silent表示采用静默安装
#-ignoreSysPrereqs 忽略一些输出 可以不加
[weblogic@192 home]$ java -jar /home/weblogic/fmw_12.2.1.4.0_wls_lite_generic.jar \
-silent \
-responseFile /home/weblogic/wls.rsp \
-invPtrLoc /home/weblogic/oraInst.loc 
-ignoreSysPrereqs

域创建

  • 1.复制建域的脚本文件
## 重置linux随机数来源 建域较快
[weblogic@192 home]$ export CONFIG_JVM_ARGS='-Djava.security.egd=file:/dev/urandom'
[weblogic@192 home]$ cd /home/weblogic/bea/wlserver/common/templates/scripts/wlst
[weblogic@192 wlst]$ cp basicWLSDomain.py mybasicWLSDomain.py
  • 2.编辑模板文件
#=======================================================================================
# This is an example of a simple WLST offline configuration script. The script creates
# a simple WebLogic domain using the Basic WebLogic Server Domain template. The script
# demonstrates how to open a domain template, create and edit configuration objects,
# and write the domain configuration information to the specified directory.
#
# This sample uses the demo Derby Server that is installed with your product.
# Before starting the Administration Server, you should start the demo Derby server
# by issuing one of the following commands:
#
# Windows: WL_HOME\common\derby\bin\startNetworkServer.cmd
# UNIX: WL_HOME/common/derby/bin/startNetworkServer.sh
#
# (WL_HOME refers to the top-level installation directory for WebLogic Server.)
#
# The sample consists of a single server, representing a typical development environment.
# This type of configuration is not recommended for production environments.
#
# Please note that some of the values used in this script are subject to change based on
# your WebLogic installation and the template you are using.
#
# Usage:
#      java weblogic.WLST <WLST_script>
#
# Where:
#      <WLST_script> specifies the full path to the WLST script.
#=======================================================================================

#=======================================================================================
# Open a domain template.
#=======================================================================================
#默认就可以
readTemplate("/home/weblogic/bea/wlserver/common/templates/wls/wls.jar")

#=======================================================================================
# Configure the Administration Server and SSL port.
#
# To enable access by both local and remote processes, you should not set the
# listen address for the server instance (that is, it should be left blank or not set).
# In this case, the server instance will determine the address of the machine and
# listen on it.
#=======================================================================================

cd('Servers/AdminServer')
#监听地址
set('ListenAddress','')
 #端口
set('ListenPort', 7001)

create('AdminServer','SSL')
cd('SSL/AdminServer')
set('Enabled', 'True')
set('ListenPort', 7002)

#=======================================================================================
# Define the user password for weblogic.
#=======================================================================================

cd('/')
cd('Security/base_domain/User/weblogic')
# Please set password here before using this script, e.g. cmo.setPassword('value')
#设置控制台登录密码
cmo.setPassword('weblogic123')
#=======================================================================================
# Create a JMS Server.
#=======================================================================================

#cd('/')
#create('myJMSServer', 'JMSServer')

#=======================================================================================
# Create a JMS System resource.
#=======================================================================================

#cd('/')
#create('myJmsSystemResource', 'JMSSystemResource')
#cd('JMSSystemResource/myJmsSystemResource/JmsResource/NO_NAME_0')

#=======================================================================================
# Create a JMS Queue and its subdeployment.
#=======================================================================================

#myq=create('myQueue','Queue')
#myq.setJNDIName('jms/myqueue')
#myq.setSubDeploymentName('myQueueSubDeployment')

#cd('/')
#cd('JMSSystemResource/myJmsSystemResource')
#create('myQueueSubDeployment', 'SubDeployment')

#=======================================================================================
# Create and configure a JDBC Data Source, and sets the JDBC user.
#=======================================================================================

#cd('/')
#create('myDataSource', 'JDBCSystemResource')
#cd('JDBCSystemResource/myDataSource/JdbcResource/myDataSource')
#create('myJdbcDriverParams','JDBCDriverParams')
#cd('JDBCDriverParams/NO_NAME_0')
#set('DriverName','org.apache.derby.jdbc.ClientDriver')
#set('URL','jdbc:derby://localhost:1527/db;create=true')
#set('PasswordEncrypted', 'PBPUBLIC')
#set('UseXADataSourceInterface', 'false')
#create('myProps','Properties')
#cd('Properties/NO_NAME_0')
#create('user', 'Property')
#cd('Property/user')
#cmo.setValue('PBPUBLIC')

#cd('/JDBCSystemResource/myDataSource/JdbcResource/myDataSource')
#create('myJdbcDataSourceParams','JDBCDataSourceParams')
#cd('JDBCDataSourceParams/NO_NAME_0')
#set('JNDIName', java.lang.String("myDataSource_jndi"))

#cd('/JDBCSystemResource/myDataSource/JdbcResource/myDataSource')
#create('myJdbcConnectionPoolParams','JDBCConnectionPoolParams')
#cd('JDBCConnectionPoolParams/NO_NAME_0')
#set('TestTableName','SYSTABLES')

#=======================================================================================
# Target resources to the servers.
#=======================================================================================

#cd('/')
#assign('JMSServer', 'myJMSServer', 'Target', 'AdminServer')
#assign('JMSSystemResource.SubDeployment', 'myJmsSystemResource.myQueueSubDeployment', 'Target', 'myJMSServer')
#assign('JDBCSystemResource', 'myDataSource', 'Target', 'AdminServer')

#=======================================================================================
# Write the domain and close the domain template.
#=======================================================================================

setOption('OverwriteDomain', 'true')

setOption('JavaHome', '/home/weblogic/jdk/jdk1.8.0_201')
#新建域指定路径
writeDomain('/home/weblogic/bea/wlserver/../user_projects/domains/basicWLSDomain')
closeTemplate()

#=======================================================================================
# Exit WLST.
#=======================================================================================

exit()

  • 3.通过模板创建域

相关配置信息https://docs.oracle.com/en/middleware/fusion-middleware/weblogic-server/12.2.1.4/wlstc/reference.html

/home/weblogic/bea/wlserver/common/bin/wlst.sh /home/weblogic/bea/wlserver/common/templates/scripts/wlst/mybasicWLSDomain.py

weblogic免密后台启动

  weblogic生产模式启动时候会在控制台提示输入用户名密码,所有当我们在后台启动时 我们需要为其提供用户名密码的认证信息 ,在管理服务器域路径下,我们找到 域路径/servers/AdminServer/security/ 下面创建引导文件 ,boot.properties ,被管服务器只需将管理服务器的复制过去即可。
内容如下:

#Wed Jul 15 09:44:19 CST 2020
password=weblogic
username=weblogic


#Wed Jul 15 09:44:19 CST 2020
password={AES256}M8r8F3clbzHlwaa2FiE0z9qlpw/8U3Km1Ak/CdZzpPI\=
username={AES256}LoWSJCP+eiK8fBw/M1kIC1t3/WAG2h0uCGBVP6RzolU\=

该文件只需输入明文密码即可 ,在启动服务器后,weblogic会将明文加密 。之后即可使用后台启动服务 ,无需在控制台输入密码。

# 启动管理服务器
nohup ./startWeblogic.sh > Adminserver.log 2>&1 &
# Server-1 启动的被管服务器 ip 管理服务器ip port 管理服务器端口
nohup ./startManagedWebLogic.sh Server-1 t3://ip:port > server-1.log 2>&1 &

命令行部署

官方文档:https://docs.oracle.com/middleware/12212/wls/DEPGD/wldeployer.htm#DEPGD318

在Server-0,Server-1 上部署项目 多个被管服务器逗号分开不能有空格。
用户名密码可以使用配置文件和key这样密码就不会暴露在命令行[-userconfigfile config-file [-userkeyfile admin-key]]

java -cp /home/weblogic/bea/wlserver/server/lib/weblogic.jar weblogic.Deployer \
-adminurl t3://192.168.118.131:7001 \
-userconfigfile /home/weblogic/script/myuserconfigfile.secure -userkeyfile /home/weblogic/script/myuserkfile.secure \
-targets Server-0,Server-1 \
-name webapp \
-deploy /home/weblogic/script/App/webapp.war \
-appversion v1.0.0

使用weblogic脚本工具 wlst

官方文档:https://docs.oracle.com/en/middleware/fusion-middleware/12.2.1.4/wlstg/using_wlst.html

java -cp /home/weblogic/bea/wlserver/server/lib/weblogic.jar weblogic.WLST
  • 生成连接的配置和key
wls:/offline> connect('weblogic','weblogic123','t3://192.168.118.131:7001')
Connecting to t3://192.168.118.131:7001 with userid weblogic ...

wls:/basicWLSDomain/serverConfig/> storeUserConfig('/home/weblogic/script/myuserconfigfile.secure','/home/weblogic/script/myuserkfile.secure')
wls:/offline> connect(userConfigFile='/home/weblogic/script/myuserconfigfile.secure',userKeyFile='/home/weblogic/script/myuserkfile.secure')
wls:/basicWLSDomain/serverConfig/> exit()