但行好事
莫论前程❤

Weblogic学习笔记–安装部署

访问地址:

http://127.0.0.1:7001/console/login/LoginForm.jsp

一、程序安装

先安装JDK jrockit-jdk1.6.0_26-R28.1.4-4.0.1-windows-x64.exe

  1. 打开cmd
java -jar wls1036_generic.jar

img

  • 如果报错
PS D:\企业年金\software\weblogic11g for win x64> java -jar .\wls1036_generic.jar
Exception in thread "winRegistry" java.lang.UnsatisfiedLinkError: Expecting an absolute path of the library: jni_winx64
        at java.lang.Runtime.load0(Unknown Source)
        at java.lang.System.load(Unknown Source)
        at com.bea.plateng.common.jni.JNIUtil.loadLibrary(JNIUtil.java:255)
        at com.bea.plateng.common.jni.Win32Registry.<clinit>(Win32Registry.java:20)
        at com.bea.plateng.common.jni.WinRegistryHelper.getRegistry(WinRegistryHelper.java:35)
        at com.bea.plateng.wizard.installer.silent.tasks.WinRegistryTask.execute(WinRegistryTask.java:262)
        at com.bea.plateng.wizard.installer.silent.tasks.WinRegistryTask.run(WinRegistryTask.java:251)
        at java.lang.Thread.run(Unknown Source)
  • 原因:jar包所在路径包含中文。
  1. 点击下一步:

img

  1. 指定bea安装目录,点击下一步

img

  1. 去掉“我希望通过My Oracle Support接收安全更新”前的勾,出现提示,选择YES

img

  1. 安装类型,默认“典型”,下一步

img

  1. 选中两种JDK,下一步

img

  1. 下一步

img

  1. 默认,下一步

img

  1. 默认,下一步

img

  1. 默认,下一步

img

  1. 开始安装

img

  1. 安装完成,去掉“运行Quickstart”前的勾

img

二、创建集群域

  1. 管理节点的机器上,开始菜单找到weblogic配置向导 Configuration Wizard,点击运行

img

  1. 选择“创建新的WebLogic域”

img

  1. 默认,下一步

img

  1. 设置创建集群的域名和路径,下一步

img

  1. 设置控制台用户名密码 Weblogic01@yy

img

  1. 选择“生产模式”,JDK选择“JRockit SDK 1.6.0.17”

    Sun的JDK兼容性比较好,JRockit SDK 性能更好。

    对于核三程序,一般使用的是Jrockit。个别应用需要使用SUN JDK,请询问开发人员。

img

  1. 勾选“管理服务器”、“受管服务器、群集和计算机”

img

  1. 配置管理节点名字、监听地址和端口

img

  1. 添加受管节点s1,s2和代理节点proxy,以及节点监听地址和端口

    此处例子为两台机器组建的两节点集群,集群分布如下

节点名称监听地址和端口节点类型
AdminServer192.168.5.230:7001管理节点
s1192.168.5.230:8001受管节点
s2192.168.5.231:8001受管节点
proxy192.168.5.231:8080代理节点

img

  1. 配置集群,设置集群名称,其他默认即可

img

  1. 将s1,s2节点添加到右边集群c1中

img

  1. 创建HTTP代理应用程序,勾选“创建HTTP代理”,代理服务器选择“proxy”

img

  1. 不需修改,下一步

img

  1. 创建集群域

img

  1. 创建完成

img

三、修改域配置文件中的内存和字符集参数

1.修改集群域默认的内存分配

在C:\bea\user_projects\domains\base_domain\bin目录下,找到setDomainEnv.cmd,用文本文件打开文件,修改下文内容:

if "%JAVA_VENDOR%"=="Sun" (
    set WLS_MEM_ARGS_64BIT=-Xms256m -Xmx512m
    set WLS_MEM_ARGS_32BIT=-Xms256m -Xmx512m
) else (
    set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m
    set WLS_MEM_ARGS_32BIT=-Xms128m -Xmx128m
)

