想学习elasticsearch 可以用淘汰的很久的台式机安装Linux边搞边学习吗?

学习elasticsearch(一)linux环境搭建(2)——启动elasticsearch
时间: 23:23:54
&&&& 阅读:963
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&在启动访问es的过程中遇到了各种的奇葩问题。
1.网上各种版本的启动方式让人眼花缭乱不知如何启动。简单粗暴——到es的bin目录下直接 执行
./elasticsearch //显示启动,ctrl+c可停止,如要操作,换个终端
./elasticsearch -d 后台启动,可在当前终端继续操作
//后台启动,如要停止执行
kill -9 pid
//哈哈,直接杀掉进程
//搜索es进程pid可以酱紫
ps aux | grep elasticsearch
//注意,不确定那个是pid的话多执行几遍这个命令,看执行结果里不变的那个数字就是啦~
  成功后会看到酱紫的信息
然后测试一下
curl ‘http://localhost:9200’
 正常的话会出现酱紫的输出
好,目前为止一切正常,然后用ip访问的话却不通。我这是虚拟机,我在本机可以ping通虚拟机,但是无法访问es,在虚拟机里用ip访问也不行,提示 connection refused。
具体错误看图:
解决办法:找到es的config文件夹的elasticsearch.yml文件,编辑
vim config/elasticsearch.yml
& 找到network.host,冒号:后面跟一个空格,然后改成0.0.0.0
然后把最开头的#去掉,#是注释的意思最终变成酱紫
此处引用自:http://www.jianshu.com/p/d8 &感谢作者
OK,保存后重新启动es
嗯这时可能会报错。常见的比如
ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
  一般出现在这些位置
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]解决办法 此处引用自:http://blog.csdn.net/u/article/details/ 感谢原作者分享宝贵经验
另开一个终端用root操作
//输入密码....
[ ~]# cp /etc/security/limits.conf /etc/security/limits.conf.bak
[ ~]# cat /etc/security/limits.conf | grep -v "esadmin" & /tmp/system_limits.conf
[ ~]# echo "esadmin hard nofile 65536" && /tmp/system_limits.conf
[ ~]# echo "esadmin soft nofile 65536" && /tmp/system_limits.conf
[ ~]# mv /tmp/system_limits.conf /etc/security/limits.conf
 记得换成自己的es用户名,我的esadmin
最后问你要不要保存,输入yes
然后在你执行es的用户终端,退出你这个es用户,然后重新进入一下。不然更改不会生效!
//输入密码...
su esadmin然后验证ulimit -Hn65536//输出这个就算对了
  max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144] 解决办法 此处引用自:http://www.cnblogs.com/sloveling/p/elasticsearch.html。感谢原作者分享宝贵经验
切换到root用户修改配置sysctl.conf
vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:
然后,重新启动elasticsearch,即可启动成功。
  ok,现在重启es,如果成功了,基本就搞定了。
用localhost和ip分别访问。
哈哈,es! you,know,for Search !
&标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文地址:http://www.cnblogs.com/MLGB/p/7091676.html
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!最近由于要涉及一些安全运维的工作,最近在研究Elasticsearch,为ELK做相关的准备。于是把自己学习的一些随笔分享给大家,进行学习,在部署常用插件的时候由于是5.0版本的Elasticsearch踩了非常多的坑,写给大家避免大家再踩坑。Elasticsearch启动,5.0版本核心插件的安装。Elasticsearch的启动十分简单,只需要平时在Linux下运行即可:cdelasticse...
  最近由于要涉及一些安全运维的工作,最近在研究Elasticsearch,为ELK做相关的准备。于是把自己学习的一些随笔分享给大家,进行学习,在部署常用插件的时候由于是5.0版本的Elasticsearch踩了非常多的坑,写给大家避免大家再踩坑。
Elasticsearch启动,5.0版本核心插件的安装。
  Elasticsearch的启动十分简单,只需要平时在Linux下运行即可:
