1、安装gcc (编译时索要)

1、图片服务器搭建

搭建从前,先来张效果图:

一、在设置法斯特DFS此前务必先安装libevent,安装libevent步骤如下:

[root@localhost~]# yum -y install gcc gcc-c++

1.1什么是FastDFS

法斯特DFS是用c语言编写的一款开源的分布式文件系统。法斯特DFS为互连网量身定制,丰硕考虑了冗余备份、负载均衡、线性扩容等体制,并尊重高可用、高品质等目的,
使用法斯特DFS很不难搭建一套高质量的文书服务器集群提供文件上传、下载等劳务。

澳门金沙国际 1

1.下载libevent:

wgethttps://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz

2、安装libevent ,FastDFS依赖libevent库;

1.2FastDFS架构

澳门金沙国际 2

效果图

2.解压libevent:

tar -zxvpf libevent-2.0.21-stable.tar.gz

 [root@localhost~]# yum -y install libevent

1.3搭建图片服务器

下载法斯特DFS的安装包。只有linux版。

澳门金沙国际 3

但我们尚无那么多服务器,咋做吧?本着学习的态度,我们得以搭建一个最简便易行的,Tracker需求一个集群,我们得以先给一台,Storage集群,大家只布置一组,一组中大家倘使一个主服务器,先不陈设从服务器。

3.进来解压目录:

cd libevent-2.0.21-stable

3、安装libfastcommon

1.3.1案例架构

 澳门金沙国际 4

这么就须求两台Linux服务器,Tracker和Storage三个可以先松开一台机械上,所以最简单易行的结构应该是一台Linux服务器,配置一个Tracker和一个Storage即可。

4.指虞升卿装目录:

./configure –prefix=/usr/local/libevent-2.0.21

 libfastcommon是法斯特DFS官方提供的,libfastcommon包含了法斯特DFS运行所要求的局地基础库。
 

1.3.2编译环境

1、需要gcc的环境。需要make
     yum install gcc-c++
2、须求安装libevent工具包。
     法斯特DFS器重libevent库,需求安装:
     yum -y install libevent

好的,做好,开船!!!!!

5.安装libevent:

make

make install

(1)上传 libfastcommonV1.0.7.tar.gz到Centos机器上;

1.3.3 Tracker server的安装

率先步:要求把法斯特DFS的源码包上传到服务器。

澳门金沙国际 5

澳门金沙国际 6

第二步:安装libfastcommonV1.0.7.tar.gz工具包。

    1、解压缩

    [root@bogon ~]# tar -zxvf libfastcommonV1.0.7.tar.gz

    2、Make

     [root@bogon libfastcommon-1.0.7]# ./make.sh

    3、[root@bogon libfastcommon-1.0.7]# ./make.sh install

                   在/usr下多一个lib64文件夹—/usr/lib64

    4、从/usr/lib64下复制libfastcommon.so到/usr/lib文件夹下。

      [root@bogon lib64]# cp libfastcommon.so ../lib

第三步:解压缩FastDFS_v5.05.tar.gz包

第四步:编译FastDFS的源码。使用make.sh

[root@bogon FastDFS]# ./make.sh 

第五步:安装。

[root@bogon FastDFS]# ./make.sh install

 

 澳门金沙国际 7

安装在[root@localhost sbin]# cd /etc/fdfs/   路径下

第六步:在/etc/fdfs/目录下有配置文件的样例。

可以把fast源码包下的配备文件(/root/法斯特DFS/conf)复制到/etc/fdfs目录下。

[root@bogon conf]# cp * /etc/fdfs/

澳门金沙国际 8

第七步:修改tracker.conf配置文件。

澳门金沙国际 9

一言九鼎是修改配置文件存放的门径,路径必须是存在的。

base_path=/home/fastdfs/tracker

第八步:启动tracker server。

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

[root@bogon bin]# ./fdfs_trackerd /etc/fdfs/tracker.conf restart

[root@bogon bin]# ps aux|grep fdfs

root      2935  0.0  0.5  16132  2728 ?        Sl   18:55   0:00
./fdfs_trackerd /etc/fdfs/tracker.conf restart