将其替换为

if "%JAVA_VENDOR%"=="Sun" (
    set WLS_MEM_ARGS_64BIT=-Xms256m -Xmx512m
    set WLS_MEM_ARGS_32BIT=-Xms256m -Xmx512m
) else (
        if "%SERVER_NAME%"=="AdminServer" (
            set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m
            set WLS_MEM_ARGS_32BIT=-Xms512m -Xmx512m
        ) else (
                if "%SERVER_NAME%"=="proxy" (
                    set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m
                    set WLS_MEM_ARGS_32BIT=-Xms1000m -Xmx1000m
                ) else (
                    set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m
                    set WLS_MEM_ARGS_32BIT=-Xms1300m -Xmx1300m
                )
        )
)

上面的配置中,将AdminServer内存设置为512M,将代理节点proxy设置为1000M,将其他节点即受管节点配置为1300M

如果管理节点名不为AdminServer或者代理节点名不为proxy,则注意修改上文中对应节点名为真实节点名称

如果weblogic选择使用了SUN的JDK,则需要继续找到如下内容并如修改内存值

set MEM_PERM_SIZE_64BIT=-XX:PermSize=128m
set MEM_PERM_SIZE_32BIT=-XX:PermSize=128m
set MEM_MAX_PERM_SIZE_64BIT=-XX:MaxPermSize=384m
set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=384m

如果使用ORACLE 的JROCKIT JDK,则用不到以上参数,不需要修改PermSize和MaxPermSize的值。

-Xms为分配内存最小值,-Xmx为分配内存最大值,对于受管节点建议两值同样大小,以获得更好的性能。

根据每台服务器内存配置情况确定服务器上的weblogic实例个数

服务器内存数量与节点分配对应建议列表

单台服务器内存建议每台服务器上weblogic受管实例个数(非代理、非管理)服务器上的代理节点或管理节点
8G2~31个代理节点或1个管理节点
16G考虑使用64位weblogic\

2. 配置域的全局字符集参数

找到集群中每台机器的\user_projects\domains\base_domain\bin下的setDomainEnv.cmd文件。编辑该文件,找到下文位置,添加-Dfile.encoding=GBK

if NOT "%WEBLOGIC_EXTENSION_DIRS%"=="" (
    set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.ext.dirs=%WEBLOGIC_EXTENSION_DIRS%
)

set JAVA_OPTIONS=%JAVA_OPTIONS% -Dfile.encoding=GBK

@REM SET THE CLASSPATH

if NOT "%WLP_POST_CLASSPATH%"=="" (
    if NOT "%CLASSPATH%"=="" (
        set CLASSPATH=%WLP_POST_CLASSPATH%;%CLASSPATH%
    ) else (
        set CLASSPATH=%WLP_POST_CLASSPATH%
    )
)

此处定义全局的虚拟机字符集为GBK,即每个启动的weblogic节点均使用GBK为其字符集(包括管理节点、受管节点和代理节点)

节点启动后,检查找到节点启动日志文件,比如server1,

\user_projects\domains\base_domain\servers\server1.log

找到最新的启动日志,可以看到

awt.toolkit = sun.awt.windows.WToolkit
file.encoding = GBK
file.encoding.pkg = sun.io
file.separator = \
java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment
java.awt.printerjob = sun.awt.windows.WPrinterJob
java.class.path = E:\WEBLOG~1\patch_wls1033\profiles\default\sys_manifest_classpath\weblogic_patch.jar;E:\WEBLOG~1\patch_ocp353\profiles\default\sys_manifest_classpath\weblogic_patch.jar;E:\WEBLOG~1\JROCKI~1.0-6\lib\tools.jar;E:\WEBLOG~1\WLSERV~1.3\server\lib\weblogic_sp.jar;E:\WEBLOG~1\WLSERV~1.3\server\lib\weblogic.jar;E:\WEBLOG~1\modules\features\weblogic.server.modules_10.3.3.0.jar;E:\WEBLOG~1\WLSERV~1.3\server\lib\webservices.jar;E:\WEBLOG~1\modules\ORGAPA~1.1/lib/ant-all.jar;E:\WEBLOG~1\modules\NETSFA~1.0_1/lib/ant-contrib.jar;E:\WEBLOG~1\WLSERV~1.3\common\derby\lib\derbyclient.jar;E:\WEBLOG~1\WLSERV~1.3\server\lib\xqrl.jar