cd elasticsearch/bin
./elasticsearch &
  Elasticsearch有两个王牌的工具,一般大家都会用到。一个是head,一个是bigdesk。不过不幸的是目前最新的Elastic 5.x 系列,这两个工具都不能像之前一样插件化集成,但仍可以使用,需要一些特殊的方法。
  对于head工具,我们可以使用npm命令来来启动,并且由于Elasticsearch在5.0版本有严格的跨域限制,所以我们也需要修改Elasticsearch的跨域策略来允许head工具管理Elasticsearch。
  配置Elasticsearch文件下config文件夹下elasticsearch.yml文件,在配置末尾添加以下内容:
http.cors.enabled: true
http.cors.allow-origin: "*"
  同时head工具使用npm进行启动,无法进行插件化,具体方法如下:
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
  对于bigdesk由于也无法插件化集成,所以需要使用python来发布。
git clone https://github.com/hlstudio/bigdesk
cd bigdesk/_site/
python -m SimpleHTTPServer
Elasticsearch核心术语理解:
  这块是困扰我比较久的地方,查阅了很多资料,如果术语不能理解那么我们无法正确且合理的维护Elasticsearch集群,我是通过Head插件来进行学习和理解的。
  Node:我们可以理解为一台服务器和一个虚拟机,是集群的最小分配部分,一个Elasticsearch服务器可以为一个Node。同网段的Node可以通过head来发现并进行管理。
  Index:相当于一个索引,通常对应关系型数据库中的Database,我们将一大类通常分成一个Index。我们在使用head去创建Index的时候,我发现又存在两个关键名词需要理解。
  shards:为了提高查询效率,一个Index要被切成多份,分别存储在多个Node上,同时为了保证高可用,配置Index时候还需要配置replica。举个例子,对于一个Index可能有5个shards,然而万一这五个shards丢了怎么办,最朴素的思想是我把这5个shards再复制一份再分别保存到其他节点上。于是在Elasticsearch集群中我们经常看到这张图,我从网上找了一个生产环境的集群来理解。
  其中加粗的是分片是主分片,未加粗的分片是replica。作为备份。
  后续准备总结一下Elasticsearch常见的API,以及调用关系。
