二进制 文档 分离存储 服务器,Lamp架构扩展2

Lamp架构扩展2

实现互联网架构LAMP

Client1台,访问站点www.mylinuxops.com

PowerDNS服务器1台,对用户访问的网址做域名解析

apache+php服务器2台,分担访问压力

NFS-Sever服务器1台,存放站点动态和静态页面

NFS-backup服务器1台,实时备份NFS主机上站点数据

ProxySQL服务器1台,对背后数据库服务器进行读写分离

MySQL-Maser,主数据库服务器1台,接受对数据库写请求,向后端从服务器同步数据

MySQL-slave{1,2},从数据库服务器2台,接受对数据库读请求

9bb3aa10e013c05a29d83d46515fc560.png

主机地址分配

主机

主机名

系统

IP

Client

localhost

Fedora 30

192.168.73.153

PowerDNS

pdns

CentOS7

192.168.73.100

apache+php(1)

httpd1

CentOS7

192.168.73.110

apache+php(2)

httpd2

CentOS7

192.168.73.111

NFS-Sever

nfs

CentOS7

192.168.73.120

NFS-backup

backup

CentOS7

192.168.73.121

ProxySQL

proxysql

CentOS7

192.168.73.130

MySQL-Master

master

CentOS7

192.168.73.131

MySQL-Slave1

slave1

CentOS7

192.168.73.132

MySQL-Slave2

slave2

CentOS7

192.168.73.133

搭建网络拓扑图所示LAMP环境

1.搭建PowerDNS

搭建LAMP

安装amp

[root@pdns ~]# yum install httpd php php-mysql mariadb-server -y

创建PHP测试页

[root@pdns ~]# vim /var/www/html/index.php

$dsn='mysql:host=localhost;dbname=test';

$username='root'; $passwd='';

$dbh=new PDO($dsn,$username,$passwd);

var_dump($dbh);

phpinfo();

?>

启动服务

[root@pdns ~]# systemctl start httpd mariadb

测试

cd00b25a54b41632c7fb981d254dd20d.png

安装PowerDNS

1.安装powerNDS,依赖于EPEL源

[root@pdns ~]# yum install pdns pdns-backend-mysql -y

2.在MySQL中为powerdns创建数据库、表和用户

导入事先准备的数据库文件

[root@pdns ~]# mysql < pdns.sql

3.配置PowerDNS使用MySQL作为后台数据存储

[root@pdns ~]# vim /etc/pdns/pdns.conf

launch=gmysql

gmysql-host=localhost

gmysql-port=3306

gmysql-dbname=powerdns

gmysql-user=powerdns

gmysql-password=111111

4.启动powerdns

[root@pdns ~]# systemctl start pdns #启动服务

[root@pdns ~]# systemctl enable pdns #设置为开机启动

Created symlink from /etc/systemd/system/multi-user.target.wants/pdns.service to /usr/lib/systemd/system/pdns.service.

安装PowerDNS的WEB管理界面

1.安装相关的rpm包

yum -y install httpd php php-devel php-gd php-mcrypt php-imap phpldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring phpmcrypt php-mhash gettext

2.重启服务,设置为开机启动

[root@pdns ~]# systemctl restart httpd mariadb

[root@pdns ~]# systemctl enable httpd mariadb

Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

3.解压poweradmin程序到相应目录,并改名

[root@pdns ~]# tar xf poweradmin-2.1.7.tgz -C /var/www/html/

[root@pdns ~]# mv /var/www/html/poweradmin-2.1.7 /var/www/html/poweradmin

4.访问web界面

step1.选择语言

ef23379438c39aa9cfa0a47271a86fcb.png

step2.直接下步

ed79c1535a674541aa6591e525dbd9d1.png

step3.填入mysql数据相关的参数

f70cc03e184df4feb7877bd004f01e37.png

step4.填入poweradmin的账户信息以及dns服务器地址

c08adcc245c8f0b0f64790d8ed9b0fa3.png

step5.复制一下信息手动创建用户

f64417fa33c232c06716839964d9e7b3.png

为poweradmin创建可以连接数据库的用户

MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE

-> ON powerdns.*

-> TO 'poweradmin'@'localhost'

-> IDENTIFIED BY '111111';

Query OK, 0 rows affected (0.00 sec)

step6.复制下列信息到../inc/config.ini.php中,生成配置文件

be88e648d3f32e1298aea89deecd1c6a.png

[root@pdns ~]# vim /var/www/html/poweradmin/inc/config.inc.php

$db_host = 'localhost';