root      2944  0.0  0.1   4356   724 pts/0    S+   18:55   0:00 grep
fdfs

[root@bogon bin]#

一、下载

       
tracker和storage使用同样的安装包,下载地址:

咱俩当下采用的是:FastDFS_v5.05.tar.gz

下载地址:FastDFS_v5.05.tar.gz

二、安装法斯特DFS步骤如下:

(2)将 libfastcommonV1.0.7.tar.gz解压至/usr/local/下:

1.3.4 Storage Server安装

第一步:安装libfastcommonV1.0.7.tar.gz工具包

其次步:参考Tracker server安装的三~六步。

其三步:修改Storaged的布置文件。在/etc/fdfs下

Storaged服务端口2300

澳门金沙国际 10

澳门金沙国际 11

第四步:启动Storage服务器

[root@bogon fdfs]# cd /usr/bin/

[root@bogon bin]# ./fdfs_storaged /etc/fdfs/storage.conf restart

第五步:设置开机自动启动

[root@localhost bin]# cd /etc/rc.d/

[root@localhost rc.d]# vi rc.local

进入七个启动命令

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

 1.3.5 测试上传文件

fdfs_test测试文件上传。

修改修改/etc/fdfs/client.conf文件。

澳门金沙国际 12

[root@bogon bin]# ./fdfs_test /etc/fdfs/client.conf upload
/etc/fdfs/anti-steal.jpg

二、法斯特DFS安装环境

法斯特DFS是C语言开发,指出在linux上运行,本学科使用Centos6.4作为安装环境。

1、安装法斯特DFS须要先校官网下载的源码进行编译,编译看重gcc环境

 即使没有gcc环境,须要设置gcc:

yum install gcc-c++

运行yum命令必须联网才行

2、安装libevent

法斯特DFS信赖libevent库,须求设置:

yum -y install libevent

3、安装libfastcommon

libfastcommon是法斯特DFS官方提供的,libfastcommon包罗了法斯特DFS运行所须求的一对基础库。

下载链接: 密码: bqp7

将libfastcommonV1.0.7.tar.gz拷贝至/usr/local/下(此处省略了经过SSH工具连接Linux,并上传文件,拷贝文件这么个进程)

cd /usr/local

tar -zxvflibfastcommonV1.0.7.tar.gz

cd libfastcommon-1.0.7

./make.sh

./make.sh install

该进程紧假如将libfastcommon解压、编译、并设置。

小心:libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,由于法斯特DFS程序引用usr/lib目录所以须求将/usr/lib64下的库文件拷贝至/usr/lib下,只要求将libfastcommon.so
 拷贝过去即可,不需求全部拷贝,更不可能一体平移,那样系统彻底歇菜。

1.下载FastDFS:

wgethttp://fastdfs.googlecode.com/files/FastDFS\_v4.06.tar.gz

图形服务器安装,Nginx搭建图片服务器。 

 1.3.6 安装 nginx+fastdfs的恢弘模块

三、安装起来

2.解压FastDFS:

tar xvf FastDFS_v4.06.tar.gz

 libfastcommon
下载地址: 

1.3.6.1 须求的模块

澳门金沙国际 13

Nginx安装模块必要再度编译。

1、安装Tracker

将FastDFS_v5.05.tar.gz拷贝至/usr/local/下

tar -zxvf   FastDFS_v5.05.tar.gz

cd FastDFS

./make.sh

./make.sh install

设置成功将设置目录下的conf下的文件拷贝到/etc/fdfs/下。

3.进来解压目录:

cd FastDFS

(3)切换目录到:/usr/local/libfastcommon-1.0.7/ 下,接着进行编译和设置;

1.3.6.2 安装步骤

首先步:把模块上传到linux服务器。把nginx的源码上传。

澳门金沙国际 14

其次步:解压模块的压缩包。进入源码包/root/fastdfs-nginx-module/src

第三步:修改config

把公文中的local去掉。

澳门金沙国际 15

第四步:把mod_fastdfs.conf配置文件复制到/etc/fdfs目录下。

[root@localhost src]# cp mod_fastdfs.conf /etc/fdfs/

澳门金沙国际 16

澳门金沙国际 17

