在 Elasticsearch systemd 服务脚本中配置 Java 环境变量
·
在 Elasticsearch systemd 服务脚本中配置 Java 环境变量
适用场景:当系统存在多个 JDK 版本,或 Elasticsearch 未自动识别
JAVA_HOME时,需在 systemd 服务文件中显式指定 Java 路径。
一、原始配置片段
[Service]
RuntimeDirectory=elasticsearch
Environment=JAVA_HOME=/opt/jdk1.8.0_65/
Environment=ES_HOME=/usr/share/elasticsearch
Environment=ES_PATH_CONF=/etc/elasticsearch
Environment=PID_DIR=/var/run/elasticsearch
EnvironmentFile=-/etc/default/elasticsearch
二、完整操作步骤
1. 编辑 systemd 服务文件
通常位于:
/etc/systemd/system/elasticsearch.service
或
/usr/lib/systemd/system/elasticsearch.service
✅ 建议优先编辑
/etc/systemd/system/下的副本(覆盖默认配置)。
2. 在 [Service] 段中添加环境变量
将您提供的 Environment 行插入到 [Service] 区块内,例如:
[Unit]
Description=Elasticsearch
Documentation=https://www.elastic.co
Wants=network-online.target
After=network-online.target
[Service]
Type=notify
User=elasticsearch
Group=elasticsearch
RuntimeDirectory=elasticsearch
Environment=JAVA_HOME=/opt/jdk1.8.0_65/
Environment=ES_HOME=/usr/share/elasticsearch
Environment=ES_PATH_CONF=/etc/elasticsearch
Environment=PID_DIR=/var/run/elasticsearch
EnvironmentFile=-/etc/default/elasticsearch
ExecStart=/usr/share/elasticsearch/bin/elasticsearch -p ${PID_DIR}/elasticsearch.pid --quiet
Restart=on-failure
LimitMEMLOCK=infinity
TimeoutSec=120
[Install]
WantedBy=multi-user.target
3. 重载 systemd 并重启服务
sudo systemctl daemon-reload
sudo systemctl restart elasticsearch
4. 验证 Java 路径是否生效
# 查看进程实际使用的 JAVA_HOME
sudo systemctl show elasticsearch | grep JAVA_HOME
# 或检查日志
journalctl -u elasticsearch -n 50
三、注意事项
- 路径
/opt/jdk1.8.0_65/必须真实存在且 elasticsearch 用户有读取权限。 EnvironmentFile=-/etc/default/elasticsearch中的-表示该文件可选(不存在也不报错)。- 若同时在
/etc/default/elasticsearch中设置了JAVA_HOME,systemd 中的Environment优先级更高。
更多推荐
所有评论(0)