$db_user = 'poweradmin';

$db_pass = '111111';

$db_name = 'powerdns';

$db_type = 'mysql';

$db_layer = 'PDO';

$session_key = 'eC0QQE0-$A3jO-@LB~0TWHgA1}Dx8x*%IJA0nnThi=28_Z';

$iface_lang = 'en_EN';

$dns_hostmaster = 'powerdnsserver';

$dns_ns1 = '192.168.73.100';

$dns_ns2 = '';

step7.删除install目录

[root@pdns ~]# rm -rf /var/www/html/poweradmin/install

登录poweradmin配置dns

2b0f325f56df0434e231d8c73716f07b.png

f40c3ae8dac65eee4781d5a70407ccf0.png

b639a2942d7ba39db669cd072e88977d.png

a658c5b8bcf37a3a0ddc90161d494183.png

ef881985017b141dd86a21bfcded6076.png

d820fcc39cb5f3b539cbbe2cb3c7a11a.png

部署MySQL主从复制

分别在3台数据库主机上安装MySQL

yum install mariadb-server

Master服务器操作

1.修改配置文件

[root@master ~]# vim /etc/my.cnf

[mysqld]

log-bin=/data/bin/mysql-bin

binlog-format=row

server-id=1

2.创建二进制日志目录

[root@master ~]# mkdir /data/bin

[root@master ~]# chown -R mysql.mysql /data/bin

3.启动服务

[root@master ~]# systemctl start mariadb

4.创建主从复制用的账号

[root@master ~]# mysql -e "GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'192.168.73.%' IDENTIFIED BY '111111';"

5.查看二进制日志位置

[root@master ~]# mysql -e "SHOW MASTER LOGS;"

+------------------+-----------+

| Log_name | File_size |

+------------------+-----------+

| mysql-bin.000001 | 26753 |

| mysql-bin.000002 | 921736 |

| mysql-bin.000003 | 402 |

+------------------+-----------+

配置Slave1

1.修改配置文件

[root@slave1 ~]# vim /etc/my.cnf

[mysqld]

read-only

server-id=2

2.启动服务

[root@slave1 ~]# systemctl start mariadb

3.change master to

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.73.131', MASTER_USER='repluser', MASTER_PASSWORD='111111', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=402;

Query OK, 0 rows affected (0.01 sec)

4.启动复制线程

MariaDB [(none)]> START SLAVE;

Query OK, 0 rows affected (0.00 sec)

5.查看Slave状态确认无误

MariaDB [(none)]> SHOW SLAVE STATUS\G;

6.测试主从复制

主服务器导入测试数据库

[root@master ~]# mysql < hellodb_innodb.sql

从服务器查看是否同步

[root@slave1 ~]# mysql -e "SHOW DATABASES;"

+--------------------+

| Database |

+--------------------+

| information_schema |

| hellodb |

| mysql | #已经同步

| performance_schema |

| test |

+--------------------+

配置slave2

1.修改配置文件

[root@slave2 ~]# vim /etc/my.cnf

[mysqld]

read-only

server-id=3

2.启动服务

[root@slave2 ~]# systemctl start mariadb

3.CHANGE MASTER TO

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.73.131', MASTER_USER='repluser', MASTER_PASSWORD='111111', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=402;

Query OK, 0 rows affected (0.02 sec)

4.启动复制线程

MariaDB [(none)]> START SLAVE;

Query OK, 0 rows affected (0.00 sec)

5.查看数据库是否同步

MariaDB [(none)]> SHOW DATABASES;

+--------------------+

| Database |

+--------------------+

| information_schema |

| hellodb | #同步成功

| mysql |

| performance_schema |

| test |

+--------------------+

5 rows in set (0.00 sec)

配置ProxySQL

1.在ProxySQL主机上配置yum源

[root@ProxySQL ~]# vim /etc/yum.repos.d/proxysql.repo

[proxysql_repo]

name= ProxySQL YUM repository

baseurl=http://repo.proxysql.com/ProxySQL/proxysql-1.4.x/centos/\$releasever

gpgcheck=1

gpgkey=http://repo.proxysql.com/ProxySQL/repo_pub_key

2.安装ProxySQL和mariadb客户端

ProxySQL内置了一个轻量级的数据库,所以需要有MySQL客户端连上去对其进行配置

[root@ProxySQL ~]# yum install proxysql mariadb -y

3.启动ProxySQL服务

[root@ProxySQL ~]# service proxysql start

Starting ProxySQL: 2019-05-08 14:03:07 [INFO] Using config file /etc/proxysql.cnf