字符集已经改为GBK

3. 复制domain

复制管理节点weblogic安装目录下的user_projects目录到集群中其他机器的相同目录下。

四、创建集群启动脚本

1. 创建管理节点启动脚本

在C:\bea\user_projects\domains\base_domain\bin目录下,找到startWebLogic.cmd文件,该文件是管理节点的启动批处理程序,创建到桌面的启动快捷方式。

2. 创建受管节点启动脚本

在C:\bea\user_projects\domains\base_domain\bin目录下,找到startManagedWebLogic.cmd文件,该文件为受管文件启动批处理程序,不过该批处理不能直接使用,需要首指定节点名。

方法如下:

​ 复制startManagedWebLogic.cmd并改名为starts1.cmd,通过文本文件打开并找到如下内容

@REM  Set SERVER_NAME to the name of the server you wish to start up.
set DOMAIN_NAME=base_domain
set ADMIN_URL=http://YL-PC:7001
@REM  Set WLS_USER equal to your system username and WLS_PW equal  

设置SERVER_NAME为要启动的节点名

@REM  Set SERVER_NAME to the name of the server you wish to start up.
set DOMAIN_NAME=base_domain
set ADMIN_URL=http://YL-PC:7001
set SERVER_NAME=server1
set HEAP_SIZE="-Xms4096m -Xmx4096m -XX:MaxPermSize=512m -Dweblogic.rjvm.enableprotocolswitch=true"
set USER_JAVA_OPTIONS="-Dfile.encoding=GBK"
# DOMAIN_HOME="D:\Oracle\Middleware\user_projects\domains\base_domain"
@REM  Set WLS_USER equal to your system username and WLS_PW equal  

​ 复制修改后的starts1.cmd并分别改名为starts2.cmd、starts3.cmd、proxy.cmd ……

然后创建到桌面的快捷方式。

​ 注意,只需要创建本机存在节点的启动脚本即可,代理节点同其他受管节点创建启动脚本方法一样。

3. 创建节点启动密码文件

第一次通过启动快捷方式时需要手动输入登陆口令,可以通过创建默认口令文件避免每次启动创建口令文件。

​ 域目录C:\bea\user_projects\domains\base_domain下有个servers文件夹,找到其下以每个节点命名的文件夹,例如AdminServer文件夹,在里边建立security文件夹,然后在security文件夹下建立boot.properties文件,通过文本文件编辑该文件,并写入weblogic账户口令,假设weblogic启动用户名/口令为 weblogic/weblogic123,则内容为:

bash
username=weblogic
password=weblogic123

将创建好的security目录连同boot.properties文件拷贝到所有节点的文件夹下,以后每次启动节点时即不需要再输入用户名密码。

注意:

​ 必须在启动过一次节点后(无论启动成功与否),才会在servers目录下生产以该节点命名的文件夹。

五、修改并重新发布代理程序

新版核三程序使用时,需要在代理程序包中添加字符集设置,不然可能会出现乱码,而默认生产的代理程序包并没有指定字符集,所以需要修改默认代理程序,再重新发布一遍。

1.卸载原默认代理程序

<1>点击左侧“部署”按钮,并选中左上角“锁定并编辑”,勾选右侧“OracleProxy4_c1_proxy”代理程序,点击“删除”按钮

img

<2>删除成功后,点击左上角“激活更改”

img

2.修改代理程序

找到管理节点所在机器的

C:\bea\user_projects\domains\base_domain\apps\OracleProxy4_c1_proxy\WEB-INF下的

