在Arch Linux上使用Systemd运行Neo4j时出错

时间:2014-10-16 03:02:26

标签: neo4j archlinux systemd

我已经在我的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中提到了此设置,但我无法使其正常工作。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:5)

我刚尝试在新的Arch VM上设置Neo4j,这已成功运行。我遵循的步骤是:

  1. 引导
  2. 运行pacman -S wget jdk7-openjdk
  3. 安装 wget jdk7-openjdk
  4. 使用wget https://aur.archlinux.org/packages/ne/neo4j/neo4j.tar.gz
  5. 从AUR下载Neo4j包
  6. 使用tar xvf neo4j.tar.gz
  7. 解压缩包裹
  8. 更改目录cd neo4j
  9. 使用makepkg构建软件包(从dist.neo4j.org下载Neo4j)
  10. 使用pacman -U neo4j-2.1.5-1-any.pkg.tar.gz
  11. 安装
  12. 根据安装期间收到的消息,创建配置以指向已安装的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
  13. 使用systemctl start neo4j.service
  14. 启动服务器
  15. 使用curl http://localhost:7474/db/data/
  16. 检查服务器是否正在运行

    如果有效,将显示JSON响应。

    由于我无法确切地说明您要安装的步骤或文件系统的外观,您最好的选择可能是比较上述步骤并查看差异所在。< / p>

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

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

答案 1 :(得分:1)

您是否尝试为文件 /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