linux+Weblogic12c+jenkins2.x+SVN 搭建自动部署服务器

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安装结束!

 

 

  1. Jenkins(linux)安装
    1. 准备工作
      1. 简介

Jenkins,之前叫做Hudson,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,包括:

1、持续的软件版本发布/测试项目。

2、监控一些定时调用执行的工作。

通俗的说  jenkins 可以帮助我们编译发布代码,比如我们提交到SVN后,要发布运行,就可以用过jenkins进行编译运行。

在没使用jenkins之前,我们发布版本的时候 都是手动拷贝包,启动服务器来进行发布的,但是有了jenkins之后,只要点一下按钮,它就会把你完成发布的操作。是不是很棒。

jenkins提供了很好的日志输入以及运行过程的监控

同时jenkins还能控制 定时调用代码运行。

      1. 下载

Jenkins官网:https://jenkins.io/index.html

Jenkins资源地址(各个版本及插件):http://mirrors.jenkins.io

      1. 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

    1. 安装

访问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默认的操作用户,linuxjenkins默认使用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(名字自己喜欢就好)

https://i-blog.csdnimg.cn/blog_migrate/f9501922dd8903cc1b23e17e59c59bea.png

输入上述信息,设置管理员用户

https://i-blog.csdnimg.cn/blog_migrate/ea9546134382f3742fef17c3eaf0eca9.png

点击开始使用,可能会出现跳转空白页的情况(没有此处跳过)

 

出现跳转空白页解决如下:

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"/>

服务重启完成之后,重新访问即可。

安装到此结束!

 

 

    1. 离线插件安装

 

首先到前面提供的网址http://mirrors.jenkins.io/plugins//中下载自己需要的插件(eg: ant   subversion  weblogic-deployer-plugin等):

 

ant-->编译打包非Maven项目插件

subversion—>版本控制SVN所需插件

weblogic-deployer-plugin—>weblogic部署插件

 

安装插件时,有时会因为依赖缺失的问题无法安装成功。如何知道这件插件的依赖呢?你可以在插件上传界面如下

 

 

点击失败后面的-详细    可以查看当前插件所需要的依赖插件

然后你要把所有的依赖都下载下来(上面给出的网址)。然后下面介绍如何进行离线安装。

进入:系统管理->插件管理->高级

 

出现如下界面:

 

 

 

这时候我们是不是看到了中间有个上传插件的地方(其他地方我们的信息不一样可以不管)。

点击选择文件按钮,选中刚才我们下载的插件,注意每次只能选中一个文件,所以先选择依赖文件。然后点击上传按钮。这样依次就可以将所有的插件离线安装成功了!如下图所示:

 

例如     subversion插件(以及依赖插件):

 

安装上传顺序如下:

 

后面截图我就不一一演示了!

    1. apache-ant安装

这里是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是否生效

    1. jenkins基础配置
      1. 全局工具配置

系统管理->全局工具配置

最后别忘了保存!!!

 

注:maven安装类似

      1. 全局安全配置

系统管理->全局安全配置(根据需要设置

 

别忘了保存!!!

      1. 用户管理

系统管理->管理用户

 

      1. 系统设置

系统管理—>系统设置

 

配置项挺多  无关的默认就好

    1. 与weblogic集成配置
      1. 系统设置

在这之前,需要先在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>

      1. 非Maven项目任务创建

 

非maven项目选这个…….

 

 

创建的任务可在  jenkins首页我的视图中查看       点开任务  有个配置选项

源码管理:

 

 

项目构建:

 

 

构建后操作:

 

 

 

 

注:每步操作记得保存,不然不会生效

 

 

此项根据实际需要定制

Build periodically:定时构建

例如:0 4 * * *  (每天凌晨4点必须构建一次源码)

Poll SCM:根据SCM软件的版本号,定时检查源码变更。如果有更新,则checkout最新code,然后执行构建动作。

例如:*/10 * * * *  (每10分钟检查一次源码变化,如果有更新才build)

 

开始执行构建:  我的视图----选中任务

 

  1.  

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值