目前基于一个ES的应用开发接近完成,须要将App部署到线上进行测试。因为在本地开发是用的Docker,因此切换到线上还须要在Linux(ubuntu16LTS)中在安装一些必要到应用。为了往后方便,因而便有了这个笔记。java
由于众所周知的缘由,直接实用原厂资源连接去下载应用程序,速度上面会比较慢,因此预先选择一个速度较快的国内镜像以减轻等待过程的痛苦。linux
以 ubuntu 16.04LTS 在阿里云的镜像,编辑 /etc/apt/sources.list 文件,注释掉原来的内容,更换为如下内容:数据库
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
复制代码
保存后,更新缓存 sudo apt updatebootstrap
若是是在已经有的系统中安装ES,最好现将原系统盘备份。后面安装过程须要修改一些系统参数,万一改坏了,还能还原。(备份过程略)ubuntu
java -version
复制代码
若是已经有了Java环境,跳过这一步。缓存
sudo apt-get update
sudo apt-get install openjdk-8-jdk
java -version
复制代码
以当前最新版本为例:安全
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.6.0-linux-x86_64.tar.gz
# 解压
tar -vxsf elasticsearch-6.6.0.tar.gz
tar -vxsf kibana-6.6.0-linux-x86_64.tar.gz
复制代码
在两个应用在config目录下,均有同名的yml配置文件。能够配置诸如:数据库、日志路径,服务绑定地址、端口号等信息。bash
若是Es服务的绑定地址是本机内部(127.0.0.1),那么直接能够启动了。若是是外部可访问地址(0.0.0.0),那么须要修改虚拟内存。不然会报告虚拟内存太小,并终止程序继续运行。服务器
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
复制代码
处理方法: 修改/etc/sysctl.conf文件,加入网络
vm.max_map_count=262144
不须要重启,运行:
sysctl -w vm.max_map_count=262144
ES不容许以root的身份去运行,这样一旦因配置问起形成安全漏洞,会致使整个服务器的安全隐患。因此,若是当前是root帐户,须要创建一个别的帐户以启动
# 建立组
groupadd elsearch
# 建立用户
useradd elsearch –g elsearch –p elsticsearch
# ES的权限修改,记得还要修改数据库和日志目录
chown –R elsearch:elsearch ./ElasticSearch
复制代码
在bin目录下的同名可执行文件,即是应用程序的启动文件。直接之后台方式运行便可。
最后,将es和kb的启动命令加入 rc.local 每次随服务器重启而自动启动服务。
除了配置防火墙,将二者默认端口 9200和5601放行以外,还须要留意的是ES的API能够根据项目的运行环境制定一个合适的策略。当前项目的搜索都是经过程序内的业务逻辑,调用ES的搜索API进行,并不须要直接对外。因此绑定的9200端口不须要暴露在公网上。
而Kb服务并非一直须要,只有在刚刚开始运行或者遇到问题的时候才须要。这个时候能够将KB配置为绑定外部IP,可是能够不启动这个服务。或者防火墙配置可访问的5601端口的请求IP为本公司网络IP。