第五步:编译模块。和nginx同时编译。

1、对nginx举办config。生成一个makefile。

./configure \

–prefix=/usr/local/nginx \

–pid-path=/var/run/nginx/nginx.pid \

–lock-path=/var/lock/nginx.lock \

–error-log-path=/var/log/nginx/error.log \

–http-log-path=/var/log/nginx/access.log \

–with-http_gzip_static_module \

–http-client-body-temp-path=/var/temp/nginx/client \

–http-proxy-temp-path=/var/temp/nginx/proxy \

–http-fastcgi-temp-path=/var/temp/nginx/fastcgi \

–http-uwsgi-temp-path=/var/temp/nginx/uwsgi \

–http-scgi-temp-path=/var/temp/nginx/scgi \

–add-module=/root/fastdfs-nginx-module/src

1、make

2、make install

3、配置nginx的安顿文件。

[root@localhost src]# cd /usr/local/nginx/
[root@localhost nginx]# pwd
/usr/local/nginx

在nginx.conf配置文件中添加

server {

       listen       80;

        server_name  localhost;

       location /group1/M00/{

             ngx_fastdfs_module;

        }

    }

5、启动nginx

[root@localhost nginx]# ./nginx

 

2、配置

设置成功后跻身/etc/fdfs目录:

澳门金沙国际 18

修改tracker.conf

vi tracker.conf

base_path=/home/yuqing/FastDFS

改为:

base_path=/home/fastdfs

澳门金沙国际 19

4.修改法斯特DFS的安装文件:

vi make.sh

TARGET_PREFIX=/usr/local/法斯特DFS  —安装路径

TARGET_CONF_PATH=/etc/fdfs  —配置文件路径

WITH_LINUX_SERVICE=1   —是否为linux服务

[root@localhost data]# tar -xf V1.0.7.tar.gz

3、启动

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

起始的日记突显先为止5619历程(实际条件不是5619)再开行,如下图:

澳门金沙国际 20

小心:若是没有出示上图要小心是否健康为止原有进程。

安装开机自动启动。

[root@localhost fdfs]#vim /etc/rc.d/rc.local

将运行命令行添加进文件:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
restart

5.指定libevent的lib目录:

./make.sh C_INCLUDE_PATH=/usr/local/libevent-2.0.21/include
LIBRARY_PATH=/usr/local/libevent-2.0.21/lib

[root@localhost data]# cd libfastcommon-1.0.7/

4、Storage安装、配置

假如Storage安装在了一台全新的Linux服务器上,要求将事先的步调二再来三次(安装环境)

不过大家脚下是在一台微机上设置,所以可以跳过。

接下去必要在Storage上进行布署

进入/etc/fdfs目录,配置storage.conf。

修改storage.conf

vi   storage.conf

group_name=group1

base_path=/home/yuqing/FastDFS改为:base_path=/home/fastdfs

store_path0=/home/yuqing/FastDFS改为:store_path0=/home/fastdfs/fdfs_storage

比方在/home下没有fastdfs,请先创设fastdfs文件夹,fastdfs下并未fdfs_storage,必要贯彻创立该文件夹。

tracker_server=192.168.25.129:22122#配置tracker服务器:IP

6.安装FastDFS:

./make.sh install

[root@localhost libfastcommon-1.0.7]# ./make.sh   #编译

5、启动storage

/usr/bin/fdfs_storaged  /etc/fdfs/storage.conf restart

澳门金沙国际 21

留神:假若没有突显上图要小心是不是正规截至原有进度。

设置开机自动启动。

[root@storage1 FastDFS]#vim /etc/rc.d/rc.local

将运行命令行添加进文件:/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
restart

7.安装软连接(否则编译nginx时会出错)

ln -sv /usr/local/FastDFS/include/fastcommon
/usr/local/include/fastcommon

ln -sv /usr/local/FastDFS/include/fastdfs /usr/local/include/fastdfs

ln -sv /usr/local/FastDFS/lib/libfastcommon.so
/usr/local/lib/libfastcommon.so

ln -sv /usr/local/FastDFS/lib/libfastcommon.so.1
/usr/local/lib/libfastcommon.so.1

