Java常用软件开发环境安装

目前所有的软件安装是在Centos环境下进行

1. 基础工具

  • telnet 工具安装
# 注意不用安装服务端,只需要安装客户端即可
yum install -y telnet.x86_64
  • screen 工具安装
# 用于开启活动窗口
yum install -y screen

2. 常用软件

2.1. jdk

  1. 将JDK文件上传至 /usr/local/java 目录下并解压
cd /usr/local/java && tar -xzvf jdk-8u144-linux-x64.tar.gz
  1. 配置环境变量(vim /etc/profile),文件末尾追加以下内容
export JAVA_HOME=/usr/local/java/jdk1.8.0_144
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=.:${JAVA_HOME}/bin:$PATH
  1. 使配置文件生效
source /etc/profile

2.2. redis

redis安装强烈建议修改默认端口、设置密码登录,有需要的话将127.0.0.1修改为本机局域网ip

2.2.1. 安装步骤

  1. 安装gcc依赖(非必须)
sudo yum install -y gcc
  1. 上传redis压缩包 redis-5.0.5.tar.gz/usr/local目录下并解压
cd /usr/local && tar -xzvf redis-5.0.5.tar.gz
  1. 进入redis解压目录下,执行编译
cd redis-5.0.5 && make
  1. 安装并指定安装目录
make install PREFIX=/usr/local/redis
  1. 从 redis 的源码目录中复制 redis.conf 到 redis 的安装目录
cp /usr/local/redis-5.0.5/redis.conf /usr/local/redis/bin/
  1. 修改 redis.conf 文件
# 配置为局域网ip以便于其他服务器可以访问
bind 局域网ip
# 修改为自定义端口
port 自定义端口
# 以守护线程的方式启动
daemonize yes
# 配置密码
requirepass 自定义密码
# 指定存放数据库文件的目录,默认是运行启动命令时所处的目录:./,强烈建议修改。没有数据盘的情况下可以配置为/var/lib/redis
dir /var/lib/redis
  1. 启动redis
/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf

2.2.2. 开机自启配置

  1. 添加开机启动服务
vim /lib/systemd/system/redis.service
  1. 添加以下内容