DONE!

4.连接管理端口

[root@ProxySQL ~]# mysql -uadmin -padmin -P6032 -h127.0.0.1

Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.5.30 (ProxySQL Admin Module)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

5.将MySQL主从服务器信息添加入mysql_servers表中

先将主从服务器存放在同一组内,等指定好读写规则后,系统会根据配置文件中的read-only值自动将其分别添加至读组和写组。

MySQL [(none)]> insert into mysql_servers(hostgroup_id,hostname,port) values (10,'192.168.73.131',3306);

Query OK, 1 row affected (0.00 sec)

MySQL [(none)]> insert into mysql_servers(hostgroup_id,hostname,port) values (10,'192.168.73.132',3306);

Query OK, 1 row affected (0.00 sec)

MySQL [(none)]> insert into mysql_servers(hostgroup_id,hostname,port) values (10,'192.168.73.133',3306);

Query OK, 1 row affected (0.00 sec)

MySQL [(none)]> select * from mysql_servers;

+--------------+----------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+

| hostgroup_id | hostname | port | status | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms | comment |

+--------------+----------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+

| 10 | 192.168.73.131 | 3306 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 | |

| 10 | 192.168.73.132 | 3306 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 | |

| 10 | 192.168.73.133 | 3306 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 | |

+--------------+----------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+

3 rows in set (0.00 sec)

6.在MySQL服务器的主节点上为ProxySQL添加账号用来查看MySQL节点是主还是从

[root@Master ~]# mysql -e "GRANT REPLICATION CLIENT ON *.* TO 'monitor'@'192.168.73.%' IDENTIFIED BY '111111';"

7.在Proxy上配置监控账号

MySQL [(none)]> SET mysql-monitor_username='monitor';

Query OK, 1 row affected (0.00 sec)

MySQL [(none)]> SET mysql-monitor_password='111111';

Query OK, 1 row affected (0.00 sec)

8.将配置加载至内存,将配置保存至磁盘

MySQL [(none)]> LOAD MYSQL VARIABLES TO RUNTIME;

Query OK, 0 rows affected (0.00 sec)

MySQL [(none)]> SAVE MYSQL VARIABLES TO DISK;

Query OK, 97 rows affected (0.00 sec)

9.测试

9.1查看连接状态

MySQL [(none)]> select * from mysql_server_connect_log;

9.2测试连接ping

MySQL [(none)]> select * from mysql_server_ping_log;

10.设置读写分组

MySQL [(none)]> INSERT INTO mysql_replication_hostgroups VALUES(10,20,"test");

Query OK, 1 row affected (0.00 sec)

MySQL [(none)]> SELECT * FROM mysql_replication_hostgroups;

+------------------+------------------+---------+

| writer_hostgroup | reader_hostgroup | comment |

+------------------+------------------+---------+

| 10 | 20 | test |

+------------------+------------------+---------+

1 row in set (0.00 sec)

11.让读写表生效

MySQL [(none)]> LOAD MYSQL SERVERS TO RUNTIME;

Query OK, 0 rows affected (0.00 sec)

12.查看mysql_server表此时已经将服务器分组

MySQL [(none)]> SELECT * FROM mysql_servers;

+--------------+----------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+

| hostgroup_id | hostname | port | status | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms | comment |

+--------------+----------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+

| 10 | 192.168.73.131 | 3306 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 | |

| 20 | 192.168.73.132 | 3306 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 | |

| 20 | 192.168.73.133 | 3306 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 | |

+--------------+----------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+

3 rows in set (0.00 sec)

13.保存配置至磁盘

MySQL [(none)]> SAVE MYSQL SERVERS TO DISK;

Query OK, 0 rows affected (0.02 sec)

至此读写分离配置完毕,接下来需要定义读写分离的规则

定义读写分离规则

1.在主节点上创建一个账户让客户端连接调度器去访问主从服务器(此处授予的权限较大,实际生产中可以根据需要定义指定的那张表)

[root@Master ~]# mysql -e "GRANT ALL ON *.* TO 'sqluser'@'192.168.73.%' IDENTIFIED BY '111111';"

2.在ProxySQL服务器上,将sqluser用户添加至mysql_users表中

MySQL [(none)]> INSERT INTO mysql_users(username,password,default_hostgroup) VALUES ('sqluser','111111',10);

Query OK, 1 row affected (0.00 sec)

3.查看mysql_user表信息

MySQL [(none)]> SELECT * FROM mysql_users;

+----------+----------+--------+---------+-------------------+----------------+---------------+------------------------+--------------+---------+----------+-----------------+

