如何使用ES,错误与解决方案

apache服务是一个最常用的服务之一,以为现在人们获取信息的主要方式主要是通过
 浏览网页,因此apache服务是服务中主要的一个应用。
 首先apache服务主要的安装
 源码安装或者rpm包安装
 一下使用的是rpm安装的方式:
 我这里使用本地的yum源安装
 一、简单的安装和配置
 #yum install httpd
 #service httpd start //启动http服务
 # echo “hello” > /var/www/html/index.html
 然后在浏览器中输入
 如果你做了一个本地缓存DNS的话,也可以使用域名直接访问
 或者使用一下命令也能访问
 #curl or #curl
 #service httpd status //查看httpd的运行状态
 #netstat -tnl | grep :80 //查看使用的端口号
 #httpd -t or service httpd configtest 测试
 
 apache多道处理模块
   perfork(进程模式:每一个用户独立的进程)
   worker(线程模式:开两个进程,用户在进程区域中开辟新的线程)
  
RedHat常使用prefirk
 二、UserDir,用户可以访问自己家目录下的网站
   在家目录上给apache用户执行的权限,然后访问
  
   #vim /etc/httpd/conf/httpd.conf
      UserDir enable redhat,student
      UserDir  public_html
   #mkdir /home/redhat/public_html
   #mkdir /home/student/public_html
   #echo “redhat userdir page test”
>/home/redhat/public_html/index.html
   #echo “student userdir page test”
>/home/student/public_html/index.html
   #setfacl -m u:apache:x /home/redhat
   #setfacl -m u:apache:x /home/student
   #setenforce 0 //关闭selinux
  
在浏览器中输入
 三、Alias路径下的别名
   Alias /aa “/PATH/index.html”  
   然后通过
   #vim /etc/httpd/conf/httpd.conf
    Alias /ro “/www/web/”
   #mkdir -pv /www/web
   #echo “alias test page” >/www/web/index.html
   #setenforce0
   #service httpd restart
   在浏览器中输入
 四、基于用户名认证的网站
   web认证的方式:文本文件,表单,mysql,ldap;加密方式有basic,md5
  
通过设置认证网站,来增强网站的安全性,只有通过认证的的用户才有权限访问
   网站。
   具体步骤如下:
   #vim /etc/httpd/conf/httpd.conf
    添加如下内容
     <Directory “/www/web”>
       AllowOverride Authconfig
       AuthName “Auth web”                     //提示信息
       AuthType basic                          //加密方式
       AuthUserFile /etc/httpd/conf/.webuser   //认证用户文件
       Require User user1                      //允许认证的用户
     </Directory>
   #htpasswd -c -m /etc/httpd/conf/.webuser user1 
//创建.webuser文件,添加用户
   输如新密码
   #htpasswd -m /etc/httpd/conf/.webuser user2  //添加用户
   输入新密码
   #setenforce 0
   如果想设置组认证,需要在文件中添加如下内容
    #vim /etc/httpd/conf/.webgrps
      mygrp: user1 user2 。。。
    #groupadd mygrp
      <Directory “/www/web”>
       AllowOverride Authconfig
       AuthName “Auth web”                     //提示信息
       AuthType basic                          //加密方式
       AuthUserFile /etc/httpd/conf/.webuser   //认证用户文件
       AuthGroupFile /etc/httpd/conf/.webgrps
       Require group mygrp                      //允许认证的用户组
     </Directory>  
  
由于我是借用上面的别名网站,所以直接在浏览器中输入
   提示用户输入帐号和密码
   关于htpasswd的用法:
     htpasswd   创建apache认证用户的帐号和密码
         -c 创建
         -m 使用MD5加密
         -D 删除用户
 五、虚拟主机
   1、基于端口的虚拟主机
      #vim /etc/httpd/conf/httpd.conf
        添加如下内容:
         </VirtualHost *:80>
          DocumentRoot “/www/web/web1”
          ServerName  www.linuxidc.com
         </VirtualHost>
         </VirtualHost *:8080>
          DocumentRoot “/www/web/web2”
          ServerName  www.linuxidc.com
         </VirtualHost>          
       同时把DocumentRoot “/var/www/html”给注释掉
       #mkdir -vp /www/web/web{1,2}
       #echo “web1” > /www/web/web1/index.html
       #echo “web2” >/www/web/web2/index.html
      
然后在浏览器中访问
       测试(注:我这做了DNS服务器,解析www.linuxidc.com)
   2、基于IP的虚拟主机
       #vim /etc/httpd/conf/httpd.conf
        添加如下内容:
         </VirtualHost 192.168.1.103:80>
          DocumentRoot “/www/web/web1”
          ServerName  www.linuxidc.com
         </VirtualHost>
         </VirtualHost 192.168.1.104:80>
          DocumentRoot “/www/web/web2”
          ServerName  www.linuxidc.com
         </VirtualHost>          
       同时把DocumentRoot “/var/www/html”给注释掉
       #mkdir -vp /www/web/web{1,2}
       #echo “web1” > /www/web/web1/index.html
       #echo “web2” >/www/web/web2/index.html
       #ifconfig eth0:0 192.168.1.103/24
       #ifconfig eth0:1 192.168.1.104/24
      
