├── 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 | ![](./images/2019-08-01-21-05-32.png) 16 | 17 | ## 使用方法: 18 | 19 | ### 下载JDK安装包和Weblogic安装包 20 | 21 | 下载相应的JDK版本和Weblogic安装包,将JDK安装包放到`jdks/`目录下,将Weblogic安装包放到`weblogics/`目录下。**此步骤必须手动操作,否则无法进行后续步骤。** 22 | 23 | ![](./images/2019-08-01-16-34-18.png) 24 | 25 | ![](./images/2019-08-01-16-35-18.png) 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 | ![](./images/weblogic_env.gif) 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 | --------------------------------------------------------------------------------