web.xml文件,用文本编辑器打开,找到如下内容

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>HttpClusterServlet</servlet-name>
<servlet-class>weblogic.servlet.proxy.HttpClusterServlet</servlet-class>
<init-param>
<param-name>WebLogicCluster</param-name>
<param-value>10.5.10.56:8001|10.5.10.57:8001</param-value>
</init-param>
<init-param>
<param-name>Debug</param-name>
<param-value>OFF</param-value>
</init-param>
<init-param>
<param-name>HungServerRecoverSecs</param-name>
<param-value>3000</param-value>
</init-param>
<init-param>
<param-name>Idempotent</param-name>
<param-value>OFF</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.jpd</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.jcx</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.dtf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
<context-param>
<param-name>weblogic.httpd.inputCharset./*</param-name>
<param-value>GBK</param-value>
</context-param>
</web-app>

添加红色内容如下:

<init-param>
<param-name>WebLogicCluster</param-name>
<param-value>10.5.10.56:8001|10.5.10.57:8001</param-value>
</init-param>

添加蓝色内容如下:

<init-param>
<param-name>Debug</param-name>
<param-value>OFF</param-value>
</init-param>
<init-param>
<param-name>HungServerRecoverSecs</param-name>
<param-value>3000</param-value>
</init-param>
<init-param>
<param-name>Idempotent</param-name>
<param-value>OFF</param-value>
</init-param>

<context-param>
<param-name>weblogic.httpd.inputCharset./*</param-name>
<param-value>GBK</param-value>
</context-param>

说明:

​ 上文中红字部分为集群中受管节点的IP地址和端口,所有需要代理进行分发的节点的IP地址和端口均需要填写,不同节点间用 | 进行分隔。以后如果集群中节点的数量或者IP和端口有改变,均需要更新该web.xml文件中红字部分,并且重新发布代理程序。

​ 上文中蓝字部分为需要增加的内容,将蓝字部分复制,粘贴到相同位置即可

蓝字部分代码说明:

以下代码的作用是关闭proxy调试功能(UNIX平台下必须添加,windows平台下可以不加)

<init-param>
<param-name>Debug</param-name>
<param-value>OFF</param-value>
</init-param>

如果不关闭Debug功能,会在proxy节点所在的/tmp目录下,生成一个wlproxy.log文件,且不断增大,最后会将/tmp目录占满,导致系统运行缓慢。

增加以下两个参数用以解决业务重复执行的问题,

<init-param>
<param-name>HungServerRecoverSecs</param-name>
<param-value>3000</param-value>
</init-param>
<init-param>
<param-name>Idempotent</param-name>
<param-value>OFF</param-value>
</init-param>

案例:

地纬项目组在一次对应用程序监测的过程中发现所记的医疗帐户有重复记录的情况。问题出在,当请求通过代理服务器发到一个应用服务器上进行执时,因为没有及时得到响应而这个请求以被发到了cluster中的另外的应用服务器上执行,而原来发送的那个请求并没有停止执行,造成了重复记帐的问题。

​ 以下代码的作用为修改代理程序所使用的字符集为GBK

<context-param>
<param-name>weblogic.httpd.inputCharset./*</param-name>
<param-value>GBK</param-value>
</context-param>

具体应该使用何种字符集,根据发布的程序使用的字符集而定,目前我们的程序(核二、核三、劳动力、农保、网上申报)均使用GBK字符集。

对于核二程序,由于使用CS架构,字符集在客户端程序中指定,代理程序中可以不加该参数,但是对于其他BS架构的程序,都需要指定字符集为GBK

3.重新发布代理程序

<1>点击左侧“部署”按钮,点击左上角“锁定并编辑”,点击右侧“安装”按钮

img

<2>找到代理包OracleProxy4_c1_proxy位置,点击下一步

img

<3>默认,下一步

img

<4>发布到proxy节点,下一步

img

<5>点击完成

<6>点击左上角“激活更改”

<7>选中刚才发布的程序,点击“启动”按钮,选择“为所有请求提供服务”

<8>选择“是”,完成程序启动

六、参数调整

在IE浏览器输入 http://192.168.5.230:7001/console登录控制台

1. 去除集群的前端主机地址和前端主机端口

登录weblogic控制台,依次选择 环境——集群——\<cluster_name>

img

配置——HTTP

img

删掉“前端主机”和“前端HTTP端口”的值,最后如下图所示

前端主机 值为空

前端HTTP端口 值为0

前端HTTPS端口 值为0

img

然后保存,激活更改,重启集群生效

上述参数值是通过weblogic程序自动生成代理程序时默认配置的,如果不将其清除,有可能发生客户端无法连接到前置机程序的情况。

例如,客户端通过以下地址(http://10.5.10.56:9001/csi)访问CSI农保程序时,无法访问,但是使用地址最后加以字符 / (http://10.5.10.56:9001/csi/)却能够访问程序。

此时去掉上述3个参数的数值即可解决该问题。

2. 修改节点“最大消息大小”参数

点击左上角锁定并编辑,选择base_domain — 服务器, 再点击右边的服务器s1

img

选择“协议”标签,修改“完成消息超时”为180

修改“最大消息大小”为80000000,完成后点击左上角“激活更改”

默认的10000000,在核三程序运行时控制台会报大量超过信息超过10000000的错误

img

3. 修改阻塞线程超时时间

img

修改“粘滞线程最长时间”为3600

修改“粘滞线程计时器间隔”为1800

img

粘滞线程最长时间 指当一个线程连续运行多久系统认定其为粘滞线程

粘滞线程计时器间隔 指每隔多少时间weblogic检查一遍线程中存在的粘滞线程

<2> 再点击“配置”——“超载”菜单

img

同样修改“最长线程粘滞时间”为3600

七、调整weblogic日志保存策略

weblogic的日志有两种:access(访问)日志和server(运行)日志。

除此之外,还有log4j日志、nohup日志等日志不受控制,但是相对而言较少。

当日志过多占据所有wls的目录空间的时候,将导致:

  1. server无法启动

  2. 运行缓慢

所以按照本文控制access日志和server日志是一个减少问题发生的好办法。当然因为log4j日志等的存在也不能说是按照本文修改了weblogic就一劳永逸了,现场人员的监控和检查永远是不可或缺的。

  • 登陆控制台

  • 调整server日志和access日志

设置保留的server文件数量,这里推荐2000个,每个日志默认大小0.5M,这样每个server占用1G空间。

img

设置保留的server的access文件数量,这里推荐1000个,每个日志默认大小0.5M,这样每个server的access日志占用0.5G空间。

img

  • 重复配置其他server,并激活更改

八、集群节点调整方法

1.修改节点IP地址

方法一:如果管理节点所在主机IP地址尚未修改,可在console控制台中修改。

修改后激活更改,重启节点即可

img

方法二:如果管理节点所在主机IP地址已经被改动了,那么可手动修改。

<1> 修改管理节点C:\bea\user_projects\domains\base_domain\config\config.xml中的地址(建议用Ctrl+H的方式直接替换IP)。

<2> 然后修改由C:\bea\user_projects\domains\base_domain\bin\startManagedWeblogic.cmd拷贝创建的节点的启动脚本,找到如下内容:

@REM  Set SERVER_NAME to the name of the server you wish to start up.
set DOMAIN_NAME=base_domain
set ADMIN_URL=http://10.5.10.56:7001
@REM  Set WLS_USER equal to your system username and WLS_PW equal

修改红字部分ADMIN_URL为修改后的管理节点IP:端口即可(每个节点的启动脚本均需要手工修改),如管理节点IP没变,则不需要修改。

<3> 修改管理节点代理程序包的web.xml的WebLogicCluster中相关节点的IP,如:

<param-name>WebLogicCluster</param-name>
<param-value>10.113.65.238:8002|10.113.65.238:8001</param-value>
</init-param>

<4> 修改完毕后重启集群,重新发布weblogic集群的代理应用,并用每个修改过的ManagedServer的业务地址和ProxyServer的业务地址分别登陆一下看是否能做业务。

2.为集群添加节点

方法一:

<1> 登陆weblogic console控制台,展开服务器一栏

<2> 点击“锁定并编辑”,然后点击“新建”按钮,创建受管节点

img

设置节点名称、监听地址、监听端口、属于哪个集群,然后点击下一步,完成节点增加。

<3> 创建启动节点启动脚本

<4> 通过新创建的启动脚本启动新节点,验证连接新节点的监听端口是否能正常做业务。

方法二:

<1> 修改管理节点C:\bea\user_projects\domains\base_domain\apps\OracleProxy4_

c1_proxy\WEB-INF的代理程序web.xml的集群地址

<2> 修改管理节点C:\bea\user_projects\domains\base_domain\config下的config.xml添加server名。

<server>
    <name>s3</name>
    <listen-port>8003</listen-port>
    <cluster>c1</cluster>
    <listen-address>10.113.65.121</listen-address>
    <jta-migratable-target>
      <name>s3</name>
      <user-preferred-server>s3</user-preferred-server>
      <cluster>c1</cluster>
    </jta-migratable-target>
  </server>

<3> 创建启动节点的cmd脚本

<4> 修改完毕后需要重启集群,验证连接新节点的监听端口是否能正常做业务。

注意:

<1> 建议使用方法一进行修改,方法二修改域配置文件,修改错误有可能导致集群无法启动。

<2> 所有修改config.xml域配置文件的操作前,都应该首先备份config.xml文件。

<3> 对域配置文件config.xml文件和代理配置文件web.xml的所有修改都只需要在管理节点所在机器上的相应文件做修改即可。

3.关于“文件名、卷标或目录语法错误”

目前发现在windows2008上,成员节点所在的机器在启动时会主动与主节点(含AdminServer)机器的C:\bea\user_projects\domains\base_domain\config目录【以及他的所有子目录】做完全同步,即成员节点在启动时,会主动下载主节点主机上有而自己没有的文件,如果主节点多出来的这些文件有中文名字的,下载时就会报错。

因此在调整节点成员时,如果想备份主节点的config.xml,建议备份成config.xml.bak不要备份成config-副本.xml

常见报错解决方案:

  • 双击启动脚本(闪退)
    此时应利用cmd窗口去执行命令,这样可以看到输出日志:
    。/startWeblogic.cmd

  • 启动weblogic服务时,报此时不应有“1.6(1.7)jdk”
    原因:
    因为JDK的路径不可以带括号。
    安装WebLogic的时候需要注意:JDK安装路径不能带有空格、括号、中文的路径和特殊字符。我是64位系统,当时选择JDK的路径是D:\Program Files (x86)\Java\jdk1.6.0_22,所以出现了问题。

解决方法:在不重装WebLogic的情况下,
1、删除你所创建的域base_domain。本人的路径是D:\Oracle\Middleware\user_projects\domains下面的base_domain

2、(如果没有则忽略)删除开始程序–>Oracle WebLogic–>User Projects–>你自己的域名。本人的是base_domain;如下图
img

3、打开 开始程序–>Oracle WebLogic–>QuickStart
会弹出以下对话框,重新创建域。
img

4、选择第一项重新创建域。之后选择JDK时,要不选择WebLogic默认的JDK,要不选择你本机安装好jdk。前提是你的jdk安装路径必须不能带有空格、括号、中文的路径和特殊字符。如果你是64位系统的,像我那样的jdk安装路径,你就copy一份jdk放到其它的盘里面,当然环境变量也要跟着改。

5、启动WebLogic服务就可以正常使用了。

赞(0) 打赏
未经允许不得转载:刘鹏博客 » Weblogic学习笔记–安装部署
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