然后在浏览器中输入
   3、基于域名的虚拟主机
      假如我这里使用linuxidc.com和linuxidc.cn两个主机名
      那么一下的配置如下:
      NameServer *:80
       #vim /etc/httpd/conf/httpd.conf
        添加如下内容:
         </VirtualHost 192.168.1.103:80>
          DocumentRoot “/www/web/web1”
          ServerName  web1.linuxidc.com
         </VirtualHost>
         </VirtualHost 192.168.1.104:80>
          DocumentRoot “/www/web/web2”
          ServerName  web2.linuxidc.com
         </VirtualHost>          
       同时把DocumentRoot “/var/www/html”给注释掉
       #mkdir -vp /www/web/web{1,2}
       #echo “web1” > /www/web/web1/index.html
       #echo “web2” >/www/web/web2/index.html     
       #service httpd reload
     
这样在浏览其中分别输入
      如果你没有DNS服务器的话,可以在C:\Windows\System32\drivers\etc
添加解析名字
      格式如下:
      IP DOMAINNAME
      192.168.1.103 web1.linuxidc.com
      192.168.1.103 web2.linuxidc.com
      #httpd -S 查看使用的虚拟主机情况
六、cgi 通用网关接口 
      #vim /etc/httpd/conf/httpd.conf
      找到ScriptAlias  /cgi-bin/ “/var/www/cgi-bin/”
这是系统默认定义好的
      一个,cgi的位置。
      接下来就���上面的目录中创建一个a.cgi的脚本
      #cd /var/www/cgi-bin/
      #vim a.cgi
        #!/bin/bash
        echo -e “Content-type: text/html\n\n”
       
        echo “The current time is:`date`”
      #chmoe +x a.cgi
      然后在浏览器中输入
七、ssl实现https
      ssl机制应用到http支持https
      要想支持ssl现状模块mod_ssl
      #yum install mod_ssl
      创建一个ca
      #cd /etc/pki/CA
      #openssl genrsa 1024 > private/cakey.pem
      #chmoe 700 !$
      #vim /etc/pki/tls/openssl.cnf修改如下
       dir             = /etc/pki/CA 
      #openssl req -new -x509 -key private/cakey.pem -out cacert.pem
-days 3650
      #mkdir certs newcerts crl
      #touch index.txt
      #echo 01 > serial
      #cd /etc/httpd/conf/
      #mkdir ssl
      #cd ssl
      #(umask 077;openssl genrsa 1024 > httpd.key)
      #openssl req -new -key httpd.key -out httpd.csr  证书请求
      #
      #openssl ca -in httpd.csr -out httpd.crt -days 3650
      把上面生成的cacert.pem改名为cacert.crt并导入浏览器中
     
“工具”–>Internet选项–>内容–>证书–>受信任的根证书颁发机构–>导入就行了
      #cd /etc/httpd/conf.d/
      #vim ssl.conf修改一下几项
        DocumentRoot “/www/web/web1”
        ServerName web1.linuxidc.com:443
        SSLCertificateFile /etc/httpd/ssl/httpd.crt
        SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
      保存就可以了
      #httpd -S
      #netstat -ntul |grep :443查看端口是否启用
     
然后在浏览器中输入
一个小锁,呵呵,这就是效果,如果不把ca的证书导入到浏览器中,在你打开网页的时候
会有个提示的。 
图片 1

C#如何使用ES,

Elasticsearch简介

Elasticsearch (ES)是一个基于Apache
Lucene(TM)的开源搜索引擎,无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。 

但是,Lucene只是一个库。想要发挥其强大的作用,你需使用C#将其集成到你的应用中。Lucene非常复杂,你需要深入的了解检索相关知识来理解它是如何工作的。 
Elasticsearch是使用Java编写并使用Lucene来建立索引并实现搜索功能,但是它的目的是通过简单连贯的RESTful
API让全文搜索变得简单并隐藏Lucene的复杂性。 
不过,Elasticsearch不仅仅是Lucene和全文搜索引擎,它还提供:

  • 分布式的实时文件存储,每个字段都被索引并可被搜索
  • 实时分析的分布式搜索引擎
  • 可以扩展到上百台服务器,处理PB级结构化或非结构化数据

而且,所有的这些功能被集成到一台服务器,你的应用可以通过简单的RESTful
API、各种语言的客户端甚至命令行与之交互。上手Elasticsearch非常简单,它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。它开箱即用(安装即可使用),只需很少的学习既可在生产环境中使用。Elasticsearch在Apache
2 license下许可使用,可以免费下载、使用和修改。 
随着知识的积累,你可以根据不同的问题领域定制Elasticsearch的高级特性,这一切都是可配置的,并且配置非常灵活。

以上内容来自 [百度百科] 

关于ES详细概念见:

 

使用C#操作ES