[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  1. 执行以下命令
# 重新加载systemd的配置文件
systemctl daemon-reload
# 加入开机启动项
systemctl enable redis.service
# 启动redis服务
systemctl start redis
# 查看redis服务
systemctl status redis

2.3. nginx

2.3.1. 安装步骤

  1. 安装环境依赖
yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel gd gd-devel zip unzip autoconf gcc gcc-c++ readline-devel
  1. 将ngixn压缩包 nginx-1.20.0.tar.gz 上传至 /usr/local 目录下并解压
cd /usr/local && tar -xzvf nginx-1.20.0.tar.gz
  1. 进入nginx解压后目录进行安装前的配置
# 将nginx安装到/usr/local/nginx目录下并启用相关模块(headers-more-nginx-module-0.34需要自行下载源码包)
cd /usr/local/nginx-1.20.0 && ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-http_ssl_module --with-stream --with-stream_ssl_module --with-http_image_filter_module --add-module=/usr/local/src/headers-more-nginx-module-0.34
  1. 检查是否有错误,没错误可往下执行编译安装操作
make && make install
  1. 完成后nginx已被安装到 /usr/local/nginx 目录下,启动nginx即可
/usr/local/nginx/sbin/nginx

2.3.2. 开机自启配置

  1. 添加开机启动服务
sudo vim /lib/systemd/system/nginx.service
  1. 添加以下内容
[Unit]
Description=nginx service
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  1. 执行以下命令
# 重新加载systemd的配置文件
sudo systemctl daemon-reload
# 加入开机启动项
sudo systemctl enable nginx.service
# 启动nginx
sudo systemctl start nginx.service
# 查看nginx运行状态
sudo systemctl status nginx.service
# 停止
sudo systemctl stop nginx.service

附:

  • nginx对上传文件的大小有限制,默认是1M,nginx.conf配置文件下的http模块里新增以下配置并重启:
    client_max_body_size 20M;
  • 自定义配置文件
    在conf目录下新建conf.d文件夹,在conf.d里新建自己的配置文件,最后在nginx.conf配置文件下的http模块里新增以下配置并重启:
    include conf.d/*.conf;

2.4. mysql

mysql安装完毕后,记得linux下修改 lower_case_table_names 为 1,忽略大小写,windows可不用;另外修改 sql_mode 配置参数,否则不能使用 group by 等语句

2.4.1. 安装步骤

  1. 下载yum源:
wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'
  1. 安装yum源
rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
  1. 查看有哪些版本的mysql
yum repolist all | grep mysql
  1. 安装
yum install -y mysql-community-server
  1. 查看状态
systemctl status mysqld
  1. 找到密码
grep 'temporary password' /var/log/mysqld.log
  1. 修改密码
alter user 'root'@'localhost' identified by 'cy7m0ypu8CpLFperzI45';
  1. 修改配置(vim /etc/my.cnf
# 根据需要可自行修改数据目录,默认是放在/var/lib/mysql
datadir=/mnt/dataDisk/mysql
character-set-server=utf8mb4
lower_case_table_names=1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

# 启用密码策略插件和连接控制插件(适合等保用)
plugin-load-add=validate_password.so,connection_control.so
#服务器在启动时加载插件,并防止在服务器运行时删除插件
#决定是否使用该插件(及强制/永久强制使用)
validate-password=FORCE_PLUS_PERMANENT
#validate-password=FORCE
connection-control = FORCE_PLUS_PERMANENT
#connection-control-failed-login-attempts = FORCE
connection_control_min_connection_delay = 60000
connection_control_max_connection_delay = 3600000
connection_control_failed_connections_threshold = 5
  1. 修改 3306 访问端口(非必须)

相关命令:

systemctl start mysqld
systemctl stop mysqld
systemctl restart mysqld
systemctl status mysqld

2.5. mongodb

mongodb安装完毕强烈建议开启密码登录验证

2.5.1. 安装步骤

  1. 创建mongodb的repo文件
sudo vim /etc/yum.repos.d/mongodb-org-4.4.repo
  1. 输入以下内容(版本可以指定最新版本)
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
  1. 安装
sudo yum install -y mongodb-org
  1. 修改配置文件(vim /etc/mongod.conf
systemLog:
  destination: file
  logAppend: true
  # 根据需要自行调整日志存储目录,默认是/var/log/mongodb/mongod.log
  path: /mnt/dataDisk/mongodb/log/mongod.log
  
# 根据需要自行调整数据存储目录,默认是/var/lib/mongo
storage:
  dbPath: /mnt/dataDisk/mongodb/data
  
net:
  port: 27017
  # 调整为局域网ip,默认是127.0.0.1,只能本机访问
  bindIp: 192.168.0.35

相关命令:

# mongodb相关操作
systemctl status mongod
systemctl start mongod
systemctl restart mongod

# 连接mongodb
mongo 192.168.0.100

2.5.2. 开启登录验证

mongodb安装完毕后默认是无密码登录,为安全起见,强烈建议开启

  1. 登录并进入 admin 数据库:use admin
  2. 创建一个管理员用户
db.createUser(
{
  user: "root",
  pwd: passwordPrompt(), // 或者填写明文密码 4.2+版本支持该方法
  roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
  1. shell中关闭实例:db.adminCommand( { shutdown: 1 } )
  2. 配置文件启用安全认证
security:
  authorization: enabled
  1. 重启服务:systemctl restart mongod
  2. 重新登录数据库
登录方式1:mongo 127.0.0.1:27017 --authenticationDatabase "admin" -u "root" -p

登录方式2:mongo -h 127.0.0.1 --port 27017 
进入shell后:
use admin
db.auth("root", passwordPrompt()) // 或者是明文密码
  1. 创建普通用户:(在控制台进行db.showCollections等命令如果没有权限,需要把role的readWrite权限调整为dbOwner)
use test
db.createUser(
  {
    user: "myTester",
    pwd: passwordPrompt(), // 或者明文密码
    roles: [ 
      { role: "readWrite", db: "test" },
      { role: "read", db: "reporting" } 
    ]
  }
)

2.6. Postgresql

2.6.1. 安装步骤

  1. 安装repository rpm
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
  1. 安装数据库服务
sudo yum install -y postgresql12-server
  1. 自定义数据存放路径(可忽略)
mkdir -p /home/pgdata/
chown -R postgres:postgres /home/pgdata
systemctl edit postgresql-12.service
# 添加以下内容:
[Service]
Environment=PGDATA=/home/pgdata/
# 检查内容
cat /etc/systemd/system/postgresql-12.service.d/override.conf
# 重新加载systemd的配置文件
systemctl daemon-reload
  1. 初始化以及开机启动
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
sudo systemctl enable postgresql-12
sudo systemctl start postgresql-12
  1. 修改 postgresql.conf 配置文件
# 调整为局域网ip
listen_addresses = '192.168.0.35'
# 根据需要自行调整最大连接数
max_connections = 100
  1. 修改 pg_hba.conf 配置文件
# 在ipv4下新建本地局域网访问
host    all             all             192.168.0.35/24        md5
  1. 修改postgres密码
ALTER USER postgres WITH ENCRYPTED PASSWORD 'postgres';
  1. 创建普通用户
create user crm WITH ENCRYPTED PASSWORD '123456';
  1. 创建业务数据库
create database crm owner crm;
  1. 赋予权限
grant all on database dbtest to crm;

相关命令:

# 密码更换周期通过设置角色的有效期来强制指定:
alter role crm valid until '2021-04-02';

# 查看表索引
select * from pg_indexes where tablename='device_gps';

# 查看表结构,类似mysql的show create table device_gps
\d device_gps;

# 导出数据库
/usr/pgsql-12/bin/pg_dump -h 192.168.0.35 -p 5432 -U postgres crm > ./crm.sql

2.6.2. timescaledb插件安装

可选项

  1. 安装rpm
sudo yum install -y https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
  1. 安装
# Add our repo
sudo tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL
[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/7/\$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
EOL
sudo yum update -y

# Now install appropriate package for PG version
sudo yum install -y timescaledb-postgresql-12
  1. 配置postgresql.conf
# 使用postgres启动时加载timescaledb,将shared_preload_libraries的值设置为timescaledb
shared_preload_libraries = 'timescaledb,auth_delay,passwordcheck,pgaudit'
  1. 重启数据库服务

  2. 使用timescale提供的命令自动根据服务器配置更新配置文件(可忽略)

/usr/bin/timescaledb-tune --pg-config=/usr/pgsql-12/bin/pg_config --conf-path=/home/pgdata/postgresql.conf
  1. timescaledb使用示例
# 创建tutorial并为其创建timescaledb扩展
psql -U postgres -h localhost
CREATE database tutorial;
\c tutorial
CREATE EXTENSION IF NOT EXISTS timescaledb;
注:执行create extenstion时可能会报错:
ERROR:  extension "timescaledb" has no installation script nor update path for version "xxx"。这可能是没有该版本的对应的sql,进入该脚本对应的目录下查看timescaledb的sql脚本的版本号(cd /usr/pgsql-12/share/extension),重新在psql控制台创建指定版本的timescaledb:CREATE EXTENSION timescaledb VERSION '1.7.5';
  1. 导入或者是创建表后,创建超表
# 将condition转为超表并且不自动创建索引,对时间进行分区
SELECT create_hypertable('conditions', 'time', create_default_indexes=>FALSE);

# 将condition转为超表,对时间进行分区并给时间块添加时间间隔,默认为7天(1.5版本以前为30天)
SELECT create_hypertable('conditions', 'time', chunk_time_interval => INTERVAL '1 day');

# 重新设置时间分区间隔,只会对新创建的分区生效
SELECT set_chunk_time_interval('conditions', INTERVAL '24 hours');
SELECT set_chunk_time_interval('conditions', 86400000000);
SELECT set_chunk_time_interval('conditions', 86400000); #unix是毫秒

额外命令:

# 查看安装的extension
select * from pg_available_extensions;
或者\dx

# 安装一个名为extension_name的新扩展
CREATE EXTENSION extension_name;

# 此命令将更改扩展名,大多用于升级扩展
ALTER EXTENSION extension name;

# 在清理操作完成后,此命令用于删除一个扩展
DROP EXTENION extension_name;

2.6.3. 密码策略插件安装

主要是应对等保。非源码安装的postgresql没有 passwordcheckauth_delay 插件,需要编译源码才有。所以这里可以通过编译postgresql的源码从而生成 passwordcheckauth_delay 插件所需的相关文件。

  1. 查看数据库版本:select version();

  2. 到官网下载对应源码包:https://www.postgresql.org/ftp/source/

  3. 解压后进入对应的 contrib/passwordcheck 文件夹,修改 passwordcheck.c 文件,修改 MIN_PWD_LENGTH 选项

  4. 重新编译

cd /opt/src/postgresql-12.5
./configure --prefix=/opt/pgsql
# 如报错,configure是可能缺失readline库,安装:yum install readline-devel
gmake world
  1. 如果有以前编译的源码,可按以下方式编译
cd /opt/src/postgresql-12.5/contrib/passwordcheck/
make clean
make
  1. 将编译后生成的 passwordcheck.so 文件复制到postgresql的lib目录下
cp passwordcheck.so /usr/pgsql-12/lib
  1. 修改postgresql.conf配置文件,加入passwordcheck插件
vim /home/pgdata/postgresql.conf
shared_preload_libraries = 'passwordcheck'
  1. 重启数据库服务

注:auth_delay 插件同理,不过需要添加配置:auth_delay.milliseconds = 5000
这个配置主要用于防止暴力破解. 验证失败后, 延迟一个时间窗口才能继续验证

2.6.4. 日志策略插件安装

主要是应对等保。要注意该插件版本和postgresql的版本是否兼容。

  1. 下载对应版本的插件包:https://github.com/pgaudit/pgaudit/archive/refs/tags/1.4.1.tar.gz

  2. 复制解压到上面pgsql源码包的contrib下

  3. 进入pgaudit文件夹编译安装:make install

  4. 安装完成后将 /opt/pgsql/lib 下的 pgaudit.so 复制到 /usr/pgsql-12/lib

  5. /opt/pgsql/share/extension 下的pgaudit开头文件复制到 /usr/pgsql-12/share/extension

  6. 编辑 /home/pgdata/postgresql.conf 配置文件,调整相关配置项

log_rotation_age = 180d
log_rotation_size = 100MB
log_connections = on
log_disconnections = on
log_line.prefix = '%m %u %d:'
log_statement = 'ddl'
shared_preload_libraries = 'pgaudit'
pgaudit.log = 'write,role,ddl,misc,read,function'
pgaudit.log_catalog = off
pgaudit.log_level = log
pgaudit.log_parameter = on
pgaudit.log_relation = on
pgaudit.log_statement_once = on
  1. 重启数据库服务

  2. 连接数据库后创建extension

create extension pgaudit;

2.7. zookeeper集群安装

目录可根据实际条件自行调整

  • 程序目录:/usr/local/zookeeper
  • 数据目录:/usr/local/zookeeper/data
  • 日志目录:/usr/local/zookeeper/log

2.7.1. 安装步骤

  1. 将zookeeper安装包 zookeeper-3.4.13.tar.gz 上传至 /usr/local 目录下并解压,修改解压后的文件夹名为zookeeper

  2. /usr/local 目录下新建zookeeper的data和log文件夹

mkdir -p /usr/local/zookeeper/data
mkdir -p /usr/local/zookeeper/log
  1. /usr/local/zookeeper/data 目录下新建文件 myid,文件内容为zk的唯一id,搭建zk集群时会用到 server.${myid}

  2. 修改配置文件

cd /usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
# 修改如下内容
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/log
  1. 添加集群信息
# 在zoo.cfg中添加如下内容
server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888
注:zk1为内网环境下服务器ip或者是主机名,其他也是同一道理。2888用于集群内部通信 3888用于集群的leader选举(leader选举结果为启动节点过半数时myid最大的节点)
  1. 添加环境变量(vim /etc/profile) 并使配置文件生效(source /etc/profile
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
export PATH
  1. 在另外两台机器执行以上步骤

相关命令:

# 启动zk
zkServer.sh start
# 查看zk状态
zkServer.sh status

2.7.2. 开机自启配置

  1. 添加开机启动服务
vim /lib/systemd/system/zookeeper.service
  1. 添加以下内容
[Unit]
#描述服务
Description=zookeeper
#描述服务类别
After=network.target

[Service]
#forking是后台运行的形式
Type=forking
Environment=ZOO_LOG_DIR=/usr/local/zookeeper
Environment=PATH=/usr/local/java/jdk1.8.0_144/bin:/usr/local/java/jdk1.8.0_144/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/$
User=root
Group=root
#服务启动的具体命令
ExecStart=/usr/local/zookeeper/bin/zkServer.sh start /usr/local/zookeeper/conf/zoo.cfg
#ExecReload为服务重启的具体命令
ExecReload=/usr/local/zookeeper/bin/zkServer.sh restart /usr/local/zookeeper/conf/zoo.cfg
#服务停止的具体命令
ExecStop=/usr/local/zookeeper/bin/zkServer.sh stop /usr/local/zookeeper/conf/zoo.cfg
#true表示给服务分配独立的临时空间
PrivateTmp=true

[Install]
#设置为多用户
WantedBy=multi-user.target
  1. 执行以下命令
# 重新加载systemd的配置文件
sudo systemctl daemon-reload
# 加入开机启动项
sudo systemctl enable zookeeper.service
# 启动zookeeper
sudo systemctl start zookeeper.service
# 查看zookeeper运行状态
sudo systemctl status zookeeper.service
# 停止
sudo systemctl stop zookeeper.service

2.8. kafka集群安装

目录可根据实际条件自行调整

  • 程序目录:/usr/local/kafka
  • 数据目录:/usr/local/kafka/kafka-logs

2.8.1. 安装步骤

  1. 将kafka安装包 kafka_2.12-2.1.1.tgz 上传至 /usr/local 目录下并解压,修改解压后的文件夹名为kafka

  2. 新建数据目录

mkdir -p /usr/local/kafka/kafka-logs
  1. 修改配置文件
cd /usr/local/kafka/conf
vim server.properties
# 修改如下内容
# 默认是0,这里可以修改从1开始,自定义
broker.id=1
# 是否删除topic,默认为false。在为false的情况只是对topic做一个删除标记而已
delete.topic.enable=true
# 消息最大值,如果传输的消息很大,需要调整该配置
# message.max.bytes=104857600
# 配置本机局域网ip
listeners=PLAINTEXT://192.168.0.100:9092
# 调整日志数据目录
log.dirs=/usr/local/kafka/kafka-logs
# 日志保留的时长,超过这个时长后会自动删除,根据实际情况调整
# log.retention.hours=12
# 配置zk集群地址
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
# 调整连接zookeeper的超时时间,有些情况下不知道为什么连接zookeeper的时间很长,如果时间太短连不上zookeeper会导致kafka无法启动
zookeeper.connection.timeout.ms=6000
  1. 添加环境变量(vim /etc/profile) 并使配置文件生效(source /etc/profile
export KAFKA_HOME=/usr/local/kafka
export PATH=$PATH:$KAFKA_HOME/bin
  1. 在其余两台机器执行上述步骤(broker.id 不得重复)

  2. 启动broker

# 以守护进程的方式启动
/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
  1. 输入jps以检查kafka是否启动成功

2.8.2. 开机自启配置

  1. 添加开机启动服务
vim /lib/systemd/system/kafka.service
  1. 添加以下内容
[Unit]
Description=kafka service
After=network.target zookeeper.service

[Service]
Type=simple
Environment=PATH=/usr/local/java/jdk1.8.0_144/bin:/usr/local/java/jdk1.8.0_144/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/$
User=root
Group=root
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh /usr/local/kafka/config/server.properties
Restart=on-failure

[Install]
WantedBy=multi-user.target
  1. 执行以下命令
# 重新加载systemd的配置文件
sudo systemctl daemon-reload
# 加入开机启动项
sudo systemctl enable kafka.service
# 启动kafka
sudo systemctl start kafka.service
# 查看kafka运行状态
sudo systemctl status kafka.service
# 停止
sudo systemctl stop kafka.service

2.9. fastdfs

参考连接:https://github.com/happyfish100/fastdfs/wiki

2.10. ssdb

参考链接:https://ssdb-docs.zwc365.com/zh_cn/install.html

注意需要自行调整下配置文件:

vim /usr/local/ssdb/ssdb.conf
# 数据存放目录,根据需要自行调整
work_dir = ./var
pidfile = ./var/ssdb.pid

server:
    # specify an ipv6 address to enable ipv6 support
    # ip: ::1
    # 修改为局域网ip
    ip: 192.168.0.35
    port: 8888
    # bind to public ip
    #ip: 0.0.0.0
    # format: allow|deny: all|ip_prefix
    # multiple allows or denys is supported
    #deny: all
    # 允许所有局域网ip或者是指定ip连接
    allow: all
    # auth password must be at least 32 characters
    # 配置强密码
    auth: very strong password

# 配置日志存储目录和滚动策略
logger:
    level: debug
    output: /home/centos/ssdblog/log.txt
    rotate:
        size: 1000000000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值