ubuntu16.04 的elasticsearch 无法用systemctl 启动

解决Ubuntu系统下使用apt-get安装的Elasticsearch服务无法通过systemctl启动的问题。可通过修改所有者为root或更改为elasticsearch用户。

具体情况

这个错误一般是ubuntu中使用 apt-get install 安装的elastic search 有可能出现这种问题
现象是,直接运行 /usr/share/elasticsearch/bin/elasticsearch是可以正常启动的,但是systemctl start elasticsearch.service 无效,/var/log/elasticsearch下没有任何log

原因

ubuntu 的apt 库打包的运行配置文件是有问题的,
/etc/default/elasticsearch

# Run Elasticsearch as this user ID and group ID
# ES_USER=elasticsearch
# ES_GROUP=elasticsearch

1

  • 一个方法是,把 elasticsearch 改为root (不推荐,会有安全问题)

/etc/default/elasticsearch

# Start Elasticsearch automatically
# START_DAEMON=true 

# Run Elasticsearch as this user ID and group ID
 ES_USER=root
 ES_GROUP=root
  • 另外一个方法是,把 /usr/share/elasticsearch/ 这个目录的owner 和 group改成elasticsearch
 sudo chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/

由于默认user和 group 都是 elasticsearch ,所以不用改 /etc/default/elasticsearch

验证

curl localhost:9200

相关

/etc/default/elasticsearch 文件中

# Start Elasticsearch automatically
 START_DAEMON=true #这句看起来像是开机启动,所以我自己的情况改不改影响不太大

# Heap Size (defaults to 256m min, 1g max)
 ES_HEAP_SIZE=2g # 如果机器内存只有2g,建议改成1g吧。。。喂喂,上面的注释明明说最大1g


  1. https://stackoverflow.com/questions/48380051/why-is-elasticsearch-starting-manually-but-not-starting-as-a-service-on-ubuntu-1/48390311#48390311 ↩︎

<think>好的,用户想知道在Ubuntu系统上如何启动Elasticsearch服务。首先,我需要回忆一下之前看到的引用内容。引用[1]里提到有两种启动方式:使用service命令或者直接运行elasticsearch的二进制文件并加上-d参数作为守护进程。引用[2]和[3]主要是关于安装和依赖的信息,可能和启动步骤有关联,但用户的问题集中在启动过程。 接下来,我应该分步骤说明启动方法。首先确认用户是否已经安装了Elasticsearch,因为如果没安装的话,启动会失败。不过用户可能已经完成安装,所以直接进入启动步骤。需要提到两种方法:一种是使用systemctl的系统服务命令,适用于使用systemd的系统(比如Ubuntu 16.04及以上)。另一种是直接运行二进制文件,适合旧版本或者没有systemd的情况。 同时需要注意权限问题,可能需要使用sudo来执行这些命令。另外,启动后如何验证服务是否运行,比如用curl访问本地端口或者查看服务状态。还要提醒用户检查配置文件,比如elasticsearch.yml中的网络设置,尤其是如果用户需要远程访问的话。 用户可能遇到的问题包括权限不足、Java环境未正确安装、或者端口冲突。不过用户的问题集中在启动步骤,可能不需要深入这些故障排除,但可以稍微提及需要Java环境作为依赖,确保安装正确。另外,引用[2]提到Elasticsearch是分布式的,可能需要配置集群设置,但启动单节点的话默认配置应该足够。 总结回答结构:先介绍两种启动方式,分点说明命令和适用情况,然后给出验证方法,最后注意事项。需要确保使用正确的LaTeX格式,虽然这里可能用不上数学公式,但按照用户的要求,行内代码用$...$,独立代码块用```。不过根据用户提供的示例,代码块应该用三个反引号包裹,并指定语言,比如python。但这里启动命令是shell命令,所以应该用shell或bash的语法高亮。 另外,用户可能对systemctl和service命令的区别有疑问,可以简要说明在较新的Ubuntu版本中systemd是默认的初始化系统,所以推荐使用systemctl。而旧版本可能使用service命令。不过根据引用[1],示例中使用的是service elasticsearch start,但可能同时支持两种方式,需要确认。 最后生成相关问题,考虑用户可能进一步想了解安装步骤、配置调优、日志查看或者如何设置开机启动。相关问题需要围绕Elasticsearch的运维展开,比如如何停止服务、查看状态、配置集群等。</think>在Ubuntu系统中启动Elasticsearch服务可以通过以下两种方式实现: ### 方法一:通过系统服务命令启动(推荐) 1. 使用`systemctl`命令(适用于systemd系统,如Ubuntu 16.04及以上版本): ```bash sudo systemctl start elasticsearch ``` 2. 验证服务状态: ```bash sudo systemctl status elasticsearch ``` 若输出显示`active (running)`,则表示服务已成功启动[^1]。 ### 方法二:直接运行二进制文件 若未配置系统服务,可通过以下命令以后台守护进程方式启动: ```bash sudo /usr/share/elasticsearch/bin/elasticsearch -d ``` 此命令会立即在后台运行Elasticsearch进程。 ### 验证Elasticsearch运行 通过发送HTTP请求到默认端口(9200)验证: ```bash curl -X GET "localhost:9200" ``` 若返回包含`"You Know, for Search"`的JSON数据,则表明服务正常[^2]。 ### 注意事项 1. **配置文件路径**:默认配置文件位于`/etc/elasticsearch/elasticsearch.yml`,可调整内存、网络等参数。 2. **权限问题**:若启动失败,检查`/var/log/elasticsearch/`日志文件,确保用户具有执行权限。 3. **依赖要求**:需提前安装Java环境(如OpenJDK 11+)[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值