NEST是一个高层的客户端,可以映射所有请求和响应对象,拥有一个强类型查询DSL(领域特定语言),并且可以使用.net的特性比如协变、Auto
Mapping Of
POCOs,NEST内部使用的依然是Elasticsearch.Net客户端。elasticsearch.net(NEST)客户端提供了强类型查询DSL,方便用户使用,源码下载。

rsync 错误与解决方案:

一、如何安装NEST

打开VS的工具菜单,通过NuGet包管理器控制台,输入以下命令安装NEST

Install-Package NEST

安装后引用了以下三个DLL

Elasticsearch.Net.dll(2.4.4)
Nest.dll(2.4.4)
Newtonsoft.Json.dll(9.0版本)

问题一:
@ERROR: chroot failed
rsync error: error starting client-server protocol (code 5) at
main.c(1522) [receiver=3.0.3]

二、链接elasticsearch

你可以通过单个节点或者指定多个节点使用连接池链接到Elasticsearch集群,使用连接池要比单个节点链接到Elasticsearch更有优势,比如支持负载均衡、故障转移等。

通过单点链接:

1 var node = new Uri("http://myserver:9200");
2 var settings = new ConnectionSettings(node);
3 var client = new ElasticClient(settings);

 

通过连接池链接:

 1 var nodes = new Uri[]
 2 {
 3     new Uri("http://myserver1:9200"),
 4     new Uri("http://myserver2:9200"),
 5     new Uri("http://myserver3:9200")
 6 };
 7 
 8 var pool = new StaticConnectionPool(nodes);
 9 var settings = new ConnectionSettings(pool);
10 var client = new ElasticClient(settings);

 

原因:
服务器端的目录不存在或无权限,创建目录并修正权限可解决问题。

 NEST Index

为了知道请求需要操作哪个索引,Elasticsearch
API期望收到一个或多个索引名称作为请求的一部分。

问题二:
@ERROR: auth failed on module tee
rsync error: error starting client-server protocol (code 5) at
main.c(1522) [receiver=3.0.3]

一、指定索引

1、可以通过ConnectionSettings使用.DefaultIndex(),来指定默认索引。当一个请求里没有指定具体索引时,NEST将请求默认索引。

1 var settings = new ConnectionSettings()
2     .DefaultIndex("defaultindex");

2、可以通过ConnectionSettings使用.MapDefaultTypeIndices(),来指定被映射为CLR类型的索引。

1 var settings = new ConnectionSettings()
2     .MapDefaultTypeIndices(m => m
3         .Add(typeof(Project), "projects")
4     );

 

注意:通过.MapDefaultTypeIndices()指定索引的优先级要高于通过.DefaultIndex()指定索引,并且更适合简单对象(POCO)

3、另外还可以显示的为请求指定索引名称,例如:

1 var response = client.Index(student, s=>s.Index("db_test"));
2 var result = client.Search<Student>(s => s.Index("db_test"));
3 var result = client.Delete<Student>(null, s => s.Index("db_test"));
4 ……

 

注意:当现实的为请求指定索引名称时,这个优先级是最高的,高于以上两种方式指定的索引。

4、一些Elasticsearch
API(比如query)可以采用一个、多个索引名称或者使用_all特殊标志发送请求,请求NEST上的多个或者所有节点

 1 //请求单一节点
 2 var singleString = Nest.Indices.Index("db_studnet");
 3 var singleTyped = Nest.Indices.Index<Student>();
 4 
 5 ISearchRequest singleStringRequest = new SearchDescriptor<Student>().Index(singleString);
 6 ISearchRequest singleTypedRequest = new SearchDescriptor<Student>().Index(singleTyped);
 7 
 8 //请求多个节点
 9 var manyStrings = Nest.Indices.Index("db_studnet", "db_other_student");
10 var manyTypes = Nest.Indices.Index<Student>().And<OtherStudent>();
11 
12 ISearchRequest manyStringRequest = new SearchDescriptor<Student>().Index(manyStrings);
13 ISearchRequest manyTypedRequest = new SearchDescriptor<Student>().Index(manyTypes);
14 
15 //请求所有节点
16 var indicesAll = Nest.Indices.All;
17 var allIndices = Nest.Indices.AllIndices;
18 
19 ISearchRequest indicesAllRequest = new SearchDescriptor<Student>().Index(indicesAll);
20 ISearchRequest allIndicesRequest = new SearchDescriptor<Student>().Index(allIndices);

 

原因:
服务器端该模块(tee)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败。
提供正确的用户名密码解决此问题。

二、创建索引

Elasticsearch API允许你创建索引的同时对索引进行配置,例如:

1 var descriptor = new CreateIndexDescriptor("db_student")
2     .Settings(s => s.NumberOfShards(5).NumberOfReplicas(1));
3 
4 client.CreateIndex(descriptor);

 

这里指定了该索引的分片数为5、副本数为1。

问题三:
@ERROR: Unknown module ‘tee_nonexists’
rsync error: error starting client-server protocol (code 5) at
main.c(1522) [receiver=3.0.3]

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:
网站地图xml地图