| username | password | active | use_ssl | default_hostgroup | default_schema | schema_locked | transaction_persistent | fast_forward | backend | frontend | max_connections |

+----------+----------+--------+---------+-------------------+----------------+---------------+------------------------+--------------+---------+----------+-----------------+

| sqluser | 111111 | 1 | 0 | 10 | NULL | 0 | 1 | 0 | 1 | 1 | 10000 |

+----------+----------+--------+---------+-------------------+----------------+---------------+------------------------+--------------+---------+----------+-----------------+

1 row in set (0.00 sec)

4.生效存盘

MySQL [(none)]> load mysql users to runtime;

Query OK, 0 rows affected (0.00 sec)

MySQL [(none)]> SAVE MYSQL USERS TO DISK;

Query OK, 0 rows affected (0.00 sec)

5.测试

目前尚未设置读写路由规则,所有的请求都是发往主节点

[root@Client ~]# mysql -usqluser -p111111 -h192.168.73.130 -P6033 -e "SELECT @@server_id;"

+-------------+

| @@server_id |

+-------------+

| 1 |

+-------------+

6.在ProxySQL上定义调度规则

MySQL [(none)]> INSERT INTO mysql_query_rules(rule_id,active,match_digest,destination_hostgroup,apply) VALUES (1,1,'^SELECT.*FOR UPDATE$',10,1),(2,1,'^SELECT',20,1);

Query OK, 2 rows affected (0.00 sec)

7.查看定义规则

MySQL [(none)]> SELECT * FROM mysql_query_rules\G;

8.生效存盘

MySQL [(none)]> LOAD MYSQL QUERY RULES TO RUNTIME;

Query OK, 0 rows affected (0.00 sec)

MySQL [(none)]> SAVE MYSQL QUERY RULES TO DISK;

Query OK, 0 rows affected (0.00 sec)

在Client端测试

1.查询操作

[root@Client ~]# mysql -usqluser -p111111 -h192.168.73.130 -P6033 -e "SELECT @@server_id;"

+-------------+

| @@server_id |

+-------------+

| 2 |

+-------------+

2.写操作

[root@Client ~]# mysql -usqluser -p111111 -h192.168.73.130 -P6033 -e "BEGIN;INSERT hellodb.teachers VALUE(5,'Long',30,'M');SELECT @@server_id;commit;"

+-------------+

| @@server_id |

+-------------+

| 1 |

+-------------+

部署Apache+PHP

分别在2台httpd主机上安装httpd、php-fpm

yum install httpd php-fpm php-mysql -y

配置apache+php(1)服务器

1.修改httpd配置文件

[root@httpd ~]# vim /etc/httpd/conf/httpd.conf

DirectoryIndex index.php index.html

addtype application/x-httpd-php .php

addtype application/x-httpd-php-source .phps

proxyrequests off

proxypassmatch ^/(.*\.php)$ unix:/var/run/php.sock|fcgi://localhost/data/html

servername www.mylinuxops.com

Documentroot /data/html

require all granted

2.修改php.ini中的时区

[root@httpd ~]# vim /etc/php.ini

date.timezone = Aisa/Shanghai

3.修改php-fpm配置文件配置为(UDS模式)

[root@httpd ~]# vim /etc/php-fpm.d/www.conf

;listen = 127.0.0.1:9000 #注销此行

listen = /var/run/php.sock #监听sock文件

;listen.allowed_clients = 127.0.0.1 #注销监听127.0.0.1

listen.mode = 0666 #添加权限

4.创建站点目录,创建测试页

[root@httpd ~]# mkdir /data/html

[root@httpd ~]# vim /data/html/index.php

$dsn='mysql:host=192.168.73.131;dbname=test';

$username='sqluser'; $passwd='111111';

$dbh=new PDO($dsn,$username,$passwd);

var_dump($dbh);

phpinfo();

?>

5.启动服务

[root@httpd ~]# systemctl start httpd php-fpm

测试

053cbcf263390ff3dec1815bc86e1221.png

配置apache+php(2)服务器

将apache+php(1)上的配置文件复制到(2)上

[root@httpd ~]# scp /etc/php.ini 192.168.73.111:/etc/php.ini

[root@httpd ~]# scp /etc/httpd/conf/httpd.conf 192.168.73.111:/etc/httpd/conf/httpd.conf

[root@httpd ~]# scp /etc/php-fpm.d/www.conf 192.168.73.111:/etc/php-fpm.d/www.conf

创建站点目录和测试页面

