好,朋友们,
这让我疯了......无法让我的nodejs应用程序在覆盆子pi上自动启动@boot ...
机器:覆盆子2(Raspbian Jessie)
尝试了我在Google上找到的几乎所有可能的解决方案。
这就是我最终得到的结果:
安装pm2
$ sudo npm install -g pm2
这将安装为init.d脚本并以pi用户身份运行应用程序
$ sudo pm2 startup raspberry -u pi
[PM2] Generating system init script in /etc/init.d/pm2-init.sh
[PM2] Making script booting at startup...
[PM2] -raspberry- Using the command:
su -c "chmod +x /etc/init.d/pm2-init.sh && update-rc.d pm2-init.sh defaults"
[PM2] Done.
我已经读过脚本引用了错误的.pm2文件夹(看起来在根文件夹中,而不是用户的文件夹中)所以我改变了
$ sudo vi /etc/init.d/pm2-init.sh
将export PM2_HOME="/root/.pm2"
改为export PM2_HOME="/home/pi/.pm2"
$ cd /opt/mycoolnodeproject
用pm2启动我的节点项目
$ pm2 start server.js -x --name "node-project"
保存活动进程,以便在重新启动时重新启动它们(如果pi崩溃,它会自动将其保存在关闭状态)
$ pm2 dump
所以现在服务器启动并运行正常......直到我重新启动!我以为pm2会自动启动我的节点应用程序但由于某种原因它不会...... :(
知道问题可能是什么?
顺便说一下:我也试着像这个sudo env PATH=$PATH:/usr/local/bin pm2 startup raspberry -u pi
一样打电话给创业公司,但那也没办法。
问候,
萨沙
Mia的评论让我再次检查了PM2的问题列表,有人想出了怎么做! :)
https://github.com/Unitech/pm2/issues/1654
解决方案:
sudo pm2 startup systemd -u <username>
奇迹般有效! :)
萨沙
我能够使用此命令在我的RPi上正确启动PM2启动:
sudo env PATH=$PATH:/usr/local/bin pm2 startup systemd -u pi --hp /home/pi
--hp /home/pi
部分似乎是不同的。这就是我发现无法解决的许多解决方案中遗漏的问题。
我也搜索了几天没有成功,但后来,我让它很简单地工作。
你的java应用程序应该在重启后运行
这是基于this article的解决方法(建议的解决方法对我没有帮助):
#! /bin/sh
# /etc/init.d/pm2
#
# help documentation:
#https://debian-administration.org/article/28/Making_scripts_run_at_boot_time_with_Debian
pm2 resurrect
chmod 755 /etc/init.d/blah
update-rc.d pm2 defaults