Linux下安装weblogic、创建域以及项目部署
Linux下安装weblogic1. 下载安装包,并上传到服务器2. 用户准备3. 准备环境4. 安装(1)复制安装包(2)开始安装—详细步骤5. 创建domain6. 启动并登录控制台(1)启动遇到的问题:启动weblogic需要输入密码问题:解决启动需要输入密码问题:a. 保存用户名和密码信息到文件boot.properties中b. 直接修改启动脚本 startWebLogic.sh7. 修
Linux下安装weblogic
1. 下载安装包,并上传到服务器
- 下载 wls1211_generic.jar 自己网上下载即可
2. 用户准备
- 创建用户组
groupadd weblogic
- 创建用户 weblogic
useradd -g weblogic weblogic
- 给用户 weblogic 设置密码
passwd weblogic
- 查看用户所在组
groups weblogic
- 切换用户weblogic登录
su - weblogic
3. 准备环境
- 准备Java环境,可以参考:
linux下普通用户(非root用户)安装JDK8.
4. 安装
(1)复制安装包
- 将 wls1211_generic.jar 复制到weblogic下的某一文件夹(自己看着放就行)下并赋予安装文件可执行的权限
chown -R weblogic wls1211_generic.jar
chmod -R 777 wls1211_generic.jar
(2)开始安装—详细步骤
java -jar wls1211_generic.jar -mode=console
(你可以不加“-mode=console”的控制台文本模式,因为在你安装时无法启动图形安装界面时它会自动的进入文本控制台模式的)
- 选择中间件目录,可默认,看个人爱好吧
- 确认中间件目录
- 注册安全更新,一般不需要更新,操作:选择3,回车
- 更改接受更新方式,操作:输入No,回车
- 确认更改接受更新方式,操作:Yes,回车
- 接受更新选择确认,直接输入“Next”,回车(此时Receive Security Update:[No]表示我们不接受安全更新)
- 选择安装类型(Typical:典型;Custom:自定义),操作:我们选择默认典型安装,输入“Next”,回车(如果选择定制安装,输入“2”,回车)
- 选择jdk
- 选择产品安装目录,(一般来说,这一步默认就行(如果要更改的话就选择前面的序号,比如1回车,然后输入安装路径就行),输入“下一步”后回车),操作:Next,回车
- 安装产品系列列表,直接 Next,开始安装
- 看到下面信息即安装成功
5. 创建domain
- 进安装目录下的 bin 目录下,找 config.sh
- 执行
./config.sh
- 接下来傻瓜式往下走就行了,默认就next,其中有个路径需要注意:进入目标域目录选择,操作:输入“Next”,回车(这里选择默认即可,如果要修改,记得输入路径,回车)
- 后面的密码要记住,登录控制台要用的
- 域模式配置,操作:输入2,回车(1.开发模式,2生产模式)
- 选择jdk
- 接下来这一步需要注意,不然如果没选,可能出不来配置端口的信息,还需要手动改配置文件:
像下面这个图就是,没有配置端口的选择
- 如果上一步做出了选择,接下来就是配置端口号,默认端口就直接回车,否则选择序号进行修改
- 看到下面就是创建domain成功了
6. 启动并登录控制台
(1)启动遇到的问题:
启动weblogic需要输入密码问题:
用命令 nohup sh startWebLogic.sh &
:需要输入用户密码(控制台的用户和密码)
解决启动需要输入密码问题:
a. 保存用户名和密码信息到文件boot.properties中
- 在 /home/weblogic/liu/weblogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer 目录下,新建 security 文件夹,并在文件夹下新建文件 boot.properties ,内容如下:
然后用命令nohup sh startWebLogic.sh &
重启即可,可以看到可以正常启动了,而且第一次启动之后密码也被加密了
b. 直接修改启动脚本 startWebLogic.sh
-
在里面添加用户名和密码,你也可以尝试试试这种方法
-
后台可以看到你的启动端口,当然端口也是可以修改的
-
直接输入ip端口登录即可
-
接下来就可以部署项目了
7. 修改weblogic日志路径
- 修改目录 /home/weblogic/liu/weblogic/Oracle/Middleware/user_projects/domains/base_domain/bin 下的 setDomainEnv.sh 文件
- 在文件里添加内容:
LOG_PATH="/home/weblogic/liu/weblogic/logs"
WLS_REDIRECT_LOG="$LOG_PATH/weblogic.$$.log"
- 修改完之后重启即可,查看日志已经被重定向新的日志目录下
- 注意:重启之前记得杀掉进程
8. 部署项目
(1) 本地测试
- 需要了解MySQL安装的,可参考:
linux下普通用户安装MySQL以及处理常见问题. - 确保MySQL服务已启动,可连接
- 简单配置一下,连接数据库,本地启动服务,这里我连接的服务器上的MySQL数据库,当然你可以用本地安装的MySQL数据库
- 修改端口号,因为8080的端口已被占用,我们修改一下
jetty启动修改端口,加-Djetty.port=8081
如图:
- 修改完之后,启动即可
- 本地访问,我这里是写一个简单的controller,根据id查询的
- 好了,本地访问没问题,直接打包放服务器上即可
(2) 部署到服务器
1)打包项目并上传到服务器
- 将上传到服务器的war包解压
把包解压到指定目录。进入目标路径 /home/weblogic/liu/weblogic/upload_ssm/upload3 解压:
jar -xvf ../../upload_bak/ssm001.war
2)登录控制台配置数据源
- 先登录控制台:http://ip:7001/console,用户名密码就是创建domain时输入的用户名和密码
- 新建数据源:
- 然后,新建—>一般数据源,接下来傻瓜式填写,直接看图吧
好了,到这里数据源就配置好了
3)开始部署
- 部署的话,如果没问题一直傻瓜式下一步就行,如果有问题,那没办法只能解决问题了
- 选择文件,就是你解压后的文件,我这里部署时出现了点问题,所以文件有点多,选可用那个就行了
4)遇到的问题
a. Exception in AppMerge flows’ progression
① 详细问题如图:
后台日志:
<Unable to load descriptor /home/weblogic/liu/weblogic/upload_ssm/upload2/WEB-INF/web.xml of module upload2. The error is weblogic.descriptor.DescriptorException: Unmarshaller failed
② 解决问题:
- 看后台日志肯定是 web.xml 的问题,关于这个问题,网上也有各种解决问题的说法:
- 1> 有的说,因为maven引入的xml-apis.jar包和weblogic中jar包中有类冲突
加
- 1> 有的说,因为maven引入的xml-apis.jar包和weblogic中jar包中有类冲突
<exclusions>
<exclusion>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
</exclusion>
</exclusions>
解决冲突
- 2> 有的说,是servlet上面配置了’display-name’,这个weblogic是不支持的。解决办法就是:把web.xml中’display-name’删除掉,这种方法也尝试了,也不行
还有别的乱七八糟的方法都不好使,最后发现原来是因为:我安装的weblogic版本12.1.1.0,原来weblogic12c并不支持web-app_3_1.xsd的定义(好像weblogic11g也是不支持的,没验证,但应是这样),所以只需要修改一下 web-app 版本即可。
关于本问题最后的解决方案:
- 修改 web-app 的版本,我这里改成了2.4的版本
- 原先的版本:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
- 修改后的版本:
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- 修改完之后再重新部署就ok了
b. 部署状态一直是: distribute Initializing
- 这个问题可能是因为:分配给weblogic的的内存过低, 部署应用会产生很多动态类,此时内存不够的话,就需要频繁调用GC回收机制,自然部署时间要长很多
- 把内存设置大一些就试试
c. 部署报错:java.lang.ArrayIndexOutOfBoundsException: 52264
有的说是jetty问题,算了,我觉得还是tomact方便,索性把jetty插件去了,把本地换成了tomact启动吧
d. 换tomact后本地报错1:
- 报错:服务能启动,用数据库查询时有问题
Could not load driverClass com.mysql.cj.jdbc.Drive
- 问题原因就是:pom.xml中数据库版本与mysql数据库版本不对应
如果数据库是MySQL 5.x的,驱动应该写为jdbc.driver=com.mysql.jdbc.Driver
如果数据库是MySQL 8.x的,驱动应该写为jdbc.driver=com.mysql.cj.jdbc.Driver
我的MySQL是5.7的,所以对应修改即可。参考此问题的解决方法:
七种方法解决com.mchange.v2.c3p0.DriverManagerDataSource Could not load driverClass com.mysql.cj.jdbc.Drive.
e. 换tomact后本地报错2:
- 报错:服务能启动,用数据库查询时有问题
nested exception is java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
- 这个错就好解决了,因为缺少 jstl 的jar包,pom文件里添上即解决
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
f. 换tomact后,错误又回来了:
- 本地的时候,用jetty和tomact启动都没问题,但是部署服务器就是有问题。问题的关键是
还是那个错,这就尴尬了,兜了一圈又回来了!
部署后状态一直是distribute Initializing
,然后点击激活更改,就报这个52264
Caused By: java.lang.ArrayIndexOutOfBoundsException: 52264
最后此问题的解决方案:
- 我就纳闷了,本地跑着没问题,感觉配置也没啥问题,怎么部署就不好用呢,于是就考虑一下是不是welogic版本的问题,又装了一个11g的版本,部署上去之后,好了,果真是weblogic版本问题
- 接下来访问一下项目吧
ok,部署成功,也能访问数据库了,到这里就完事了,剩余唯一一个问题,就是此项目在12c上为啥不行
关于weblogic版本问题:
待定
9. 附项目demo
- 项目下载:ssm项目–demo.
更多推荐
所有评论(0)