You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在EC2实例启动时自动启动Node.js Express服务器

实现EC2重启后自动启动Express服务器的步骤

下面是两种主流实现方式,优先推荐systemd(适配Amazon Linux 2、Ubuntu 16.04+、CentOS 7+等主流发行版):

方法一:使用systemd服务(推荐)

  1. 创建systemd服务配置文件
    用编辑器打开新的服务文件:

    sudo vim /etc/systemd/system/express-server.service
    

    粘贴以下内容,注意替换项目绝对路径和node可执行文件路径(可通过which node命令获取node路径):

    [Unit]
    Description=Express API Server
    After=network.target
    
    [Service]
    User=ec2-user  # 替换为你的EC2登录用户,比如ubuntu
    WorkingDirectory=/home/ec2-user/project-folder-name  # 替换为项目的绝对路径
    ExecStart=/usr/bin/node /usr/bin/npm run server  # 替换为实际的node和npm路径
    Restart=always  # 服务意外停止时自动重启
    RestartSec=10
    
    [Install]
    WantedBy=multi-user.target
    
  2. 重载systemd配置并启用服务
    执行以下命令:

    sudo systemctl daemon-reload
    sudo systemctl enable express-server.service
    
  3. 测试服务(可选)
    手动启动服务验证是否正常运行:

    sudo systemctl start express-server.service
    

    查看服务状态:

    sudo systemctl status express-server.service
    

    若显示active (running)则配置正常,重启EC2后服务会自动启动。

方法二:使用rc.local(适配旧版init系统)

如果你的EC2实例使用传统init系统(如CentOS 6),可采用此方法:

  1. 编辑rc.local文件

    sudo vim /etc/rc.local
    

    在exit 0之前添加以下内容,替换为你的项目绝对路径:

    cd /home/ec2-user/project-folder-name && npm run server &
    

    末尾的&用于让服务在后台运行,避免阻塞系统启动流程。

  2. 给rc.local添加执行权限

    sudo chmod +x /etc/rc.local
    

    重启EC2后,服务会自动启动。

注意事项

  • 必须使用绝对路径,不能用./project-folder-name,因为系统启动时无默认工作目录
  • 确保执行npm的用户拥有项目目录的读写权限
  • 若systemd服务启动失败,可通过日志排查:sudo journalctl -u express-server.service

内容的提问来源于stack exchange,提问作者DoArNa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 22:52:11