WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
因公司项目需求,需要搭建一个基于linux,jenkins,Weblogic的自动部署服务器,于是结合网上的一些资料现已成功应用到生产环境中,特在此记录搭建的过程和爬过的坑 供有兴趣的小伙伴参考。
软件支持:(由于我jenkins和weblogic是分开部署在两台linux服务器上的,存在jdk版本差异,统一一下就可以了)
CentOS6.5(系统环境)
JDK7.x 8.x都可以
SVN
Jenkins-2.X Jenkins官网:https://jenkins.io/index.html
Jenkins资源地址(各个版本及插件):http://mirrors.jenkins.io
Weblogic12.1.3(跟weblogic集成各种坑)
Maven-3.5.4(此处暂时没有用到)
Ant1.9.13(这个好像没啥要求,主要用来编译打包非Maven项目,非Maven项目的Ant编译也有问题,再此做记录!!!)
一、Weblogic12c下载
http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-for-dev-1703574.html
选择Generic下载,此处需要Oracle账号登录(没有就注册一个问题不大)
二、安装环境配置
1.新建用户组 weblogic
[root@runadmin ~]#
[root@runadmin ~]# groupadd weblogic
[root@runadmin ~]#
2.新建用户weblogic12c 并修改用户密码
[root@runadmin ~]#
[root@runadmin~]# useradd -g weblogic weblogic12c //添加用户,并用-g参数来制定 weblogic用户组
[root@runadmin ~]
[root@runadmin ~]# passwd weblogic12c //passwd命令修改密码
Changing password for user weblogic.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@runadmin ~]#
3.
(1).安装JDk
安装jdk1.7版本即可,下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
下载完成后,上传至自定义目录。
解压:
tar -zxvf jdk-7u71-linux-x64.tar.gz -C /usr/java/
(2).配置java环境变量:
vi ~/.bash_profile
export PATH
export JAVA_HOME=/usr/java/jdk1.7.0_71
export JRE_HOME=/usr/java/jdk1.7.0_71/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
重新加载
source .bash_profile
安装及配置值完成后,可以通过命令查看JDk版本:
java -version
三、Weblogic安装
1.创建初始化文件
mkdir /ait/oraInventory
mkdir /ait/install
mkdir /ait/weblogic
把weblogic的安装包放在 /ait/install里,文件名是fmw_12.1.3.0.0_wls.jar
cd /ait/install
vi /ait/install/oraInst.loc
inventory_loc=/ait/oraInventory
#产品清单目录;注意不能放在 weblogic安装目录下,要保证安装目录为空
inst_group=weblogic
#用户的组名称,根据实际的修改,注意用什么用户安装weblogic这里就写什么用户组名,我用的是weblogic用户组安装的。
2.创建响应文件
vi /ait/install/wls.rsp
[ENGINE]
#DO NOT CHANGE THIS
Response File Version=1.0.0.0.0
[GENERIC]
#weblogic的安装路径
ORACLE_HOME=/ait/weblogic
#Set this variable value to the Installation Type selected.e.g. WebLogic Server, Coherence, Complete with Examples.
INSTALL_TYPE=WebLogic Server
DECLINE_SECURITY_UPDATES=true
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
3.安装
[weblogic@runadmin install]$java -jar fmw_12.1.3.0.0_wls.jar -silent -responseFile /ait/install/wls.rsp -invPtrLoc /ait/install/oraInst.loc
注意:初始化文件和响应文件一定要是全路径,(前面自定义的)。
安装中耐心等待,出现Percent Complete : 100时安装完成(按照上面一步步来应该是不会出错的,如果出现错误请参照上面步骤)
注意:这里给大家推荐一下su和sudo命令的使用 https://blog.csdn.net/wzgl__wh/article/details/51327556
4.创建domain
1).创建domain前,
在/ait/weblogic/oracle_common/common/bin/config.sh 中添加随机数加快domin的创建
JVM_ARGS=”-Djava.security.egd=file:///dev/urandom-Dpython.cachedir=/tmp/cachedir${JVM_D64}${UTILS_MEM_ARGS}${SECURITY_JVM_ARGS} ${CONFIG_JVM_ARGS}”
2).采用wlst脚本来建立domain
vi /ait/install/create_domain.py
readTemplate(‘/ait/weblogic/wlserver/common/templates/wls/wls.jar’)
cd(‘Servers/AdminServer’)
set(‘ListenPort’,7001)
cd(‘/’)
cd(‘Security/base_domain/User/weblogic’)
#修改weblogic12c管理员用户名为weblogic,则需要cmo.setName(‘weblogic’)
cmo.setName(‘weblogic’)
#用户名
cmo.setPassword(‘weblogic123’)
#密码
setOption(‘ServerStartMode’,’prod’)
setOption(‘OverwriteDomain’,’true’)
writeDomain(‘/ait/weblogic/user_projects/proddomain’)
#自定义的domin路径
closeTemplate()
exit()
如果创建失败有报错指向这个文件,请仔细修改文件不要出现多余的字符,也可以把没用的注释行删掉
sh /ait/weblogic/oracle_common/common/bin/wlst.sh /ait/install/create_domain.py
注:过程可能较慢耐心等待。
3).安装信息
Initializing WebLogic Scripting Tool (WLST) …
Welcome to WebLogic Server Administration Scripting Shell
Type help() for help on available commands
Exiting WebLogic Scripting Tool.
5.打补丁(根据特定情况打什么补丁)
1)查询当前补丁
sh /ait/weblogic/OPatch/opatch lsinventory
2)打补丁
mkdir /ait/weblogic/PATCH_TOP
unzip -d /ait/weblogic/PATCH_TOP p25388866_122120_Generic.zip
cd /ait/weblogic/PATCH_TOP/25388866
sh /ait/weblogic/OPatch/opatch apply
6.优化
1)修改句柄数 自己环境可以不用操作此步
vim /etc/security/limits.conf(root即可)
wlsoper hard nofile 10240
wlsoper soft nofile 10240
2)domain相关配置
(1)添加domain随机数,指定编码方式
vi /ait/weblogic/user_projects/proddomain/bin/setDomainEnv.sh
JAVA_OPTIONS=”${JAVA_OPTIONS} -Dfile.encoding=utf-8 -Djava.security.egd=file:///dev/urandom”
export JAVA_OPTIONS
(2)vi /ait/weblogic/user_projects/proddomain/bin/startWebLogic.sh
修改umask 037为umask 002
(3)vi /ait/weblogic/user_projects/proddomain/bin/stopWebLogic.sh,加入部分参数,加速 Admin Server 停止:
echo “shutdown(‘${SERVER_NAME}’,’Server’, ignoreSessions=’true’,timeOut=0,force=’true’ )” >>”shutdown.py”
7.启动webligic
sh /ait/weblogic/user_projects/proddomain/bin/startWebLogic.sh //这是在前台运行 后面会有后台运行脚本
启动信息
[weblogic@runadmin bin]$ sh startWebLogic.sh
.
.
JAVA Memory arguments: -Xms256m -Xmx512m
.
CLASSPATH=/usr/java/jdk1.7.0_71/lib/tools.jar:/ait/weblogic/wlserver/server/lib/weblogic.jar:/ait/weblogic/wlserver/../oracle_common/modules/net.sf.antcontrib_1.1.0.0_1-0b3/lib/ant-contrib.jar:/ait/weblogic/wlserver/modules/features/oracle.wls.common.nodemanager.jar::/ait/weblogic/wlserver/common/derby/lib/derbynet.jar:/ait/weblogic/wlserver/common/derby/lib/derbyclient.jar:/ait/weblogic/wlserver/common/derby/lib/derby.jar:.:/usr/java/jdk1.7.0_71/lib/dt.jar:/usr/javajdk1.7.0_71/lib/tools.jar:/usr/java/jdk1.7.0_71/jre/lib
.
PATH=/ait/weblogic/user_projects/proddomain/bin:/ait/weblogic/wlserver/server/bin:/ait/weblogic/wlserver/../oracle_common/modules/org.apache.ant_1.9.2/bin:/usr/java/jdk1.7.0_71/jre/bin:/usr/java/jdk1.7.0_71/bin:/usr/java/jdk1.7.0_71/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/weblogic/bin
.
- To start WebLogic Server, use a username and *
- password assigned to an admin-level user. For *
- server administration, use the WebLogic Server *
- console at http://hostname:port/console *
Starting WLS with line:
/usr/java/jdk1.7.0_71/bin/java -server -Xms256m-Xmx512m -Dweblogic.Name=AdminServer-Djava.security.policy=/ait/weblogic/wlserver/server/lib/weblogic.policy -Dweblogic.ProductionModeEnabled=true -Djava.system.class.loader=com.oracle.classloader.weblogic.LaunchClassLoader -javaagent:/ait/weblogic/wlserver/server/lib/debugpatch-agent.jar -da-Dwls.home=/ait/weblogic/wlserver/server-Dweblogic.home=/ait/weblogic/wlserver/server -Dfile.encoding=utf-8 -Djava.security.egd=file:///dev/urandom weblogic.Server
解决方法:
[root@runadmin /]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.116.0 localhost localhost.localdomain runadmin
注:192.168.116.0是我的linux服务器ip
8.自启脚本
1).Adminserver启动时就不需要输入密码
mkdir /ait/weblogic/user_projects/proddomain/servers/AdminServer/security
vi /ait/weblogic/user_projects/proddomain/servers/AdminServer/security/boot.properties
username=weblogic
password=weblogic123
2)Adminserver启动脚本 //注意所有启动停止脚本要放在 /ait/weblogic/user_projects/proddomain下
mkdir /ait/weblogic/user_projects/proddomain/logs
cd /ait/weblogic/user_projects/proddomain/
vi/ait/weblogic/user_projects/proddomain/strAdminServer.sh
脚本内容
cd ./bin
mv ../logs/AdminServer.out ../logs/AdminServer-'date+"%Y-%m-%d-%H:%M:%S"
'.out
mv ../logs/AdminServer.err ../logs/AdminServer-'date+"%Y-%m-%d-%H:%M:%S"
'.err
mv ../logs/AdminServer_gc.out ../logs/AdminServer_gc-'date+"%Y-%m-%d-%H:%M:%S"
'.out
export USER_MEM_ARGS=”-Xms512m -Xmx512m -Xmn256m -XX:+UseConcMarkSweepGC -XX:+HeapDumpOnOutOfMemoryError -verbose:gc-Xloggc:./logs/AdminServer_gc.out -XX:+PrintGCDetails -XX:+PrintGCTimeStamps-Dweblogic.threadpool.MinPoolSize=100 -Dweblogic.threadpool.MaxPoolSize=300-Dweblogic.management.disableManagedServerNotifications=true”
nohup ./startWebLogic.sh 1> ../logs/AdminServer.out 2>../logs/AdminServer.err &
echo “nohup ./startWebLogic.sh 1> ../logs/AdminServer.out 2>../logs/AdminServer.err &”
#tail -f ../logs/AdminServer.out
3)Adminserver停止脚本
vi /ait/weblogic/user_projects/proddomain/stpAdminServer.sh
cd ./bin
./stopWebLogic.sh
4)server 启动脚本
vi /ait/weblogic/user_projects/proddomain/startappserver.sh
cd ./bin
mv ../logs/appserver.out ../logs/appserver-'date+"%Y-%m-%d-%H:%M:%S"
'.out
mv ../logs/appserver.err ../logs/appserver-'date+"%Y-%m-%d-%H:%M:%S"
'.err
mv ../logs/appserver_gc.out ../logs/appserver_gc-'date+"%Y-%m-%d-%H:%M:%S"
'.out
export USER_MEM_ARGS=”-Xms512m -Xmx512m -Xmn256m -XX:+UseConcMarkSweepGC -XX:+HeapDumpOnOutOfMemoryError -verbose:gc-Xloggc:./logs/appserver_gc.out -XX:+PrintGCDetails -XX:+PrintGCTimeStamps-Dweblogic.threadpool.MinPoolSize=100-Dweblogic.threadpool.MaxPoolSize=300”
nohup ./startManagedWebLogic.shappserver t3://192.168.116.0:7001 1>../logs/appserver.out 2> ../logs/appserver.err &
#192.168.116.0是 adminserver的ip
#tail -f ../logs/appserver.out
注:启动脚本里的 appserver要和后边控制台添加的服务器名一致
5)server的 停止脚本
vi /ait/weblogic/user_projects/proddomain/stopappserver.sh
cd ./bin
./stopManagedWebLogic.sh appserver t3://192.168.116.0:7001
9.在控制台加server
1).在浏览器输入http://192.168.116.0:7001/console 登陆控制台
环境—->服务器—>点击锁定并编辑—>点击新建
服务器名:appserver(自定义)
服务器监听地址:192.168.116.0(这是adminserver的地址,如果server放在别的服务器上就填那台服务器的ip地址)
服务器监听端口: 8001 (没有被占用就行,注意防火墙设置)
别忘了点激活更改,不点的话配置信息就不能写到config.xml里,要不启动server时会报错。
2)启动脚本
sh startappserver.sh
看启动信息报错,没有起来,主要是没有写boot.properties,启动过程中要去找控制台用户名和密码,在Adminserver那复制过来就可以了
cd /ait/weblogic/user_projects/proddomain
[weblogic@runadmin proddomain]$ cp -r servers/AdminServer/security/ servers/appserver
至此Weblogic12c安装结束!
Jenkins,之前叫做Hudson,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,包括:
1、持续的软件版本发布/测试项目。
2、监控一些定时调用执行的工作。
通俗的说 jenkins 可以帮助我们编译发布代码,比如我们提交到SVN后,要发布运行,就可以用过jenkins进行编译运行。
在没使用jenkins之前,我们发布版本的时候 都是手动拷贝包,启动服务器来进行发布的,但是有了jenkins之后,只要点一下按钮,它就会把你完成发布的操作。是不是很棒。
jenkins提供了很好的日志输入以及运行过程的监控
同时jenkins还能控制 定时调用代码运行。
-
-
- 下载
-
Jenkins官网:https://jenkins.io/index.html
Jenkins资源地址(各个版本及插件):http://mirrors.jenkins.io
-
-
- JDK安装
-
安装jdk1.7或1.8版本即可,下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
下载完成后,上传至自定义目录。
解压:
tar -zxvf jdk-8u131-linux-x64.tar.gz -C /usr/java/
(2).配置java环境变量:
vi ~/.bash_profile
export PATH
export JAVA_HOME=/usr/java/jdk1.8.0_131
export JRE_HOME=/usr/java/jdk1.8.0_131/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
重新加载
source .bash_profile
安装及配置值完成后,可以通过命令查看JDK版本:
java -version
访问Jenkins官网:https://jenkins.io/index.html
将下载的jenkins-2.121.2-1.1.noarch.rpm上传到服务器/usr下
通过rpm命令安装
sudo rpm -ih jenkins-2.121.2-1.1.noarch.rpm
自动安装完成之后:
/usr/lib/jenkins/jenkins.war WAR包
/etc/sysconfig/jenkins 配置文件
/var/lib/jenkins/ 默认的JENKINS_HOME目录
/var/log/jenkins/jenkins.log Jenkins日志文件
启动命令:
sudo service jenkins start
[root@localhost /]# sudo service jenkins start
Starting Jenkins bash: /usr/bin/java: No such file or directory
[FAILED]
会报这个错误,这是由于没有配置java环境,有两种方法可以解决:
1. 安装jdk环境
先检查一下java虚拟机有没有安装,如果没有就安装
java --version
//如果没有,则安装
2.在jenkins配置文件中配置
需要“vi /etc/init.d/jenkins”,把java路径加上,如下:
# Search usable Java. We do this because various reports indicated
# that /usr/bin/java may not always point to Java >= 1.6
# see http://www.nabble.com/guinea-pigs-wanted-----Hudson-RPM-for-RedHat-Linux-td25673707.html
candidates="
/usr/java/ jdk1.8.0_60/bin/java
/etc/alternatives/java/usr/lib/jvm/java-1.6.0/bin/java/usr/lib/jvm/jre-1.6.0/bin/java/usr/lib/jvm/java-1.7.0/bin/java/usr/lib/jvm/jre-1.7.0/bin/java/usr/lib/jvm/java-1.8.0/bin/java/usr/lib/jvm/jre-1.8.0/bin/java/usr/bin/java"for candidate in $candidatesdo [ -x "$JENKINS_JAVA_CMD" ] && break JENKINS_JAVA_CMD="$candidate"doneJAVA_CMD="$JENKINS_JAVA_CMD $JENKINS_JAVA_OPTIONS -DJENKINS_HOME=$JENKINS_HOME -jar $JENKINS_WAR"
上述配置文件中红色字体的内容是我配置自己的jdk路径
配置jenkins的端口
1 | [root@localhost /]#vi/etc/sysconfig/jenkins |
找到修改端口号:
JENKINS_PORT="8080" 此端口不冲突可以不修改,(最好选一个不冲突的端口)
再次启动jenkins:
[root@localhost /]# sudo service jenkins start
Starting Jenkins [ OK ]
修改jenkins默认的操作用户,linux下jenkins默认使用jenkins用户进行脚本和文件的操作,如果不修改,在部署项目时需要调整涉及到的文件和目录的操作权限,可以调整jenkins配置文件,将用户修改为root用户。
vi /etc/sysconfig/jenkins
将JENKINS_USER="jenkins"调整为JENKINS_USER="root"
在本地浏览器中输入“http://IP:端口号”登录jenkins,第一次登录Jenkins 会要求解锁
打开红色标记中的路径,取出password,填入上图,点击“continue”
[root@localhost /]# cd /var/lib/jenkins/secrets
点击“继续”可能会出现如下情况:(没有遇到则跳过)
网上找了好多方式尝试都没能解决(尴尬!)也可以尝试配置代理,我直接点击跳过插件安装(后面有点坑的是需要手动安装10多个插件,后面有介绍)
接下来是创建管理员用户:admin(名字自己喜欢就好)
输入上述信息,设置管理员用户
点击开始使用,可能会出现跳转空白页的情况(没有此处跳过)
出现跳转空白页解决如下:
edit the /var/lib/jenkins/config.xml and replace the following two xml tags with the below version. Then restart your server.
<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
<securityRealm class="hudson.security.SecurityRealm$None"/>
服务重启完成之后,重新访问即可。
安装到此结束!
首先到前面提供的网址http://mirrors.jenkins.io/plugins//中下载自己需要的插件(eg: ant subversion weblogic-deployer-plugin等):
ant-->编译打包非Maven项目插件
subversion—>版本控制SVN所需插件
weblogic-deployer-plugin—>weblogic部署插件
安装插件时,有时会因为依赖缺失的问题无法安装成功。如何知道这件插件的依赖呢?你可以在插件上传界面如下
点击失败后面的-详细 可以查看当前插件所需要的依赖插件
然后你要把所有的依赖都下载下来(上面给出的网址)。然后下面介绍如何进行离线安装。
进入:系统管理->插件管理->高级
出现如下界面:
这时候我们是不是看到了中间有个上传插件的地方(其他地方我们的信息不一样可以不管)。
点击选择文件按钮,选中刚才我们下载的插件,注意每次只能选中一个文件,所以先选择依赖文件。然后点击上传按钮。这样依次就可以将所有的插件离线安装成功了!如下图所示:
例如 subversion插件(以及依赖插件):
安装上传顺序如下:
后面截图我就不一一演示了!
这里是1.9.13(好像是最新)的版本,如需最新版本,请到http://ant.apache.org/bindownload.cgi查找
1、 转到/usr/目录(安装目录自定义)
2、下载完成后上传到/usr/下解压
tar -zxvf apache-ant-1.9.13-bin.tar.gz
3、 vi /etc/profile 修改环境变量
#setAnt enviroment
export ANT_HOME=/usr/apache-ant-1.9.13
export PATH=$PATH:$ANT_HOME/bin
4、 source /etc/proifle 立刻将配置生效
5、 ant -version 测试ant是否生效
-
- jenkins基础配置
- 全局工具配置
- jenkins基础配置
系统管理->全局工具配置
最后别忘了保存!!!
注:maven安装类似
-
-
- 全局安全配置
-
系统管理->全局安全配置(根据需要设置)
别忘了保存!!!
-
-
- 用户管理
-
系统管理->管理用户
-
-
- 系统设置
-
系统管理—>系统设置
配置项挺多 无关的默认就好
-
- 与weblogic集成配置
- 系统设置
- 与weblogic集成配置
在这之前,需要先在Jenkins里新增一个插件(weblogic-deployer-plugin-3.6.hpi)
添加插件步骤跟之前一样,不重复了
configuration.xml 文件实例:(注意:该文件内容修改后需要重启jenkins)
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://org.jenkinsci.plugins/WeblogicDeploymentPlugin"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://org.jenkinsci.plugins/WeblogicDeploymentPluginplugin-configuration.xsd">
<weblogic-targets>
<weblogic-target>
<name>hbcvas</name> /*随便起个有含义的名字即可(例如域名)*/
<host>192.168.116.0</host> /*domain域的ip*/
<port>7001</port> /*domain域的端口*/
<login>weblogic</login> /*登录域的账号*/
<password>weblogic123</password> /*登录域的密码*/
</weblogic-target>
</weblogic-targets>
</config>
-
-
- 非Maven项目任务创建
-
非maven项目选这个…….
创建的任务可在 jenkins首页我的视图中查看 点开任务 有个配置选项
源码管理:
项目构建:
构建后操作:
注:每步操作记得保存,不然不会生效
此项根据实际需要定制:
Build periodically:定时构建
例如:0 4 * * * (每天凌晨4点必须构建一次源码)
Poll SCM:根据SCM软件的版本号,定时检查源码变更。如果有更新,则checkout最新code,然后执行构建动作。
例如:*/10 * * * * (每10分钟检查一次源码变化,如果有更新才build)
开始执行构建: 我的视图----选中任务