参考: http://ssdb.io/docs/install.html

第一步: 下载并编译安装

wget --no-check-certificate https://github.com/ideawu/ssdb/archive/master.zip
unzip master
cd ssdb-master
make
# optional, install ssdb in /usr/local/ssdb  // 默认
sudo make install

复制脚本

cd tools/
cp ssdb.sh /etc/init.d/ssdb
chmod u+x /etc/init.d/ssdb
chkconfig ssdb on            # for centos 
update-rc.d -f ssdb defaults # for ubuntu

配置

mkdir -p /data/ssdb/test/
cp ssdb.conf /data/ssdb/test/ssdb.conf
mkdir /data/ssdb_data/qinzi/var
vi /data/ssdb/test/ssdb.conf 
service ssdb start

测试

/usr/local/ssdb/ssdb-cli 
set 1 1
get 1

我在使用 Elasticsearch 进行search 查询的过程中,出现了 Result window is too large 问题。

这里简单做一个报错复现:

In [1]: import requests
In [2]: requests.get('http://127.0.0.1:9200/cmdb-now/_search?page=1&size=10000000').json()
Out[2]:
{u'error': {u'failed_shards': [{u'index': u'cmdb-now',
    u'node': u'ldeZMZRAR6uZpAiIr5QxBQ',
    u'reason': {u'reason': u'Result window is too large, from + size must be less than or equal to: [10000] but was [10000000]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level parameter.',
     u'type': u'query_phase_execution_exception'},
    u'shard': 0}],
  u'grouped': True,
  u'phase': u'query',
  u'reason': u'all shards failed',
  u'root_cause': [{u'reason': u'Result window is too large, from + size must be less than or equal to: [10000] but was [10000000]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level parameter.',
    u'type': u'query_phase_execution_exception'}],
  u'type': u'search_phase_execution_exception'},
 u'status': 500}

从上面的报错信息,可以看到ES提示我结果窗口太大了,目前最大值为10000,而我却要求给我10000000。并且在后面也提到了要求我修改index.max_result_window参数来增大结果窗口大小。

我google了修改方法,命令如下:

curl -XPUT http://127.0.0.1:9200/cmdb-now/_settings -d '{ "index" : { "max_result_window" : 100000000}}'

cmdb-now 是我ES索引的名字。

有关官方针对 index 的相关配置介绍,可以点击这里进行查看。

比如 server 表有许多 server 信息, 其中 server_name 为 M1, M2, A2 这样, 希望优先按照 字母排序,然后按照后面的数字排序,实现方法如下:

SELECT * FROM server ORDER BY LEFT(server_name,1) desc, MID(server_name,2)+0; 实际效果为先按该字段server_name第一个字符排序a-z,再按后面的数字进行排序.

安装certbot

不同的操作系统,不同的http服务器,所使用的安装方式会有所不同,详情请参考 https://certbot.eff.org/ 

生成证书

生成证书,有两种模式,standalone模式和webroot模式, standalone 模式虽然可以配置好服务器,但是以后 Renew 的时候,需要让服务停止一下,再启动。因此推荐使用 Webroot 配置模式。

因为,CertBot在验证服务器域名的时候,会生成一个随机文件,然后CertBot的服务器会通过HTTP访问你的这个文件,因此要确保你的Nginx配置好,以便可以访问到这个文件。

改你的服务器配置,在server模块添加:

location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /usr/share/nginx/html;
}

location = /.well-known/acme-challenge/ {
return 404;
}

接着重新加载Nginx配置:

sudo service nginx reload

然后在命令行输入:

sudo certbot certonly --webroot -w /usr/share/nginx/html/ -d your.domain.com

该命令成功执行之后,会在 /etc/letsencrypt 目录下生成证书相关文件。

配置证书

这里仅给出最简单的例子, 更加详尽的配置和 letsencrypt 无关,而主要是和如何配置 https 相关

server {
        listen 443 ssl;
        listen [::]:443 ssl ipv6only=on;

        ssl_certificate /etc/letsencrypt/live/your.domain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/your.domain.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/your.domain.com/chain.pem;
        
        // ... other settings ...
}

详细例子请参考: https://letsecure.me/secure-web-deployment-with-lets-encrypt-and-nginx/

更新证书

先在命令行模拟证书更新:

sudo certbot renew --dry-run

既然模拟成功,我们就使用crontab -e的命令来启用自动任务,命令行:

sudo crontab -e

添加配置:

30 2 * * 1 /usr/bin/certbot renew  >> /var/log/le-renew.log

上面的执行时间为:每周一半夜2点30分执行renew任务。

你可以在命令行执行/usr/bin/certbot renew >> /var/log/le-renew.log看看是否执行正常,如果一切OK,那么我们的配置到此结束!

renew 遇到错误

WARNING:letsencrypt.client:Registering without email!

此时使用如下命令:

letsencrypt renew --dry-run -m YOURMAIL --agree-tos

resource