├── images
├── weblogic_env.gif
├── 2019-08-01-16-34-18.png
├── 2019-08-01-16-35-18.png
└── 2019-08-01-21-05-32.png
├── .gitignore
├── scripts
├── jdk_install.sh
├── jdk_bin_install.sh
├── open_debug_mode.sh
├── create_domain12c.sh
├── create_domain11g.sh
├── weblogic_install12c.sh
└── weblogic_install11g.sh
├── docker-compose.yml
├── docker-compose_weblogic1036jdk6u25.yml
├── docker-compose_weblogic12013jdk8u121.yml
├── run_weblogic12013jdk7u21.sh
├── run_weblogic12021jdk8u121.sh
├── run_weblogic1036jdk6u25.sh
├── run_weblogic1036jdk7u21.sh
├── run_weblogic1036jdk8u121.sh
├── Dockerfile
└── README.md
/images/weblogic_env.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QAX-A-Team/WeblogicEnvironment/HEAD/images/weblogic_env.gif
--------------------------------------------------------------------------------
/images/2019-08-01-16-34-18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QAX-A-Team/WeblogicEnvironment/HEAD/images/2019-08-01-16-34-18.png
--------------------------------------------------------------------------------
/images/2019-08-01-16-35-18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QAX-A-Team/WeblogicEnvironment/HEAD/images/2019-08-01-16-35-18.png
--------------------------------------------------------------------------------
/images/2019-08-01-21-05-32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QAX-A-Team/WeblogicEnvironment/HEAD/images/2019-08-01-21-05-32.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | Data/
2 |
3 | .DS_Store
4 |
5 | logs
6 |
7 | *.log
8 |
9 | data/
10 |
11 | .idea/
12 |
13 | public/
14 |
15 | jdks/
16 |
17 | middleware/
18 |
19 | supplemental/
20 |
21 | temp/
22 |
23 | weblogics/
24 |
25 |
--------------------------------------------------------------------------------
/scripts/jdk_install.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | echo "==========开始安装JDK JDK安装包:"$JDK_PKG"=========="
3 | # install JDK
4 | tar -zxvf $JDK_PKG -C /install
5 | mv /install/jdk* /java
6 |
7 | echo "==========JDK安装完成=========="
8 |
9 |
10 |
--------------------------------------------------------------------------------
/scripts/jdk_bin_install.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | echo "==========开始安装JDK JDK安装包:"$JDK_PKG"=========="
3 | # install JDK
4 | cp $JDK_PKG /install/$JDK_PKG
5 | rm -rf $JDK_PKG
6 | chmod +x /install/$JDK_PKG
7 | /install/$JDK_PKG
8 | mv /jdk* /java
9 |
10 | echo "==========JDK安装完成=========="
11 |
--------------------------------------------------------------------------------
/scripts/open_debug_mode.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | echo "==========打开Debug模式=========="
3 | sed '1 adebugFlag=\"true\"' -i /u01/app/oracle/Domains/ExampleSilentWTDomain/bin/setDomainEnv.sh
4 | sed '2 aexport debugFlag' -i /u01/app/oracle/Domains/ExampleSilentWTDomain/bin/setDomainEnv.sh
5 | echo "==========Debug模式已打开=========="
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3'
2 | services:
3 | weblogic:
4 | build:
5 | context: .
6 | args:
7 | JDK_PKG: jdk-8u121-linux-x64.tar.gz
8 | WEBLOGIC_JAR: fmw_12.2.1.0.0_wls.jar
9 | ports:
10 | - "7001:7001"
11 | - "8453:8453"
12 | - "5556:5556"
13 | volumes:
14 | - ./temp:/u01/temp
15 | # - ./middleware/modules:/u01/app/oracle/middleware/modules
16 | # - ./middleware/wlserver:/u01/app/oracle/middleware/wlserver
17 |
18 |
--------------------------------------------------------------------------------
/docker-compose_weblogic1036jdk6u25.yml:
--------------------------------------------------------------------------------
1 | version: '3'
2 | services:
3 | weblogic:
4 | build:
5 | context: .
6 | args:
7 | JDK_PKG: jdk-6u25-linux-x64.bin
8 | WEBLOGIC_JAR: wls1036_generic.jar
9 | ports:
10 | - "7001:7001"
11 | - "8453:8453"
12 | - "5556:5556"
13 | volumes:
14 | - ./temp:/u01/temp
15 | # - ./middleware/modules:/u01/app/oracle/middleware/modules
16 | # - ./middleware/wlserver:/u01/app/oracle/middleware/wlserver
17 |
18 |
--------------------------------------------------------------------------------
/docker-compose_weblogic12013jdk8u121.yml:
--------------------------------------------------------------------------------
1 | version: '3'
2 | services:
3 | weblogic:
4 | build:
5 | context: .
6 | args:
7 | JDK_PKG: jdk-8u121-linux-x64.tar.gz
8 | WEBLOGIC_JAR: fmw_12.1.3.0.0_wls.jar
9 | ports:
10 | - "7001:7001"
11 | - "8453:8453"
12 | - "5556:5556"
13 | volumes:
14 | - ./temp:/u01/temp
15 | # - ./middleware/modules:/u01/app/oracle/middleware/modules
16 | # - ./middleware/wlserver:/u01/app/oracle/middleware/wlserver
17 |
18 |
--------------------------------------------------------------------------------
/run_weblogic12013jdk7u21.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | docker rm `docker ps -a | grep weblogic | awk '{print $1}'` -f
3 | docker rmi -f `docker images | grep 'weblogic' | awk '{print $3}'`
4 | docker build --build-arg JDK_PKG=jdk-7u21-linux-x64.tar.gz --build-arg WEBLOGIC_JAR=fmw_12.1.3.0.0_wls.jar -t weblogic12013jdk7u21 .
5 | docker run -d -p 7001:7001 -p 8453:8453 -p 5556:5556 --name weblogic12013jdk7u21 weblogic12013jdk7u21
6 | rm -rf ./middleware
7 | mkdir ./middleware
8 | docker cp weblogic12013jdk7u21:/u01/app/oracle/middleware/wlserver ./middleware/
--------------------------------------------------------------------------------
/run_weblogic12021jdk8u121.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | docker rm `docker ps -a | grep weblogic | awk '{print $1}'` -f
3 | docker rmi -f `docker images | grep 'weblogic' | awk '{print $3}'`
4 | docker build --build-arg JDK_PKG=jdk-8u121-linux-x64.tar.gz --build-arg WEBLOGIC_JAR=fmw_12.2.1.0.0_wls.jar -t weblogic12021jdk8u121 .
5 | docker run -d -p 7001:7001 -p 8453:8453 -p 5556:5556 --name weblogic12021jdk8u121 weblogic12021jdk8u121
6 | rm -rf ./middleware
7 | mkdir ./middleware
8 | docker cp weblogic12021jdk8u121:/u01/app/oracle/middleware/wlserver ./middleware/
--------------------------------------------------------------------------------
/run_weblogic1036jdk6u25.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | docker rm `docker ps -a | grep weblogic | awk '{print $1}'` -f
3 | docker rmi -f `docker images | grep 'weblogic' | awk '{print $3}'`
4 | docker build --build-arg JDK_PKG=jdk-6u25-linux-x64.bin --build-arg WEBLOGIC_JAR=wls1036_generic.jar -t weblogic1036jdk6u25 .
5 | docker run -d -p 7001:7001 -p 8453:8453 -p 5556:5556 --name weblogic1036jdk6u25 weblogic1036jdk6u25
6 | rm -rf ./middleware
7 | mkdir ./middleware
8 | docker cp weblogic1036jdk6u25:/u01/app/oracle/middleware/modules ./middleware/
9 | docker cp weblogic1036jdk6u25:/u01/app/oracle/middleware/wlserver ./middleware/
--------------------------------------------------------------------------------
/run_weblogic1036jdk7u21.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | docker rm `docker ps -a | grep weblogic | awk '{print $1}'` -f
3 | docker rmi -f `docker images | grep 'weblogic' | awk '{print $3}'`
4 | docker build --build-arg JDK_PKG=jdk-7u21-linux-x64.tar.gz --build-arg WEBLOGIC_JAR=wls1036_generic.jar -t weblogic1036jdk7u21 .
5 | docker run -d -p 7001:7001 -p 8453:8453 -p 5556:5556 --name weblogic1036jdk7u21 weblogic1036jdk7u21
6 | rm -rf ./middleware
7 | mkdir ./middleware
8 | docker cp weblogic1036jdk7u21:/u01/app/oracle/middleware/modules ./middleware/
9 | docker cp weblogic1036jdk7u21:/u01/app/oracle/middleware/wlserver ./middleware/
--------------------------------------------------------------------------------
/run_weblogic1036jdk8u121.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | docker rm `docker ps -a | grep weblogic | awk '{print $1}'` -f
3 | docker rmi -f `docker images | grep 'weblogic' | awk '{print $3}'`
4 | docker build --build-arg JDK_PKG=jdk-8u121-linux-x64.tar.gz --build-arg WEBLOGIC_JAR=wls1036_generic.jar -t weblogic1036jdk8u121 .
5 | docker run -d -p 7001:7001 -p 8453:8453 -p 5556:5556 --name weblogic1036jdk8u121 weblogic1036jdk8u121
6 | rm -rf ./middleware
7 | mkdir ./middleware
8 | docker cp weblogic1036jdk8u121:/u01/app/oracle/middleware/modules ./middleware/
9 | docker cp weblogic1036jdk8u121:/u01/app/oracle/middleware/wlserver ./middleware/
--------------------------------------------------------------------------------
/scripts/create_domain12c.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | export MW_HOME=/u01/app/oracle/middleware
4 | export WLS_HOME=$MW_HOME/wlserver
5 | export WL_HOME=$WLS_HOME
6 | export JAVA_HOME=/java
7 | export PATH=$JAVA_HOME/bin:$PATH
8 |
9 |
10 | echo "==========开始创建Domain=========="
11 | echo '#!/usr/bin/python
12 | import os, sys
13 | readTemplate("/u01/app/oracle/middleware/wlserver/common/templates/wls/wls.jar")
14 | cd("/Security/base_domain/User/weblogic")
15 | cmo.setPassword("qaxateam01")
16 | cd("/Server/AdminServer")
17 | cmo.setName("AdminServer")
18 | cmo.setListenPort(7001)
19 | cmo.setListenAddress("0.0.0.0")
20 | writeDomain("/u01/app/oracle//Domains/ExampleSilentWTDomain")
21 | closeTemplate()
22 | exit()' > create_domain_7001.py
23 |
24 | . $WLS_HOME/server/bin/setWLSEnv.sh
25 | java weblogic.WLST create_domain_7001.py
26 | echo "==========Domain创建完成=========="
27 |
28 |
29 |
--------------------------------------------------------------------------------
/scripts/create_domain11g.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | export MW_HOME=/u01/app/oracle/middleware
4 | export WLS_HOME=$MW_HOME/wlserver
5 | export WL_HOME=$WLS_HOME
6 | export JAVA_HOME=/java
7 | export PATH=$JAVA_HOME/bin:$PATH
8 |
9 |
10 | echo "==========开始创建Domain=========="
11 | echo '#!/usr/bin/python
12 | import os, sys
13 | readTemplate("/u01/app/oracle/middleware/wlserver/common/templates/domains/wls.jar")
14 | cd("/Security/base_domain/User/weblogic")
15 | cmo.setPassword("qaxateam01")
16 | cd("/Server/AdminServer")
17 | cmo.setName("AdminServer")
18 | cmo.setListenPort(7001)
19 | cmo.setListenAddress("0.0.0.0")
20 | writeDomain("/u01/app/oracle//Domains/ExampleSilentWTDomain")
21 | closeTemplate()
22 | exit()' > create_domain_7001.py
23 |
24 | . $WLS_HOME/server/bin/setWLSEnv.sh
25 | java weblogic.WLST create_domain_7001.py
26 | echo "==========Domain创建完成=========="
27 |
28 |
29 |
--------------------------------------------------------------------------------
/scripts/weblogic_install12c.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | echo "==========开始安装Weblogic Weblogic安装包:"$WEBLOGIC_JAR"=========="
3 | v_software=$WEBLOGIC_JAR
4 |
5 | #install Weblogic
6 | mkdir -p /u01/app/oracle/middleware
7 | mkdir -p /u01/app/oracle/config/domains
8 | mkdir -p /u01/app/oracle/config/applications
9 | mkdir -p /u01/software/
10 | chown -R oracle:oinstall /u01
11 | chmod -R 775 /u01/
12 |
13 | export MW_HOME=/u01/app/oracle/middleware
14 | export WLS_HOME=$MW_HOME/wlserver
15 | export WL_HOME=$WLS_HOME
16 | export JAVA_HOME=/java
17 | export PATH=$JAVA_HOME/bin:$PATH
18 |
19 | echo '[ENGINE]
20 | Response File Version=1.0.0.0.0
21 | [GENERIC]
22 | ORACLE_HOME=/u01/app/oracle/middleware
23 | INSTALL_TYPE=Complete with Examples
24 | MYORACLESUPPORT_USERNAME=example@example.com
25 | MYORACLESUPPORT_PASSWORD=examplepassword01
26 | DECLINE_SECURITY_UPDATES=true
27 | SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
28 | PROXY_HOST=
29 | PROXY_PORT=
30 | PROXY_USER=
31 | PROXY_PWD=
32 | COLLECTOR_SUPPORTHUB_URL=' > /u01/software/wls.rsp
33 |
34 | echo 'inventory_loc=/u01/app/oraInventory
35 | inst_group=oinstall' > /u01/software/oraInst.loc
36 |
37 | su - oracle -c "$JAVA_HOME/bin/java -Xmx1024m -jar /$v_software -silent -responseFile /u01/software/wls.rsp -invPtrLoc /u01/software/oraInst.loc"
38 |
39 | . $WLS_HOME/server/bin/setWLSEnv.sh
40 | echo "==========Weblogic安装完成 请查看版本输出=========="
41 | java weblogic.version
42 |
43 |
--------------------------------------------------------------------------------
/scripts/weblogic_install11g.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | echo "==========开始安装Weblogic Weblogic安装包:"$WEBLOGIC_JAR"=========="
3 | v_software=$WEBLOGIC_JAR
4 |
5 | #install Weblogic
6 | mkdir -p /u01/app/oracle/middleware
7 | mkdir -p /u01/app/oracle/config/domains
8 | mkdir -p /u01/app/oracle/config/applications
9 | chown -R oracle:oinstall /u01
10 | chmod -R 775 /u01/
11 |
12 | export MW_HOME=/u01/app/oracle/middleware
13 | export WLS_HOME=$MW_HOME/wlserver
14 | export WL_HOME=$WLS_HOME
15 | # Set to the appropriate JAVA_HOME.
16 | export JAVA_HOME=/java
17 | export PATH=$JAVA_HOME/bin:$PATH
18 |
19 | echo '
20 |
21 |
22 |
23 |
24 |
26 |
27 |
28 |
29 |
30 |
31 | ' > silent.xml
32 |
33 | $JAVA_HOME/bin/java -Xmx1024m -jar $v_software -mode=silent -silent_xml=/silent.xml
34 |
35 | . $WLS_HOME/server/bin/setWLSEnv.sh
36 | echo "==========Weblogic安装完成 请查看版本输出=========="
37 | java weblogic.version
38 |
39 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | # 基础镜像
2 | FROM centos
3 | # 参数
4 | ARG JDK_PKG
5 | ARG WEBLOGIC_JAR
6 | # 解决libnsl包丢失的问题
7 | RUN yum -y install libnsl
8 |
9 | # 创建用户
10 | RUN groupadd -g 1000 oinstall && useradd -u 1100 -g oinstall oracle
11 | # 创建需要的文件夹和环境变量
12 | RUN mkdir -p /install && mkdir -p /scripts
13 | ENV JDK_PKG=$JDK_PKG
14 | ENV WEBLOGIC_JAR=$WEBLOGIC_JAR
15 |
16 | # 复制脚本
17 | COPY scripts/jdk_install.sh /scripts/jdk_install.sh
18 | COPY scripts/jdk_bin_install.sh /scripts/jdk_bin_install.sh
19 |
20 | COPY scripts/weblogic_install11g.sh /scripts/weblogic_install11g.sh
21 | COPY scripts/weblogic_install12c.sh /scripts/weblogic_install12c.sh
22 | COPY scripts/create_domain11g.sh /scripts/create_domain11g.sh
23 | COPY scripts/create_domain12c.sh /scripts/create_domain12c.sh
24 | COPY scripts/open_debug_mode.sh /scripts/open_debug_mode.sh
25 | COPY jdks/$JDK_PKG .
26 | COPY weblogics/$WEBLOGIC_JAR .
27 |
28 | # 判断jdk是包(bin/tar.gz)weblogic包(11g/12c)载入对应脚本
29 | RUN if [ $JDK_PKG == *.bin ] ; then echo ****载入JDK bin安装脚本**** && cp /scripts/jdk_bin_install.sh /scripts/jdk_install.sh ; else echo ****载入JDK tar.gz安装脚本**** ; fi
30 | RUN if [ $WEBLOGIC_JAR == *1036* ] ; then echo ****载入11g安装脚本**** && cp /scripts/weblogic_install11g.sh /scripts/weblogic_install.sh && cp /scripts/create_domain11g.sh /scripts/create_domain.sh ; else echo ****载入12c安装脚本**** && cp /scripts/weblogic_install12c.sh /scripts/weblogic_install.sh && cp /scripts/create_domain12c.sh /scripts/create_domain.sh ; fi
31 |
32 | # 脚本设置权限及运行
33 | RUN chmod +x /scripts/jdk_install.sh
34 | RUN chmod +x /scripts/weblogic_install.sh
35 | RUN chmod +x /scripts/create_domain.sh
36 | RUN chmod +x /scripts/open_debug_mode.sh
37 | # 安装JDK
38 | RUN /scripts/jdk_install.sh
39 | # 安装weblogic
40 | RUN /scripts/weblogic_install.sh
41 | # 创建Weblogic Domain
42 | RUN /scripts/create_domain.sh
43 | # 打开Debug模式
44 | RUN /scripts/open_debug_mode.sh
45 | # 启动 Weblogic Server
46 | # CMD ["tail","-f","/dev/null"]
47 | CMD ["/u01/app/oracle/Domains/ExampleSilentWTDomain/bin/startWebLogic.sh"]
48 | EXPOSE 7001
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Weblogic环境搭建工具
2 |
3 | Weblogic环境搭建过程很繁琐,很多时候需要测试各种Weblogic版本和各种JDK版本的排列组合,因此我写了一个脚本级别的Weblogic环境搭建工具,用于安全研究时节省大家搭建环境的时间。
4 | 此环境搭建工具使用Docker和shell脚本,因此需要本机安装Docker才可以使用。经测试漏洞搭建工具可以在3分钟内构建出任意JDK版本搭配任意Weblogic版本,包含一个可远程调试的已启动的Weblogic Server域环境。
5 |
6 | ## 需求
7 | - 自动化安装任意版本JDK
8 | - 自动化安装任意版本Weblogic Server
9 | - 自动化创建域
10 | - 自动打开远程调试
11 | - 自动启动一个Weblogic Server域
12 |
13 | ## 流程
14 |
15 | 
16 |
17 | ## 使用方法:
18 |
19 | ### 下载JDK安装包和Weblogic安装包
20 |
21 | 下载相应的JDK版本和Weblogic安装包,将JDK安装包放到`jdks/`目录下,将Weblogic安装包放到`weblogics/`目录下。**此步骤必须手动操作,否则无法进行后续步骤。**
22 |
23 | 
24 |
25 | 
26 |
27 | JDK安装包下载地址:https://www.oracle.com/technetwork/java/javase/archive-139210.html
28 | Weblogic安装包下载地址:https://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-for-dev-1703574.html
29 |
30 | ### 构建镜像并运行
31 |
32 | 回到根目录,执行Docker构建镜像命令:
33 |
34 | ```plain text
35 | docker build --build-arg JDK_PKG= --build-arg WEBLOGIC_JAR= -t .
36 | ```
37 | 镜像构建完成后,执行以下命令运行:
38 | ```plain text
39 | docker run -d -p 7001:7001 -p 8453:8453 -p 5556:5556 --name
40 | ```
41 |
42 | 以Weblogic12.1.3配JDK 7u21为例,构建镜像命令如下:
43 | ```plain text
44 | docker build --build-arg JDK_PKG=jdk-7u21-linux-x64.tar.gz --build-arg WEBLOGIC_JAR=fmw_12.1.3.0.0_wls.jar -t weblogic12013jdk7u21 .
45 | ```
46 | 镜像构建完成后,执行以下命令运行:
47 | ```plain text
48 | docker run -d -p 7001:7001 -p 8453:8453 -p 5556:5556 --name weblogic12013jdk7u21 weblogic12013jdk7u21
49 | ```
50 |
51 | 运行后可访问`http://localhost:7001/console/login/LoginForm.jsp`登录到Weblogic Server管理控制台,默认用户名为`weblogic`,默认密码为`qaxateam01`
52 |
53 | ### 远程调试
54 |
55 | 如需远程调试,需使用`docker cp`将远程调试需要的目录从已运行的容器复制到本机。
56 |
57 | 也可以使用`run_weblogic1036jdk6u25.sh`、`run_weblogic12013jdk7u21sh`、`run_weblogic12021jdk8u121.sh`这三个脚本进行快速环境搭建并复制远程调试需要用到的目录。执行前请赋予它们相应的可执行权限。
58 |
59 | ### 示例
60 | 以JDK 7u21配合Weblogic 12.1.3为例,自动搭建效果如下:
61 | 
62 |
63 | ## 兼容性测试
64 | 已测试了如下环境搭配的兼容性:
65 |
66 | - 测试系统:macOS Mojave 10.14.5
67 | - Docker版本:Docker 18.09.2
68 |
69 | - [x] Weblogic 10.3.6 With JDK 6u25
70 | - [x] Weblogic 10.3.6 With JDK 7u21
71 | - [x] Weblogic 10.3.6 With JDK 8u121
72 | - [x] Weblogic 12.1.3 With JDK 7u21
73 | - [x] Weblogic 12.1.3 With JDK 8u121
74 | - [x] Weblogic 12.2.1 With JDK 8u121
75 |
76 | ## 已知问题
77 |
78 | - 由于时间关系,我没有对更多Weblogic版本和更多的JDK版本搭配做测试,请自行测试
79 | - 请时刻关注输出内容,如出现异常请自行修改对应脚本
80 |
81 | 欢迎大家一起为此自动化环境搭建工具贡献力量。
82 |
--------------------------------------------------------------------------------