ln -sv /usr/local/FastDFS/lib/libfdfsclient.so
/usr/local/lib/libfdfsclient.so

ln -sv /usr/local/FastDFS/lib/libfdfsclient.so.1
/usr/local/lib/libfdfsclient.so.1

[root@localhost libfastcommon-1.0.7]# ./make.sh install  #安装

6、上传图片测试

1.1.1通过fdfs_test程序

法斯特DFS安装成功可通过/usr/bin/fdfs_test测试上传、下载等操作。

修改/etc/fdfs/client.conf

base_path=/home/fastdfs

tracker_server=192.168.25.129:22122

运用格式:

/usr/bin/fdfs_test   客户端配置文件地方   upload   上传文件

譬如说将/home下的图形上传到法斯特DFS中:

/usr/bin/fdfs_test /etc/fdfs/client.conf upload /home/admin/hehe.jpg

假使出现如下界面,表示上传成功。

澳门金沙国际 22

当今是因为只是打响了一有的,因为图片是可以上传了,但是不能访问,为啥呢?

因为就从未http服务器,怎么访问啊?????

三、在安装Nginx从前,要求设置gcc、 openssl-devel、 pcre-devel和zlib-devel软件库,具体如下:

yum install gcc-c++

yum install openssl-devel

yum install pcre-devel

yum install zlib-devel

澳门金沙国际 23

四、FastDFS和nginx整合

我们须要经过Nginx来搭建一个http服务器才行,那步骤是否和事先自己写的《利用Nginx当http服务器》同一吗?略有不一样,所有最后提出依据如下步骤搭建。

四、安装Nginx和fastdfs-nginx-module

wgethttp://nginx.org/download/nginx-1.6.0.tar.gz

wgethttp://fastdfs.googlecode.com/files/fastdfs-nginx-module\_v1.15.tar.gz

将安装包文件上传到/usr/local中履行以下操作:

 

1、在tracker上安装nginx

在各类tracker上安装nginx,的最首要目标是做负载均衡及完成高可用。若果唯有一台tracker服务器可以不陈设nginx

故此那里不用配置该Nginx

1.进去文件目录:

cd /usr/local

(4)libfastcommon安装好后会在/usr/lib64 目录下生成  libfastcommon.so
库文件;

2、在Storage上安装nginx

     1)FastDFS-nginx-module

将FastDFS-nginx-module_v1.16.tar.gz传至/usr/local/下

cd /usr/local

tar -zxvfFastDFS-nginx-module_v1.16.tar.gz

cdFastDFS-nginx-module/src

修改config文件将/usr/local/路径改为/usr/

澳门金沙国际 24

将FastDFS-nginx-module/src下的mod_FastDFS.conf拷贝至/etc/fdfs/下

cp mod_FastDFS.conf /etc/fdfs/

并修改mod_FastDFS.conf的内容:

vi /etc/fdfs/mod_FastDFS.

base_path=/home/fastdfs

tracker_server=192.168.25.129:22122

url_have_group_name=true    #url中包含group名称

store_path0=/home/fastdfs/fdfs_storage      #指定文件存储路径

将libfdfsclient.so拷贝至/usr/lib下

cp /usr/lib64/libfdfsclient.so    /usr/lib/

开创nginx/client目录,为Nginx的装置做准备

mkdir -p /var/temp/nginx/client

2.解压安装包:

tar -zxv -f nginx-1.6.0.tar.gz

tar -xvf fastdfs-nginx-module_v1.15.tar.gz

澳门金沙国际 25

五、Nginx的安装

将Nginx源码包上传到服务器,并解压,Nginx的安装须要有一些安装环境,此处不再赘述,执行如下命令即可:

1、yum install gcc-c++

2、yum install -y pcre pcre-devel

3、yum install -y zlib zlib-devel**

**4、yum install -y openssl openssl-devel**

接下来就足以编译Nginx了,首先Nginx没有makefile文件,需求手动生成一个,生成时此处还须求注册一个fastdfs模块(留意命令最终一行)

进去到nginx的源码目录下,执行如下代码:

./configure \

–prefix=/usr/local/nginx \

–pid-path=/var/run/nginx/nginx.pid \

