【问题标题】:Error Running Neo4j with Systemd on Arch Linux在 Arch Linux 上使用 Systemd 运行 Neo4j 时出错
【发布时间】:2014-10-16 03:02:26
【问题描述】:

我已经在我的 arch linux 设置上安装了 neo4j,并且能够手动启动服务器 (sudo neo4j start)。但是,当我尝试使用 systemctl start neo4j 启动它时,我得到了

Job for neo4j.service failed. See 'systemctl status neo4j.service' and
'journalctl -xn' for details.

错误消息中的建议都没有提供任何帮助。我有 /usr/lib/systemd/system/neo4j.service:

[Unit]
Description=Neo4j

[Service]
User=root
Type=forking
ExecStart=/usr/bin/neo4j start
ExecStop=/usr/bin/neo4j stop
PIDFile=/run/neo4j/neo4j-service.pid
#LimitNOFILE=40000

[Install]
WantedBy=multi-user.target

我尝试在 neo4j 和 root 之间更改用户,并且在我尝试在 security/limits.conf 中设置限制之前,我最初没有注释掉 LimitNOFILE(它在正常启动时消除了文件编号错误) . AUR 中提到了此设置,但我无法使其正常工作。任何帮助表示赞赏!

【问题讨论】:

  • systemd 应该正在捕获 Neo4j 的标准输出。当你运行journalctl 时,你看到了吗?还是在/var/log/syslog? (或其他地方,取决于 syslog 的配置方式。)你在 Neo4j 自己的日志中看到了什么吗?它们的位置取决于您安装 Neo4j 的方式,通常在 <neo4j-root>/data 下。
  • 我在这些地方都没有看到来自 neo4j 的任何东西。日志记录是基于每个服务配置的吗?我可以设置 systemctl 将其通过管道传输到标准输出吗?
  • 恐怕我对 Arch 或 systemd 不够了解,无法回答这个问题。但我看到你已经接受了下面的答案,所以我假设你现在没事了。
  • 看起来错误发生在 neo4j 将任何内容放入标准输出之前。我把它整理出来了,现在我可以看到记录的输出了。

标签: neo4j archlinux systemd


【解决方案1】:

我刚刚尝试在新的 Arch VM 上设置 Neo4j,并且成功。我遵循的步骤是:

  1. 启动
  2. 通过运行pacman -S wget jdk7-openjdk 安装 wgetjdk7-openjdk
  3. 使用wget https://aur.archlinux.org/packages/ne/neo4j/neo4j.tar.gz从 AUR 下载 Neo4j 包
  4. tar xvf neo4j.tar.gz解压包
  5. 更改目录cd neo4j
  6. 使用 makepkg 构建包(从 dist.neo4j.org 下载 Neo4j)
  7. 使用pacman -U neo4j-2.1.5-1-any.pkg.tar.gz 安装
  8. 根据安装过程中收到的消息,创建配置以指向已安装的 JDK:
    • mkdir /etc/systemd/system/neo4j.service.d
    • echo "[Service]" >> /etc/systemd/system/neo4j.service.d/java_home.conf
    • echo "Environment=JAVA_HOME=/usr/lib/jvm/default" >> /etc/systemd/system/neo4j.service.d/java_home.conf
  9. systemctl start neo4j.service启动服务器
  10. 使用curl http://localhost:7474/db/data/检查服务器是否正在运行

如果可行,将显示 JSON 响应。

由于我无法准确说出您安装的步骤或文件系统的外观,最好的办法可能是将您执行的步骤与上述步骤进行比较,看看差异在哪里。

猜测一下,我建议先查看您的 Java 安装,看看该服务是否在查找 Java 运行时时遇到问题。这无疑是整个过程中最繁琐的部分。

注意:我在这里使用了 JDK,但我不明白为什么 jre7-openjdk 包不能正常工作。

【讨论】:

  • 在做neo4j start时如何定位java运行时?我问是因为如果我能看到它以这种方式定位什么(这似乎有效),那么我可以将它与我在 java_home.conf 中指出的内容进行比较。
  • 启动脚本有几种方法可以检测java 可执行文件,具体取决于平台。 Arch 的包装由第三方维护,而不是 Neo Technology 的人员,因此您必须直接与他们联系以了解为什么需要单独配置。无论哪种方式,据我所知,java_home.conf 中的值应该指向包含有效 JVM 或 JRE 的目录。
【解决方案2】:

您是否尝试为文件 /usr/lib/systemd/system/neo4j.service 添加修改后的行?

[Unit]
Description=Neo4j

[Service]
User=neo4j
Type=forking
RuntimeDirectory=neo4j
RuntimeDirectoryMode=770
ExecStart=/usr/bin/neo4j start
ExecStop=/usr/bin/neo4j stop
ExecReload=/usr/bin/neo4j restart
RemainAfterExit=no
Restart=on-failure
PIDFile=/run/neo4j/neo4j-service.pid
LimitNOFILE=60000
TimeoutSec=600

[Install]
WantedBy=multi-user.target

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-09
    • 2018-12-20
    • 2013-12-24
    • 2020-04-03
    • 2018-04-05
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多