有人说Mac上装WebLogic特别折腾,下载要注册、安装要选半天、启动还各种报错,我装了不下十次之后想认真说一句:其实真没那么玄乎,只是网上能用的教程太老了,大部分还停在Windows思路。这篇我就不整虚的,把我实际踩过、验证过的Mac版WebLogic安装过程完整写下来,从JDK环境到域创建再到启动访问,一条龙讲清楚。
WebLogic是甲骨文的Java应用服务器,企业里跑老项目用得非常多,很多还在维护的金融、政企系统都是WebLogic承载。如果你手头是Mac本,又恰好要在本地起一个WebLogic环境做调试,或者要复现某个线上问题,这篇就是给你准备的。内容包括版本选型、JDK配置、图形化安装、静默安装、域创建、启动排错和安全设置,新手也能一步步跟下来。
1. 安装前的准备工作:先搞清楚版本和依赖
1.1 WebLogic版本怎么选
很多人一上来就找最新版,实际上这是个误区。WebLogic的版本选择要看你最终要部署的应用是基于哪个版本开发的。目前还在大面积使用的版本集中在12c和14c,具体点说就是12.2.1.4.0和14.1.1.0.0这两个。
12.2.1.4是很多企业生产环境的长期稳定版,兼容性好,对JDK 8的支持非常完善。14.1.1更像是面向新项目的版本,对JDK 11也做了支持。如果你只是本地做开发调试,我建议直接用14.1.1,下载包比较大但安装流程一样,后续功能支持也更新一些。如果是为了贴近生产环境、排查老项目问题,那优先选12.2.1.4。
还要注意一点,WebLogic的安装包分两种:一种是通用的jar包(fmw_12.2.1.4.0_wls.jar),另一种是带特定平台后缀的包。Mac上我们用的就是通用jar包,官方叫Generic,它不绑定操作系统,通过Java来启动安装器,所以Mac、Linux都能用。
提示:下载地址在甲骨文官网的Middleware Software里,需要注册登录才能下载,这点确实烦,但没办法。下载的时候认准WebLogic Server这行,别下成别的中间件产品。
1.2 JDK 8的安装与配置
WebLogic对JDK版本的要求比较严格,不是随便装个高版本就能跑。以12.2.1.4为例,官方推荐的是JDK 8,你用JDK 11也能装,但运行期可能会出现一些奇怪问题。14.1.1则可以用JDK 8或JDK 11,我建议在你的机器上装一个JDK 8,这是目前兼容性最稳妥的选择。
Mac上装JDK 8最省事的方式是用Homebrew:
brew install --cask temurin@8如果你没用过Homebrew,也可以直接去Eclipse Adoptium官网下载macOS版本的OpenJDK 8 pkg安装包,双击安装就行,没有复杂的配置步骤。安装完成后,确认一下Java版本:
java -version正常会显示类似openjdk version "1.8.0_xxx"的信息。如果显示的是高版本,说明你系统里还有别的JDK,需要调整JAVA_HOME环境变量。
1.3 确认环境变量和下载安装包
安装WebLogic之前,建议先把JAVA_HOME配好。macOS上JDK 8的默认安装路径通常是/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home,也有可能是别的名字,你可以在终端里这样确认:
/usr/libexec/java_home -V这个命令会把系统里所有JDK版本以及对应路径都列出来。然后在你自己的shell配置文件中设置环境变量。如果你用zsh,就编辑~/.zshrc:
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8) export PATH=$JAVA_HOME/bin:$PATH设置完执行source ~/.zshrc让它生效。这一步做好之后,再把下载好的fmw_12.2.1.4.0_wls.jar放到一个专门的目录里,比如~/weblogic/installer,后面安装要用。文件有1G左右,提前确认磁盘空间,至少留出3到5G给后续的安装和域文件。
2. 安装WebLogic的两种方式:图形界面与静默安装
2.1 图形界面安装的实际操作
图形界面安装是最直观的方式,适合第一次装的人。打开终端,进入安装包所在目录,执行:
cd ~/weblogic/installer java -jar fmw_12.2.1.4.0_wls.jar如果JAVA_HOME配得没问题,会弹出一个Oracle Fusion Middleware的图形安装向导,全英文界面,关键步骤就几步:选择安装目录、选择安装类型、填写不含甲骨文账号的安装信息(没有可以不填)、确认安装概要、开始安装。
安装类型这步要注意区分:“Typical Installation”只装WebLogic Server核心组件,我建议你选这个,够用且干净。“Custom Installation”可以额外勾选Coherence、JRockit等组件,如果你不确定自己要什么,就别勾,勾了反而多占空间,后续排错也更麻烦。
安装目录我习惯放在~/weblogic/下面,比如/Users/yourname/weblogic/wlserver。注意路径里别带中文和空格,WebLogic对这种路径兼容性不太好,后面启动可能出现莫名奇妙的问题。
整个安装过程大概5到10分钟,进度条走完提示Installation Complete就算成了。
2.2 静默安装:一条命令搞定
图形界面虽然直观,但如果你要重复装多台机器、或者想在脚本里集成安装流程,静默安装更合适。WebLogic支持通过-silent参数配合响应文件来完成安装。
先创建一个响应文件wls_install.rsp,内容大致如下:
[ENGINE] Response File Version=1.0.0.0.0 [GENERIC] ORACLE_HOME=/Users/yourname/weblogic INSTALL_TYPE=WebLogic Server DECLINE_SECURITY_UPDATES=true SECURITY_UPDATES_VIA_MYORACLESUPPORT=false执行安装命令:
java -jar fmw_12.2.1.4.0_wls.jar -silent -responseFile /path/to/wls_install.rsp没有任何弹窗,跑完直接回到命令行。静默安装的好处不只是快,更重要的是参数可控——ORACLE_HOME、INSTALL_TYPE这些都能提前固定下来,不会因为手滑点错选项导致返工。
注意:
DECLINE_SECURITY_UPDATES=true这个参数必须设置,不然安装器会一直卡在勾选接收安全更新的页面,界面安装时也要手动取消勾选才能继续。
2.3 安装完成后的目录结构
安装完成后,WebLogic的目录结构比Tomcat要复杂一些,新手容易迷路。最有用的几个目录和作用如下:
wlserver/:核心服务器程序,WebLogic所有组件都在这里wlserver/server/lib/:WebLogic运行所需的jar包,修改启动参数时经常要引用这里wlserver/common/bin/:wlst.sh等管理脚本所在地,创建域、执行脚本都靠它oracle_common/:公共组件目录,安装器生成的配套组件都在这里
搞清楚这些目录能帮你少走弯路,尤其是后面要手动创建域、改启动参数的时候,没有一个会绕得开它们。
3. 创建WebLogic域:管理服务器跑起来
3.1 使用WLST创建域
WebLogic安装完是不会直接有一个可运行的server的,要先创建一个“域”(Domain),域才是真正运行管理服务器(AdminServer)的地方。创建域有两种方式:用配置向导图形界面,或者用WLST脚本。我推荐用WLST,因为快、可重复,而且方便你理解整个过程。
WLST(WebLogic Scripting Tool)是WebLogic自带的Python脚本工具,创建域本质上是调用它的createDomain接口。先进入WLST环境:
cd ~/weblogic/wlserver/common/bin ./wlst.sh进入wlst.sh的交互界面后,输入以下命令:
readTemplate('/Users/yourname/weblogic/wlserver/common/templates/wls/wls.jar') set('Name', 'mydomain') writeDomain('/Users/yourname/weblogic/user_projects/domains/mydomain') closeTemplate() exit()readTemplate加载的是WebLogic提供的域模板,writeDomain则指定了域要存放的目录。执行完之后,你就有了一个最小可用的域,目录在~/weblogic/user_projects/domains/mydomain。
如果有IP、端口调整的需求,也可以在写域之前用CD命令去改,比如:
cd('/Servers/AdminServer') cmo.setListenAddress('127.0.0.1') cmo.setListenPort(7001)管理员服务器默认端口是7001,除非生产环境要求,一般本地开发用默认端口就够了。
3.2 配置内存参数与管理服务器
Java应用服务器的内存配置直接影响运行稳定性,WebLogic默认的堆内存偏保守,如果你的机器内存够大(16G以上),可以调高一些。打开域的启动脚本:
vim ~/weblogic/user_projects/domains/mydomain/bin/setDomainEnv.sh找到USER_MEM_ARGS这个变量,一般常见写法是:
USER_MEM_ARGS="-Xms256m -Xmx512m"如果要调大,改成:
USER_MEM_ARGS="-Xms1024m -Xmx2048m"这里我建议先不要一步给太大,2G足够应付本地调试了。如果后续部署的应用内存需求更高,再按需调整。改完保存退出。
心得:Mac上的WebLogic启动偶尔会在执行脚本时报
Permission denied,这是因为脚本没有执行权限。遇到这个情况,chmod +x几下就好,别急着往Java参数上怀疑。
3.3 启动、访问与关闭
启动管理服务器的命令在域的bin目录下:
cd ~/weblogic/user_projects/domains/mydomain/bin ./startWebLogic.sh第一次启动会提示输入管理员用户名和密码。但是默认模板创建的域并没有预设管理账号,如果之前创建域时没有设置,启动时会卡住要求输入。一个更省事的方法是,在创建域之后先设置一个默认的管理员账号:
cd /Users/yourname/weblogic/wlserver/common/bin ./wlst.sh readDomain('/Users/yourname/weblogic/user_projects/domains/mydomain') cd('/Security/base_domain/User/weblogic') cmo.setPassword('YourSecurePassword123!') updateDomain() closeDomain() exit()设置好账号后,再启动就不会询问了。启动日志正常情况下最后会出现Server state changed to RUNNING,这就是启动成功的标志。
打开浏览器,访问:
http://localhost:7001/console输入刚才设置的用户名密码,就能进入WebLogic管理控制台。默认控制台的界面风格比较旧,但功能很全,部署应用、管理数据源、看服务器状态都在里面。
关闭管理服务器,可以直接在终端按Ctrl+C,更推荐的方式是使用stopWebLogic.sh:
./stopWebLogic.sh脚本会主动发起关闭流程,把内存里的事务和资源回收干净,比硬杀进程安全得多。
4. 常见问题和排查实录
4.1 JDK版本不匹配导致安装失败
这是Mac上装WebLogic遇到最多的问题,症状是执行java -jar fmw_*.jar后直接弹出一段红字,提示Java version不符合要求,或者安装器跟JDK版本冲突直接闪退。
排查思路很简单,确认你的java -version和JAVA_HOME用的是同一个版本。有时候即使你在.zshrc里配了JDK 8,但终端的java命令仍指向别的版本,这时候要检查PATH顺序,确保$JAVA_HOME/bin在第一位。
我一直主张:安装阶段用哪个JDK,运行阶段就用哪个JDK。很多人安装时正常,启动域时报UnsupportedClassVersionError,就是因为安装和运行用了不同版本的Java。
4.2 图形安装界面打不开
Mac上图形界面打不开的常见原因有两个:一是JDK版本太高,启用的GUI库与macOS的窗口环境不兼容;二是没有在图形会话下运行。如果你是通过SSH远程到Mac上执行安装,那是不会有图形界面弹出来的,这种情况直接改用静默安装更靠谱。
如果你确定是本地终端且JDK版本没问题,可以加个参数强制用Java 8的图形库试试:
java -Djava.awt.headless=false -jar fmw_*.jar不过真到了这步,我建议就别折腾界面了,静默安装用起来真的香。
4.3 启动失败与日志排查
启动startWebLogic.sh时报错是最让人头大的环节。错误五花八门,但定位手段基本统一:看日志。
域目录下有三个目录最容易藏日志:
servers/AdminServer/logs/:管理员服务器的运行日志servers/AdminServer/:启动异常时这里会生成.out文件logs/:域级日志
最常见的启动失败原因是端口被占用。7001端口被别的进程占用了,启动时WebLogic会直接报BindException。排查方法:
lsof -i :7001找到占用进程,杀了或者改掉WebLogic的监听端口,再启动即可。
还有一个高频问题:启动到一半报内存不足,错误信息里出现OutOfMemoryError。这就是前面提到的USER_MEM_ARGS没配好,给得太小了。把堆内存下限适当往上提,比如-Xms512m -Xmx2048m,基本都能解决。
4.4 其他高频问题速查表
| 问题现象 | 可能原因 | 解决办法 |
|---|---|---|
| 控制台页面白屏/样式丢失 | 浏览器兼容性 | 改用Chrome或Firefox,关闭多余插件 |
部署应用时提示ClassNotFound | 依赖jar包未放入域 | 将jar放入domains/mydomain/lib/后重启 |
| 连接数据源失败 | 驱动版本不匹配 | 确认数据库驱动与数据库版本对应 |
| 启动脚本权限报错 | 文件无执行权限 | chmod +x startWebLogic.sh stopWebLogic.sh |
| 修改配置后不生效 | 未重启服务器 | 改配置后必须重启AdminServer |
这里多说一句:Mac上WebLogic在睡眠唤醒之后偶尔会出现假死状态,控制台能打开但部署请求很慢。这不是WebLogic的问题,是Java进程在系统休眠后线程池响应变慢,重启一下服务就好,不用过度排查。
5. 安装后的安全加固建议
5.1 版本漏洞与补丁管理
WebLogic作为长期演进的中间件,历史上被公开过的安全漏洞不少,老版本尤其需要注意。安装完的第一件事,就是确认当前版本号。在控制台首页或者执行:
cd ~/weblogic/wlserver/server/bin ./getVersion.sh能看完整的版本和补丁号。WebLogic发布安全补丁的频率比较高,甲骨文每个季度都会推出Critical Patch Update,简称CPU。本地开发机也不能忽略,因为你部署的应用很可能带着生产环境的配置或代码,漏洞一旦被扫描到,丢数据或被打穿都有可能。
补丁安装本身也是一个标准流程,通常是一个或多个jar包,通过opatch工具打到ORACLE_HOME上。这一步略复杂,建议先确认你当前版本再搜对应的补丁号,打补丁之前务必备份域目录和wlserver目录,这个习惯能救命。
5.2 基础安全配置清单
补丁是官方层面的事,自己动手能做的基础加固也很重要。根据我实际维护WebLogic环境的经验,以下几条建议本地开发和生产环境都适用:
- 修改默认端口。7001端口太通用,扫描器一眼就能认出WebLogic。开发环境改成8001或别的端口都行,能少很多不必要的探测。
- 设置强密码。控制台管理员密码别用
weblogic123这种,WebLogic被爆破的案例太多了,用户名就默认是weblogic,密码再弱等于裸奔。 - 关闭不需要的通道和协议。如果控制台不需要远程访问,监听地址绑127.0.0.1就好;不需要T3协议就把T3端口关掉或限制来源IP,这个协议历史上多次出问题。
- 日志保留和轮转配置。控制台里把日志轮转打开,限制单个日志文件大小,避免日志把磁盘塞满。
这些操作不复杂,在控制台的“域结构”菜单里都能找到。花十分钟做完,能挡掉绝大多数自动扫描和弱口令攻击。
6. 一些我装完WebLogic后必做的收尾事
安装和启动只是第一步,按我的习惯,装完还会顺手做三件事,省得后面反复折腾。
第一件,确认开机启动策略。Mac原生没有像Linux那样方便的服务管理工具,把WebLogic做成开机启动需要借助launchd,一般开发机没必要,反而会拖慢开机速度。我通常都是手动启动,用完手动关掉。
第二件,写一个简单的启动别名,放到~/.zshrc里:
alias startwls='cd ~/weblogic/user_projects/domains/mydomain/bin && ./startWebLogic.sh' alias stopwls='cd ~/weblogic/user_projects/domains/mydomain/bin && ./stopWebLogic.sh'之后在终端敲startwls就能启动,不用每次敲一长串路径。这玩意儿看着不起眼,实际上省了很多心,尤其是你一天要反复启停好几次的时候。
第三件,给域目录建一个独立备份。user_projects/domains下的配置和部署文件都在域目录里,万一改配置改坏了,不至于重装整个WebLogic。我一般用一条tar命令定期打包:
tar -czf mydomain_backup_$(date +%Y%m%d).tar.gz -C ~/weblogic/user_projects/domains mydomain整个备份大概几百MB,Mac磁盘够大,留着不亏。我自己的经验是,WebLogic最恶心的故障往往不是装不上、起不来,而是改着改着配置文件就坏了,又没有备份,只能从头再来。
装WebLogic真正花费时间的其实不是下载那1G安装包,也不是等进度条,而是安装前后那些需要反复理解和确认的版本、依赖、路径问题。把上面这些环节捋顺了,你再回头看“Mac安装Weblogic”这件事,跟装个Tomcat也差不了太多。希望这篇能帮你一次走通,不用再去翻那些十年前的老帖子。