–lock-path=/var/lock/nginx.lock \

–error-log-path=/var/log/nginx/error.log \

–http-log-path=/var/log/nginx/access.log \

–with-http_gzip_static_module \

–http-client-body-temp-path=/var/temp/nginx/client \

–http-proxy-temp-path=/var/temp/nginx/proxy \

–http-fastcgi-temp-path=/var/temp/nginx/fastcgi \

–http-uwsgi-temp-path=/var/temp/nginx/uwsgi \

–http-scgi-temp-path=/var/temp/nginx/scgi \

–add-module=/usr/local/fastdfs-nginx-module/src

该命令是一个指令,不可以一个个粘贴,统一粘贴,千万须求小心路径难题,没有的公文夹一定要先创设。

执行落成后会生成一个MakeFile文件,然后就就可在该路线下展开编译和设置了

编译:make

安装:make install

3.修改安装包目录名称:

mv nginx-1.6.0 nginx

注意:由于法斯特DFS程序引用usr/lib目录所以要求将/usr/lib64下的库文件拷贝至/usr/lib下。

六、Nginx配置

在/usr/local/nginx/conf下,找到nginx.conf,新增如下内容:

server {

     listen      80;

     server_name  192.168.25.129;

     location /group1/M00/{

                  #root /home/fastdfs/fdfs_storage/data;

                 ngx_fastdfs_module;

      }

}

保存,重启Nginx。

先访问

4.进来安装包目录:

cd /usr/local/nginx

 

切记:请关闭Linux防火墙,或者将80端口放手,要不然一切都不起成效。

再拜访此前的url是或不是足以访问到该图形,借使访问成功,表达搭建已毕。

澳门金沙国际 26

5.部署安装目录:

./configure –prefix=/usr/local/nginx
–conf-path=/usr/local/nginx/nginx.conf 
–add-module=/usr/local/fastdfs-nginx-module/src

[root@localhost lib64]# cp /usr/lib64/libfastcommon.so  /usr/lib/

6.安装Nginx:

make

make install

7.修改防火墙:

vi + /etc/sysconfig/iptables

8.添加配置项

-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

9.重启防火墙:

service iptables restart

10.将libfastcommon.so、libfastcommon.so.1、libfdfsclient.so、libfdfsclient.so.1复制到/usr/lib,否则nginx启动会报错。

Nginx的操作:

启动:

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

或者

cd /usr/local/nginx/sbin

./nginx

一旦开行找不到

error while loading shared libraries: libfdfsclient.so: cannot open
shared object file: No such file or directory

error while loading shared libraries: libfastcommon.so: cannot open
shared object file: No such file or directory

请使用以下软连接

[root@localhost lib]# ln -s /usr/local/FastDFS/lib/libfastcommon.so
/usr/lib/libfastcommon.so

[root@localhost lib]# ln -s /usr/local/FastDFS/lib/libfastcommon.so
/usr/lib64/libfastcommon.so

[root@localhost lib]# ln -s /usr/local/FastDFS/lib/libfastcommon.so
/usr/lib64/libfastcommon.so

[root@localhost lib]# ln -s /usr/local/FastDFS/lib/libfdfsclient.so
/usr/lib/libfdfsclient.so

[root@localhost lib]# ln -s /usr/local/FastDFS/lib/libfdfsclient.so
/usr/lib64/libfdfsclient.so

停下服务:

#查询nginx主进程号

ps -ef | grep nginx

#终止进度

kill -QUIT 主进程号

#急迅甘休

kill -TERM 主进度号

#强制为止

pkill -9 nginx

重启:

/usr/local/nginx/sbin/nginx -s reload

五、配置tracker server:

1. vi /etc/fdfs/tracker.conf

bind_addr=192.168.227.128

base_path=/home/tracker/fastdfs

vi /etc/fdfs/client.conf

base_path=/home/tracker/fastdfs

tracker_server=192.168.20.200:22122

http.tracker_server_port=8080

2.布置防火墙:

iptables -I INPUT -p tcp -m state –state NEW -m tcp –dport 22122 -j

3.封存配置:

/etc/init.d/iptables save

4. 启动 tracker