[root@httpd2 ~]# mkdir /data/html

[root@httpd2 ~]# vim /data/html/index.php

$dsn='mysql:host=192.168.73.131;dbname=test';

$username='sqluser'; $passwd='111111';

$dbh=new PDO($dsn,$username,$passwd);

var_dump($dbh);

phpinfo();

?>

启动服务

[root@httpd2 ~]# systemctl start httpd php-fpm

访问测试

530cd1efa695c894a6fda4efa87e8e68.png

配置NFS-server

安装nfs

[root@nfs ~]# yum install nfs-utils -y

在httpd主机上查看apache用户id

[root@httpd ~]# id apache

uid=48(apache) gid=48(apache) groups=48(apache)

[root@httpd2 ~]# id apache

uid=48(apache) gid=48(apache) groups=48(apache)

在nfs-Server上创建一个apache用户

将来访问的用户映射成apache用户

[root@nfs ~]# useradd -r -u 48 -s /sbin/nologin apache

[root@nfs ~]# id apache

uid=48(apache) gid=48(apache) groups=48(apache)

创建出共享的目录

[root@nfs ~]# mkdir /data/html

定义共享规则

[root@nfs ~]# vim /etc/exports

/data/html 192.168.73.110(rw,no_root_squash,anonuid=48,anongid=48) 192.168.73.111(rw,no_root_squash,anonuid=48,anongid=48)

重启服务

[root@nfs ~]# systemctl restart nfs

配置nfs实时备份

安装rsync

在nfs-server和nfs-backup服务器上安装rsync

yum install rsync

在backup端配置为rsync服务

1.创建一个作为备份的目录

[root@backup ~]# mkdir /data/backup

2.修改rsync配置文件

[root@rsync ~]# vim /etc/rsyncd.conf

uid = root

gid = root

use chroot = no

max connections = 0

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

reverse lookup = no

host allow = 192.168.73.120

[backup]

path = /data/backup/

comment = backup

readonly = no

auth users = rsyncuser

secrets file = /etc/rsync.pass

4.生成验证用的账户密码,修改为安全权限

[root@rsync ~]# echo "rsyncuser:111111" > /etc/rsync.pass

[root@rsync ~]# chmod 600 /etc/rsync.pass

5.启动服务(rsyncd端口号873)

[root@rsync ~]# systemctl start rsyncd

nfs-server端配置

测试rsync一次性任务

1.安装inotify-tools(基于epel)

[root@nfs ~]# yum install inotify-tools -y

2.配置密码文件,修改为安全权限

[root@nfs ~]# echo "111111" > /etc/rsync.pass

[root@nfs ~]# chmod 600 /etc/rsync.pass

3.创建测试文件

[root@nfs ~]# touch /data/html/test

4.测试一次性同步

#把本机的/data目录下的数据利用rsync远程同步到73.121的backup指定的文件夹中去

[root@nfs ~]# rsync -avz --password-file=/etc/rsync.pass /data/html/ rsyncuser@192.168.73.121::backup

sending incremental file list

./

test

sent 102 bytes received 38 bytes 280.00 bytes/sec

total size is 0 speedup is 0.00

让inotify配合sync实时同步

1.在nfs-server端创建脚本

[root@nfs ~]# vim rsync.sh

#!/bin/bash

SRC='/data/html'

DEST='rsyncuser@192.168.73.121::backup'

inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR FILE;do

FILEPATH=${DIR}${FILE}

rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log

done

2.运行脚本

[root@client ~]# bash rsync.sh

3.测试

在nfs端创建文件

[root@nfs ~]# touch /data/html/test1

在backup端查看

[root@backup html]# ls

test test1

将nfs共享目录挂载至httpd服务器

分别在两台httpd服务器上挂载

[root@httpd ~]# showmount -e 192.168.73.120

Export list for 192.168.73.120:

/data/html 192.168.73.111,192.168.73.110

设置为开机挂载

[root@httpd ~]# vim /etc/fstab

192.168.73.120:/data/html /data/html nfs defaults 0 0

[root@httpd ~]# mount -a

查看是否挂载

[root@httpd ~]# ls /data/html/

test test1

#测试文件已经存在挂载成功

创建站点测试页

[root@httpd ~]# vim /data/html/index.php

$dsn='mysql:host=192.168.73.131;dbname=test';

$username='sqluser'; $passwd='111111';

$dbh=new PDO($dsn,$username,$passwd);

var_dump($dbh);

phpinfo();

?>

使用客户端访问

1163dc4cf4a1c28e15edc142c18910eb.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值