Ошибка при запуске Neo4j с Systemd в Arch Linux

У меня есть neo4j, установленный в моей установке Arch Linux, и я могу запустить сервер вручную (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, и изначально у меня LimitNOFILE не закомментировали, прежде чем я попытался установить ограничения в security / limits.conf (что избавило от ошибки номера файла при его обычном запуске). Эта настройка упоминается в AUR, но я просто не могу заставить ее работать. Любая помощь приветствуется!


person Jared Windover-Kroes    schedule 16.10.2014    source источник
comment
systemd должен захватывать стандартный вывод Neo4j. Вы видите это, когда запускаете journalctl? Или в /var/log/syslog? (Или в другом месте, в зависимости от того, как настроен системный журнал.) Вы видите что-нибудь в собственных журналах Neo4j? Их расположение будет зависеть от того, как вы установили Neo4j, обычно в <neo4j-root>/data.   -  person Ben Butler-Cole    schedule 16.10.2014
comment
Я не видел ничего от neo4j ни в одном из этих мест. Настраивается ли ведение журнала для каждой службы? Могу ли я настроить systemctl для передачи его на стандартный вывод?   -  person Jared Windover-Kroes    schedule 16.10.2014
comment
Боюсь, я недостаточно хорошо знаю Arch или systemd, чтобы ответить на этот вопрос. Но я вижу, что вы приняли ответ ниже, так что теперь с вами все в порядке.   -  person Ben Butler-Cole    schedule 17.10.2014
comment
Похоже, ошибка произошла до того, как neo4j поместил что-либо в stdout. Я разобрался, и теперь я могу видеть зарегистрированный вывод.   -  person Jared Windover-Kroes    schedule 17.10.2014


Ответы (2)


Я только что попытался настроить Neo4j на новой виртуальной машине Arch, и это успешно сработало. Я сделал следующие шаги:

  1. Ботинок
  2. Установите wget и jdk7-openjdk, запустив pacman -S wget jdk7-openjdk
  3. Загрузите пакет Neo4j из AUR, используя wget https://aur.archlinux.org/packages/ne/neo4j/neo4j.tar.gz
  4. Распаковать пакет с tar xvf neo4j.tar.gz
  5. Изменить каталог cd neo4j
  6. Скомпилируйте пакет с помощью makepkg (Neo4j загружается с dist.neo4j.org)
  7. Установить с pacman -U neo4j-2.1.5-1-any.pkg.tar.gz
  8. As per the messages received during installation, create configuration to point at the installed 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 не должен работать так же хорошо.

person Nigel Small    schedule 16.10.2014
comment
Как он находит среду выполнения java при выполнении neo4j start? Я спрашиваю, потому что, если я увижу, что он находит таким образом (который, кажется, работает), то я мог бы сравнить это с тем, на что указал в java_home.conf. - person Jared Windover-Kroes; 16.10.2014
comment
В сценариях запуска есть несколько методов обнаружения исполняемого файла java в зависимости от платформы. Упаковка для Arch поддерживается третьей стороной, а не кем-то из Neo Technology, поэтому вам придется связаться с ними напрямую, чтобы узнать, почему требуется отдельная конфигурация. В любом случае, насколько я могу судить, значение в java_home.conf должно указывать на каталог, содержащий действительную JVM или JRE. - person Nigel Small; 16.10.2014

Вы пытаетесь добавить эту измененную строку для файла /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
person Franc SERRES    schedule 04.02.2017