pm2 Startup не запускается в Ubuntu

Мне трудно перезапустить pm2 (сам и два файла node / express, app.js & app2.js) при перезагрузке сервера.

Ниже приведены процессы, которые я пробовал:

pm2 startup
pm2 start app.js
pm2 start app2.js
pm2 startup ubuntu (also tried systemd and with/without -u username)
pm2 save

Я запускал приведенные выше команды во всех возможных комбинациях, и ничего не помогло. Я пробовал работать как root, но тоже не сработало.

Мой ~/.pm2/dump.pm2 файл содержит информацию, поэтому я не знаю, где еще искать.

Я попытался изменить свой /etc/init.d/pm2-init.sh файл в соответствии с этой проблемой, но это не помогло.

Моя настройка:
Digital Ocean Server
Ubuntu 15.10
Node v5.4.1
PM2 v 1.0.0

Другие ссылки, которые я пробовал ..
http://pm2.keymetrics.io/docs/usage/startup/
https://www.digitalocean.com/community/tutorials/how-to-use-pm2-to-setup-a-node-js-production-environment-on-an-ubuntu-vps
https://gist.github.com/leommoore/5998406
https://www.terlici.com/2015/06/20/running-node-forever.html
https://serversforhackers.com/node-process-management-with-pm2 http://nodered.org/docs/getting-started/running.html#start-node-red-on-boot
https://github.com/Unitech/pm2/issues/1316

Пока что каждый раз, когда я перезагружаю сервер, pm2 не запускается автоматически (если мне не нужно подождать несколько минут? - nginx перезагружается мгновенно).

Может ли кто-нибудь помочь мне с этим? В каком порядке следует запускать команды? Мне нужно изменить какие-либо дополнительные файлы?


person Rastalamm    schedule 15.01.2016    source источник


Ответы (5)


Вы должны сохранить приложение узла, используя

 pm2 start [app_name]
 pm2 save

Затем сделайте:

 pm2 startup [operation system]

Это создаст файл dump.pm2, необходимый pm2 для запуска вашего приложения при перезагрузке.

Операционная система:

  • systemd: Ubuntu> = 16, CentOS> = 7, Arch, Debian> = 7
  • выскочка: Ubuntu ‹= 14
  • launchd: Дарвин, MacOSx
  • openrc: Gentoo Linux, Arch Linux.
  • rcd: FreeBSD
  • systemv: Centos 6, Amazon Linux.
person Michael Rechenberg    schedule 01.06.2016
comment
У меня это сработало на Ubuntu 14.04.5 LTS. Считывание из моего первоначального удара по pm2 startup ubuntu сказало мне использовать pm2 startup upstart. Сделал это, теперь мое приложение запускается при перезагрузке. - person pwbred; 25.07.2017
comment
Я использую Ubuntu Xenial 16.04. У меня сработало: pm2 save ... pm2 запуск выскочки. Ага! - person Chong Lip Phang; 25.12.2017
comment
@pwbred это зависит от управления процессами, которое использует ubuntu, что зависит от версий ubuntu. Вы можете проверить особенности случая здесь: pm2.keymetrics.io/docs/usage/startup - person João Pimentel Ferreira; 12.07.2019

Думаю, я решил проблему

Я играл с pm2 и нашел два рабочих способа для CentOS 7 (в папке вашего проекта index.js - главный файл):

  • 1

    sudo pm2 start index.js
    sudo pm2 save
    sudo pm2 startup centos
    
  • 2

    pm2 start index.js
    pm2 save
    pm2 startup centos
    '# and run the script generated in the previous code under sudo
    
person ktretyak    schedule 24.03.2016
comment
Я должен дать этому шанс! - person Rastalamm; 24.03.2016

Вы пробовали проверять журналы загрузки в Ubuntu (cat /var/log/boot.log)?

Вероятно, вы увидите такую ​​ошибку:

Error: EACCES, permission denied '/home/<USER>/.pm2'

Я сам не смог решить эту проблему, но, по крайней мере, это должно указать вам правильное направление.

person Grumpy Old Man    schedule 05.02.2016
comment
Я проверил этот файл - там ничего нет :( - person Rastalamm; 06.02.2016
comment
Может быть, права доступа к этой папке слишком строгие? Просто догадка. - person Will Brickner; 07.03.2017
comment
Это решение проблемы с разрешением: github.com/Unitech/pm2/issues/ 1321 # issuecomment-510348227 - person Hasan; 10.09.2019

Решением для меня был перезапуск pm2 с помощью systemctl: systemctl reload-or-restart pm2-root

Когда я настраивал свой сервер Ubuntu 18.04 в первый раз, я запускал pm2 start app.js, чтобы запустить свое приложение. Затем, когда я попытался запустить pm2 startup + pm2 save, чтобы перезапустить приложение при загрузке, это, похоже, не работало, так как при запуске systemctl list-units pm2 не отображался в списке служб. Хотя приложение было запущено (pm2 list это подтвердил). Итак, я запустил systemctl list-units -all, и pm2 показал как «неактивный» и «мертвый».

Так я и сделал:

  • systemctl status pm2-root (просто чтобы подтвердить, что он «неактивен» / «мертв»)

  • systemctl reload-or-restart pm2-root (для перезапуска pm2 через systemctl)

  • systemctl status pm2-root (чтобы подтвердить, что pm2 теперь «активен» / «работает»)

  • Затем я также запустил systemctl enable pm2-root, чтобы PM2 запускался при запуске (не уверен, что это необходимо)

  • И снова pm2 startup + pm2 save (для начала при загрузке)

OBS .: Я использовал pm2-root в своих командах, так как я запускал pm2 с пользователем root, но при необходимости вы должны заменить его для своего пользователя (pm2-<USER>).

person ofri cofri    schedule 15.01.2019

Получили следующие коды в Ubuntu:

pm2 start main.js
pm2 save
pm2 startup ubuntu

Обратите внимание, что pm2 save создаст файл dump.pm2 в /root/.pm2/dump.pm2, и этот файл будет использоваться при перезапуске вашего компьютера.

И если вы не знаете имя своей операционной системы, просто используйте:

pm2 startup

PM2 автоматически обнаружит вашу операционную систему.

person tanvir993    schedule 17.09.2020