Nodejs开机启动为什么就不成功呢?

Nodejs开机启动为什么就不成功呢?

网上找了看了一下别人的blog,2行代码的事情:forever start /usr/local/server.js 我开机之后为什么没有启动呢?

13 回复

当然可以!让我们一起来探讨一下为什么使用 forever 命令启动的 Node.js 应用程序在系统启动时无法自动运行。

问题分析

你提到的命令 forever start /usr/local/server.js 确实可以用来在命令行中启动一个 Node.js 应用程序。然而,这种直接在命令行中执行的方式并不适合用于系统启动。这是因为系统启动时并没有用户登录,因此不会自动加载环境变量、会话配置等信息。此外,forever 进程可能需要特定的用户权限才能正常工作。

解决方案

为了确保你的 Node.js 应用程序能够在系统启动时自动运行,你需要将启动脚本添加到系统的初始化脚本中。以下是几种常见的方法:

方法1: 使用 Systemd

Systemd 是现代 Linux 发行版中常用的初始化系统。你可以创建一个 systemd service 来管理你的 Node.js 应用程序。

  1. 创建一个新的服务文件 /etc/systemd/system/nodejs.service:
[Unit]
Description=Node.js Server

[Service]
ExecStart=/usr/bin/forever start /usr/local/server.js
Restart=always
User=your_username
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target
  1. 启用并启动服务:
sudo systemctl enable nodejs
sudo systemctl start nodejs

方法2: 使用 Crontab

如果你更喜欢使用 crontab,你可以设置一个定时任务来启动你的应用程序。

  1. 编辑当前用户的 crontab 文件:
crontab -e
  1. 添加以下内容:
@reboot /usr/bin/forever start /usr/local/server.js

总结

通过上述方法之一,你可以确保你的 Node.js 应用程序在系统启动时自动运行。使用 systemd 或 crontab 都是常见且有效的方法。其中,systemd 提供了更多的灵活性和控制能力,而 crontab 则更为简单直接。

希望这些信息对你有所帮助!如果还有其他问题,请随时提问。


参考过 这个帖子,用他的脚本开机也启动不了 http://cnodejs.org/topic/518722cc6d38277306775624

试试forever node forever server.js

因为你的forever没有启动 什么意思?怎么保证先forever运行,然后再运营node

forever 本来就不是用来做开机启动的啊。

启动这货干啥,浪费系统资源:(

推荐用pm2吧,高大上。 forever用用开发还行,不过开发,我们现在用node-dev

pm2 果断

现在有个问题 开机启动之后怎么保证node在mysql之后启动,这个点现在想不通?

肯定是命令打错了。

好好看看语法有没有错

pm2是不是要求node版本的?

Node.js 应用程序在系统启动时无法自动运行可能有多种原因。以下是几种常见的排查步骤及解决方案:

  1. 检查脚本路径:确保 /usr/local/server.js 的路径是正确的。如果路径错误或文件不存在,应用程序将无法启动。

  2. 检查 Node.js 和 forever 是否已安装:确保 forever 已经全局安装,并且可以被系统调用。

    npm install -g forever
    
  3. 使用系统服务:利用 systemd 或其他系统服务管理器来启动 Node.js 应用程序。这样可以更可靠地保证应用程序在系统启动时运行。

    例如,创建一个 systemd 服务文件 /etc/systemd/system/myservice.service

    [Unit]
    Description=My Node.js Application
    
    [Service]
    ExecStart=/usr/bin/forever start /usr/local/server.js
    Restart=always
    User=<your-user-name>
    
    [Install]
    WantedBy=multi-user.target
    
  4. 重新加载 systemd 配置并启用服务

    sudo systemctl daemon-reload
    sudo systemctl enable myservice.service
    sudo systemctl start myservice.service
    
  5. 检查日志:查看系统日志以获取更多信息。这可以帮助你了解启动失败的具体原因。

    journalctl -u myservice.service
    

通过上述步骤,你应该能够找到为什么你的 Node.js 应用程序在开机时无法自动启动的原因,并进行相应的调整。

回到顶部