/usr/local/FastDFS/bin/fdfs_trackerd /etc/fdfs/tracker.conf

在启动时报错:

/usr/local/bin/fdfs_trackerd: error while loading shared libraries:
libevent-2.0.so.5: cannot open shared object file: No such file or
directory

进行上面的命令即可正常启动:

echo ‘/usr/local/libevent-2.0.21/include/’ >> /etc/ld.so.conf

echo ‘/usr/local/libevent-2.0.21/lib/’ >> /etc/ld.so.conf

ldconfig

5. 翻看监听程序:

netstat -ntpl | grep fdfs

6. 查看日志文件:

cat /home/tracker/fastdfs/logs/trackerd.log

7.添加开机启动命令行:

vim /etc/rc.d/rc.local

/usr/local/FastDFS/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

六、配置storage server

1. vi /etc/fdfs/storage.conf

group_name=group1

bind_addr=192.168.227.130

base_path=/home/storage/fastdfs

store_path0=/home/storage/fastdfs

tracker_server=192.168.227.130:22122

http.server.port=80

2. cp /usr/local/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

3. vi /etc/fdfs/mod_fastdfs.conf

base_path=/home/storage1/fastdfs

group_name=group1

store_path0=/home/stroage1/fastdfs

tracker_server=192.168.227.128:22122

url_have_group_name = true

group_count = 0

4. vi /usr/local/nginx/conf/nginx.conf

location /group1/M00 {

root /home/storage1/fastdfs/data;

ngx_fastdfs_module;

}

5.计划防火墙:

iptables -I INPUT -p tcp -m state –state NEW -m tcp –dport 23000 -j
ACCEPT

6.封存配置:

/etc/init.d/iptables save

7.启动 storage

/usr/local/FastDFS/bin/fdfs_storaged /etc/fdfs/storage.conf

8. 查看监听程序:

netstat -ntpl | grep fdfs

9. 查看日志文件:

cat /home/storage/fastdfs/logs/storaged.log

七、测试:

/usr/local/FastDFS/bin/fdfs_test /etc/fdfs/client.conf upload
/etc/passwd

结果如下:

This is FastDFS client test program v4.06

Copyright (C) 2008, Happy Fish / YuQing

FastDFS may be copied only under the terms of the GNU General

Public License V3, which may be found in the FastDFS source kit.

Please visit the FastDFS Home
Pagehttp://www.csource.org/

for more detail.

[2014-06-03 20:26:21] DEBUG – base_path=/home/client/fastdfs,
connect_timeout=30, network_timeout=60, tracker_server_count=1,
anti_steal_token=0, anti_steal_secret_key length=0,
use_connection_pool=0, g_connection_pool_max_idle_time=3600s,
use_storage_id=0, storage server id count: 0

tracker_query_storage_store_list_without_group:

server 1. group_澳门金沙国际 ,name=, ip_addr=192.168.227.130, port=23000

group_name=group1, ip_addr=192.168.227.130, port=23000

storage_upload_by_filename

group_name=group1,
remote_filename=M00/00/00/wKjjglOOkd2AdZiiAAAFng0Nczs9728851

source ip address: 192.168.227.130

file timestamp=2014-06-03 20:26:21

file size=1438

file crc32=218985275

file
url:http://192.168.227.130/group1/M00/00/00/wKjjglOOkd2AdZiiAAAFng0Nczs9728851

storage_upload_slave_by_filename

group_name=group1,
remote_filename=M00/00/00/wKjjglOOkd2AdZiiAAAFng0Nczs9728851_big

source ip address: 192.168.227.130

file timestamp=2014-06-03 20:26:21

file size=1438

file crc32=218985275

file
url:http://192.168.227.130/group1/M00/00/00/wKjjglOOkd2AdZiiAAAFng0Nczs9728851\_big

在浏览器上开拓http://192.168.227.130/group1/M00/00/00/wKjjglOOkd2AdZiiAAAFng0Nczs9728851\_big

测试成功!!!

参考:

http://www.cnblogs.com/zhoulf/archive/2013/02/09/2909653.html

http://blog.csdn.net/yl\_wh/article/details/8784569

相关文章