源文地址:https://www.guoxiongfei.cn/cntech/471.htmllinux安装elasticsearch部署配置教程
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用开发的,并作为Apache许可条款下的开放发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速的效果。
ElasticSearch作为一个主流的搜索引擎,其完整的使用流程包括:
(1)elasticsearch安装,配置ik分词器和pinyin插件;
(2)安装kibana管理es工具;
(3)安装logstash数据导入工具(导入工具可自行选择,该实例选择logstash导入工具)。
那么,本篇博客先介绍elasticsearch5.6.1在linux上的具体安装步骤。
1. 网上下载elasticsearch5.6.1的安装工具包;
2.在linux上选择一个安装目录解压,然后进行文件的配置;
3.首先进行elasticsearch.yml的配置,该文件位于config目录下,具体配置如下:
以下是配置集群,各属性配置说明,更多属性配置可自行添加
# ======================== Elasticsearch Configuration =========================
# NOTE: Elasticsearch comes with reasonable defaults for most settings.
Before you set out to tweak and tune the configuration, make sure you
understand what are you trying to accomplish and the consequences.
# The primary way of configuring a node is via this file. This template lists
# the most important settings you may want to configure for a production cluster.
# Please consult the documentation for further information on configuration options:
# https://www.elastic.co/guide/en/elasticsearch/reference/index.html
# ---------------------------------- Cluster -----------------------------------
cluster.name: elastic_cluster
# ------------------------------------ Node ------------------------------------
node.name: node1
# Add custom attributes to the node:
#node.attr.rack: r1
# ----------------------------------- Paths ------------------------------------
#节点数据存放目录地址;默认是在ELASTICSEARCH _HOME/data下面,可自定义
#path.data: /path/to/data
#logs日志存放目录地址,可自定义
#path.logs: /path/to/logs
# ----------------------------------- Memory -----------------------------------
#是否锁定内存,以下两个一般设置为false
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
# Make sure that the heap size is set to about half the memory available
# on the system and that the owner of the process is allowed to use this
# Elasticsearch performs poorly when the system is swapping the memory.
# ---------------------------------- Network -----------------------------------
# Set the bind address to a specific IP (IPv4 or IPv6):
#指定本机IP地址,自行修改为本机ip
network.host: 192.168.0.1
#指定本机http访问端口
http.port: 9200
#指定节点是否有资格被选举为主节点;默认true
node.master: true
#指定节点是否存储索引数据;默认true
node.data: true
# For more information, consult the network module documentation.
# --------------------------------- Discovery ----------------------------------
# Pass an initial list of hosts to perform discovery when new node is started:
# The default list of hosts is [&127.0.0.1&, &[::1]&]
#设置集群各节点的初始列表,默认第一个为主节点,如果不是配置集群,而是单机,以下参数可不进行配置
discovery.zen.ping.unicast.hosts: [&192.168.1.1&, &192.168.1.2&]
# Prevent the &split brain& by configuring the majority of nodes (total number of master-eligible nodes / 2 + 1):
#设置集群最大主节点数量;默认1,范围值为1-4
discovery.zen.minimum_master_nodes: 1
# For more information, consult the zen discovery module documentation.
# ---------------------------------- Gateway -----------------------------------
# Block initial recovery after a full cluster restart until N nodes are started:
#gateway.recover_after_nodes: 3
# For more information, consult the gateway module documentation.
# ---------------------------------- Various -----------------------------------
# Require explicit names when deleting indices:
#action.destructive_requires_name: true
#设置9200端口可以对外访问;比如head插件连es
http.cors.enabled: true
http.cors.allow-origin: &*&
4.配置文件配置好之后,很多时候我们都希望添加自定义的比较优秀分词器,比如ik分词器,以下是安装分词器等插件的
具体流程:
(1)网上下载已经编译好的ik分词器和pinyin插件(未编译好的,可自行编译),如果没找到资源,可选择该路径下载已经
编译好的分词器:elasticsearch-analysis-ik-5.6.1和elasticsearch-analysis-pinyin-5.6.1
(2)下载好分词器插件之后,在前面已经解压的elasticsearch文件夹里面有一个plugin文件夹,在这个文件夹下新建两个
文件夹,一个是ik,另一个是pinyin,然后分别将解压之后的elasticsearch-analysis-ik-5.6.1里面的所有文件复制到ik文件夹里面,
将解压之后的elasticsearch-analysis-pinyin-5.6.1里面的所有文件复制到pinyin文件夹里面,插件安装完成,当es启动的时候,
就会自动加载里面的插件;
5. 那么基本配置就完成了,接下来就是怎样去启动es了,启动方式也很简单,进入es的bin目录下,执行./elasticsearch -d 的后台
启动命令即可,然后执行命令ps aux|grep elasticsearch 查看是否有es进程,有则启动成功,没有则去logs目录下查看日志信息,
看看是什么原因导致启动失败;
6. 初次安装和配置启动es,当然会少不了报错,很正常不过的事,那么接下来这里会总结几个常见的错误以及解决方法,具体如下:
(1)root用户不允许启动es(官方说明是出于安全考虑)。首先在服务器创建一个新用户,授权。然后使用这个新用户启动es;
(2)JDK版本不兼容,或者太低。安装es的JDK必须1.8或以上,在不改变当前JDK环境变量的情况下,可以在bin目录下的elasticsearch
启动文件里面的头部新增如下命令(jdk1.8的linux版本如果没有需要自行下载,放到指定的路径下,然后java_home指定相应路径):
export JAVA_HOME=/usr/local/jdk1.8.0_121
export PATH=$JAVA_HOME/bin:$PATH
jdk1.8.0_121是自行下载的一个jdk版本,如果没有可自行下载;
(3)出现问题:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解决办法:切换root用户,进入到/etc/security/limits.conf
底部添加:
* hard nofile 65536
* soft nofile 65536
(4) 出现问题:max number of threads [1024] for user [es] is too low, increase to at least [4096]
解决办法:切换root用户,进入到/etc/security/limits.d/90-nproc.conf
将soft nproc 1024 修改成soft nproc 4096
(5)出现问题:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决办法:切换root用户, 进入/etc/sysctl.conf
添加vm.max_map_count=655360
执行命令:sysctl -p
(6)如果以上的修改完成之后,重新连接打开服务器,如果系统还不生效,则重启linux服务器,切换root账户,
执行:shutdown -r now命令,重启服务器(该命令需要慎重,会重启服务器);
以上就是elasticsearch5.6.1版本在linux系统上的安装,各个版本的安装方法基本是一样的,具体问题具体分析,不过按照上面的
解决方法一般都是可以启动es的,希望能对安装es还有疑问的程序猿有所帮助,接下来的博客会讲述kibana管理工具的安装和配置。Linux下ElasticSearch 安装配置及示例_服务器应用_Linux公社-Linux系统门户网站
你好,游客
Linux下ElasticSearch 安装配置及示例
来源:Linux社区&
作者:sinat_
开始学ElasticSearch,我习惯边学边记,总结出现的问题和解决方法。本文是在两台Linux虚拟机下,安装了三个节点。本次搭建es同时实践了两种模式&&单机模式和分布式模式。条件允许的话,可以在多台机器上配置es节点,如果你机器性能有限,那么可以在一台虚拟机上完成多节点的配置。
如图,是本次3个节点的分布。
虚拟机主机名IPes节点
192.168.137.100
node1、node3
192.168.137.101
一、下载及配置
1.几个基本名词
index: es里的index相当于一个数据库。 type: 相当于数据库里的一个表。 id: 唯一,相当于主键。 node:节点是es实例,一台机器可以运行多个实例,但是同一台机器上的实例在配置文件中要确保http和tcp端口不同(下面有讲)。 cluster:代表一个集群,集群中有多个节点,其中有一个会被选为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。 shards:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上,构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。 replicas:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当个某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。
名称版本下载地址
elasticsearch
下载后,放到你的目录下并解压. 因为我们要配置包含三个节点的集群,可以先将其重命名为elasticsearch-node1。比如我的是 /home/zkpk/elasticsearch-node1。
3.修改配置文件
(1) 初步修改 打开/home/zkpk/elasticsearch-node1/config目录下的elasticsearch.yml 文件 ,修改以下属性值并取消该行的注释:
cluster.name:
elasticsearch
#这是集群名字,我们 起名为 elasticsearch。es启动后会将具有相同集群名字的节点放到一个集群下。
node.name: "es-node1"
#节点名字。
covery.zen.minimum_master_nodes: 2
#指定集群中的节点中有几个有master资格的节点。对于大集群可以写3个以上。
discovery.zen.ping.timeout: 40s
#默认是3s,这是设置集群中自动发现其它节点时ping连接超时时间,为避免因为网络差而导致启动报错,我设成了40s。
discovery.zen.ping.multicast.enabled: false
#设置是否打开多播发现节点,默认是true。
network.bind_host: 192.168.137.100
#设置绑定的ip地址,这是我的master虚拟机的IP。
network.publish_host: 192.168.137.100
#设置其它节点和该节点交互的ip地址。
network.host: 192.168.137.100
#同时设置bind_host和publish_host上面两个参数。
discovery.zen.ping.unicast.hosts: ["192.168.137.100",
"192.168.137.101","192.168.137.100:9301"]
#discovery.zen.ping.unicast.hosts:["节点1的 ip","节点2 的ip","节点3的ip"]
指明集群中其它可能为master的节点ip,以防es启动后发现不了集群中的其他节点。第一对引号里是node1,默认端口是9300。第二个是 node2 ,在另外一台机器上。第三个引号里是node3,因为它和node1在一台机器上,所以指定了9301端口。
(2) 进一步修改 拷贝 elasticsearch-node1 整个文件夹,两份,一份elasticsearch-node2,一份elasticsearch-node3. 将elasticsearch-node2 文件夹copy到另外一台IP为192.168.137.101的机器上。而在 192.168.137.100 机器上有 node1和node3.
对于node3: node3和node1在一台机器上,node1的配置文件里端口默认分别是,所以要改一下node3配置文件里的端口,elasticsearch.yml 文件修改如下:
node.name: "es-node3"
transport.tcp.port: 9301
http.port: 9201
对于node2: 对 elasticsearch.yml 修改如下
node.name: "es-node2"
network.bind_host: 192.168.137.101
network.publish_host: 192.168.137.101
network.host: 192.168.137.101
注意: 1.对于单机多节点的es集群,一定要注意修改 transport.tcp.port 和http.port 的默认值保证节点间不冲突。 2. 出现找不到同一集群中的其他节点的情况,检查下 discovery.zen.ping.unicast.hosts 是否已设置。
编辑 /home/zkpk/elasticsearch-1.7.3/bin/elasticsearch.in.sh, 设置 ES_MIN_MEM和ES_MAX_MEM,确保二者数值一致,或者可以在启动es时指定,
[zkpk@master ~]$ cd ~/elasticsearch-node1/bin
[zkpk@master bin]$ ./elasticsearch -Xms512m -Xmx512m
若想让es后台运行,则
[zkpk@master bin]$ ./elasticsearch -d -Xms512m -Xmx512m
前台运行:可以通过&CTRL+C&组合键来停止运行 后台运行,可以通过&kill -9 进程号&停止.也可以通过REST API接口:
curl -XPOST http:
来关闭整个集群,通过:
curl -XPOST http:
来关闭单个节点.
三、插件及其安装
BigDesk Plugin : 对集群中es状态进行监控。 Elasticsearch Head Plugin: 对ES进行各种操作,如查询、删除、浏览索引等。
进入到节点elasticsearch-node1/bin路径,并安装插件。
[zkpk@master bin]$ ./plugin -install mobz/elasticsearch-head
2. 安装bigdesk
[zkpk@master bin]$ ./plugin -install lukas-vlcek/bigdesk
让我们看下es页面吧~~
打开head浏览,浏览器输入http://192.168.137.100:9200/_plugin/head/ ,如图,
每个小方块就是索引分片,可以看到每个索引被分成几个分片,每个分片还有它的备份分片,然后存储在三个节点上。粗框的是主分片,细框的是备份分片。
四、添加索引
现在我们来添加一个索引记录吧~
1.可以在命令窗口通过命令来添加
curl -XPUT 'http://主机IP:9200/dept/employee/32' -d '{ "empname": "emp32"}'
2.我们可以在页面上通过JSON添加
(1)点击 复合查询[+] ,我们可以在 megacorp 索引 (相当于数据库名)的 employee 类型(相当于表名)下新增一个id为2的人的信息。
点击下方的 提交请求 按钮,页面右方有回馈信息,&created&代表是否为新建。添加成功。
点击 浏览数据 ,在左侧 索引 下选择 megacorp,如图,
可以看到,一条id为2的记录被添加了。
(2)下面我们修改id为2 的人的年龄为15,把about 信息去掉,并且加一项兴趣。
提交后,右侧有反馈信息,&created&为 false,因为我们这次不是新建而是修改。
返回浏览数据,id为2 的记录,年龄、兴趣等均已发生变化。
Elasticsearch 教程系列文章:&
Linux上安装部署ElasticSearch全程记录&
Elasticsearch安装使用教程
ElasticSearch 配置文件译文解析
ElasticSearch的工作机制& &
Elasticsearch的安装,运行和基本配置
使用Elasticsearch + Logstash + Kibana搭建日志集中分析平台实践&
14.04搭建ELK日志分析系统(Elasticsearch+Logstash+Kibana)
Elasticsearch1.7升级到2.3实践总结&
Ubuntu 14.04中Elasticsearch集群配置&
Elasticsearch-5.0.0移植到Ubuntu 16.04
ElasticSearch 5.2.2 集群环境的搭建&
Linux下安装搜索引擎Elasticsearch&
上安装 ElasticSearch 详解&
ElasticSearch 的详细介绍:ElasticSearch 的下载地址:&
本文永久更新链接地址:
相关资讯 & & &
& (06月13日)
& (04月14日)
& (07月12日)
& (05月25日)
& (10/30/:52)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款官方惯例开头
Elasticsearch是一个实时分布式搜索和分析引擎。它让你以前所未有的速度处理大数据成为可能。
(这一节不打算介绍相关概念的东西,主要还是准备记录一下开始学习或者使用ES之前的准备)
相关软件:
VirtualBox(不记得版本了)
SecureCRT(破解不破解自己看着办)
JDK1.7以上(我用的8)
elasticsearch-2.1.1
从这里开始
&一、打开VirtualBox,新建一台虚拟机,然后一路点击下去吧
二、配置完成后,开始安装CentOS,可视化安装,没什么坑,一路根据需要点下去,建议选择英文版、终端版的
三、安装完成后,需要进行网络设置。网络设置需要关注两个方面:
能够通过本机使用SecureCRT
能够让虚拟机连接外网
Step1、关闭虚拟机,打开设置-》网络 界面,开启两个网卡,网卡1为网络地址转换(NAT),用于连接外网;网卡2为Host-Only,用于本机连接虚拟机,设置如下图:
Step2、打开网络共享中心-》更改适配器设置,将无线网卡的网络共享给VBox的虚拟网卡,让虚拟网卡也具备上网的能力,然后查看虚拟网卡IP地址:
Step3、重新启动虚拟机,使用root用户登录,编辑两块网卡的配置,eth0使用DHCP模式;eth1(需要新建)使用STATIC模式,IP地址需要和虚拟网卡在一个网段上。需要注意红框的地方。配置如下:
Step4、使用命令service network restart重启网络服务
Step5、使用ping测试主机与虚拟机、虚拟机与虚拟机、虚拟机与www.baidu.com之间是否能ping通(显而易见的可以啊)
四、新建一个用户es(我的是hadoop,习惯了);安装rssz: yum install lrzsz ;安装zip:yum install zip unzip
五、关闭防火墙
vi /etc/sysconfig/selinux
SELinux=disabled
sudo service iptables stop
sudo chkconfig iptables off
&六、上边都是废话,现在正式开始搭建ElasticSearch环境
Step1、rz上传es的安装包
Step2、解压安装包
Step3、vi&elasticsearch-2.1.1/config/elasticsearch.yml,找到network.host,修改为该虚拟机的IP(默认localhost,本机就无法访问)
Step4、elasticsearch-2.1.1/bin/elasticsearch -d 启动es
Step5、使用命令curl 'http://192.168.137.200:9200/?pretty' 进行测试,若看到如下结果(name和cluster_name可以修改,后面介绍),安装成功;否则返回上面看
"name" : "node-1",
"cluster_name" : "my-es",
"version" : {
"number" : "2.1.1",
"build_hash" : "40e2c53a6b6c46e450e66f4375bd71",
"build_timestamp" : "T13:05:55Z",
"build_snapshot" : false,
"lucene_version" : "5.3.1"
"tagline" : "You Know, for Search"
好吧, 其中ES的安装过程非常简洁,主要还是注意一些配置是否合适。另外ES的插件有不少,可以先安装一个head插件,用于集群监控:
elasticsearch/bin/plugin install mobz/elasticsearch-head
阅读(...) 评论()}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信