如何在CLI下更新Glassfish
Glassfish作为由Sun(现在是Oracle)及社区直接维护的开源Java EE应用服务器,其对Java EE 6标准的全面支持、稳定强劲的运行表现和简单全面的配置界面赢得了Java社区的一致好评,并已逐渐成为架设Java Web App的首选
GF从2.0开始引入了update tool,即服务器在线版本更新工具,大大方便了开发人员对服务器的升级。然而,对于只有CLI环境的系统,比如远程SSH,默认的GUI版本的update tool无法运行,只能使用pkg代替。本文将介绍xUnix系统下如何使用pkg更新glassfish,及使用pkg中遇到的问题的解决方法
进入GF/bin目录,执行
./updatetool
GF将会从远程服务器下载updatetool、pkg的相关文件并生成两个脚本:updatetool和pkg。其中updatetool是GUI版本的更新工具,若在图形界面下可直接执行updatetool使用GUI更新GF。pkg是CLI版本。此时直接执行
./pkg
可能会得到如下错误:
Traceback (most recent call last): File "/opt/glassfishv3/pkg/bin/client.py", line 61, in ? import pkg.actions as actions File "/opt/glassfishv3/pkg/vendor-packages/pkg/actions/__init__.py", line 59, in ? globals(), locals(), [modname]) File "/opt/glassfishv3/pkg/vendor-packages/pkg/actions/generic.py", line 45, in ? import pkg.variant as variant File "/opt/glassfishv3/pkg/vendor-packages/pkg/variant.py", line 28, in ? from pkg.misc import EmptyI File "/opt/glassfishv3/pkg/vendor-packages/pkg/misc.py", line 32, in ? import OpenSSL.crypto as osc File "/opt/glassfishv3/pkg/vendor-packages/OpenSSL/__init__.py", line 11, in ? import rand, crypto, SSL, tsafe ImportError: /opt/glassfishv3/pkg/vendor-packages/OpenSSL/crypto.so: cannot restore segment prot after reloc: Permission denied
根据这篇文章的解决方案,执行
/usr/sbin/setenforce 0
应该就解决了,最后使用如下脚本更新GF
./pkg image-update