Nodejs 在linux下如何绑定开机自启动

Nodejs 在linux下如何绑定开机自启动

主要是为了,可以开机自启动,然后,关闭终端,也可以在后台不断运行。

7 回复

Node.js 在 Linux 下如何绑定开机自启动

在 Linux 系统中,确保 Node.js 应用程序在系统启动时自动运行,并且即使关闭终端也能在后台持续运行,可以通过配置 systemd 服务来实现。以下是详细的步骤和示例代码。

步骤 1: 创建一个 Systemd 服务文件

首先,在 /etc/systemd/system/ 目录下创建一个新的服务文件。假设你的 Node.js 应用程序位于 /opt/myapp/app.js,你可以创建一个名为 myapp.service 的服务文件。

sudo nano /etc/systemd/system/myapp.service

在文件中添加以下内容:

[Unit]
Description=My Node.js Application
After=network.target

[Service]
User=yourusername
ExecStart=/usr/bin/node /opt/myapp/app.js
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=myapp

[Install]
WantedBy=multi-user.target

解释

  • [Unit] 部分定义了服务的描述以及它应该在哪个目标之后启动(这里是在网络服务之后)。
  • [Service] 部分定义了如何运行该服务。User 指定了运行应用程序的用户,ExecStart 指定了启动应用程序的命令,Restart 设置为 always 表示如果应用程序崩溃,会自动重启。
  • [Install] 部分定义了当启用此服务时的目标。WantedBy=multi-user.target 表示在多用户模式下启动。

步骤 2: 启用并启动服务

保存并退出编辑器后,使用以下命令启用并启动服务:

sudo systemctl enable myapp.service
sudo systemctl start myapp.service

这将使服务在每次系统启动时自动启动,并立即启动当前会话中的服务。

步骤 3: 查看服务状态

你可以通过以下命令查看服务的状态:

sudo systemctl status myapp.service

如果一切正常,你应该能看到类似 “active (running)” 的信息。

通过以上步骤,你就可以确保你的 Node.js 应用程序在系统启动时自动运行,并且即使关闭终端也能在后台持续运行。


service

可以試試看 forever ,寫一個 init script 讓開機的時候跑你的 service https://github.com/nodejitsu/forever

forever的日志,我已经用tracer代替了,所以。直接用最简单的命令。nohup supervisor app.js & 就好了。

类似楼上, 写成 supervisor 的应用… 也许有更好的方案

我是用forever,再设置chkconfig,具体可见http://angularjs.cn/A00X

要在Linux系统下让Node.js应用实现开机自启动并能在后台持续运行,你可以通过创建一个Systemd服务或者使用crontab来实现。以下是两种方法的简要介绍和示例。

方法一:使用Systemd

  1. 创建一个Systemd服务文件: 在 /etc/systemd/system/ 目录下创建一个新的服务文件,例如 nodeapp.service。文件内容如下:

    [Unit]
    Description=Node.js Application
    After=network.target
    
    [Service]
    User=<your-username>
    ExecStart=/usr/bin/node /path/to/your/app.js
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

    <your-username> 替换为你的用户名,并将 /path/to/your/app.js 替换为你的Node.js应用程序的实际路径。

  2. 重新加载Systemd配置并启用服务

    sudo systemctl daemon-reload
    sudo systemctl enable nodeapp.service
    sudo systemctl start nodeapp.service
    

方法二:使用crontab

  1. 编辑当前用户的crontab文件

    crontab -e
    
  2. 添加一行以使程序在开机时启动

    [@reboot](/user/reboot) /usr/bin/node /path/to/your/app.js &
    

    同样地,将 /path/to/your/app.js 替换为你的Node.js应用程序的实际路径。

这两种方法都能让你的Node.js应用在系统重启后自动启动,并且在后台运行。使用Systemd更为现代和灵活,而crontab则更加简单直接。根据你的需求选择合适的方法即可。

回到顶部