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

React+Node.js部署站点:如何用npm serve、forever保活前后端

前端运行与保活解决方案

针对你遇到的退出PuTTy后前端serve进程终止的问题,以下是几种实用的解决方法,按可靠性和推荐程度排序:

方法一:用Apache直接托管React静态文件(最推荐)

既然已经安装了Apache,完全可以直接用它来托管React的静态构建文件,不需要额外的serve进程,既高效又稳定:

  1. 将React项目build目录下的所有文件复制到Apache的网站根目录(比如/var/www/html),或者单独指定一个目录(如/var/www/your-frontend)
  2. 创建或修改Apache虚拟主机配置文件(比如/etc/apache2/sites-available/your-site.conf),添加以下内容:
    <VirtualHost *:80>
        ServerName your-domain.com # 替换成你的域名
        DocumentRoot /var/www/html/build # 替换成你的build目录路径
    
        <Directory /var/www/html/build>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Require all granted
            # 处理React路由的重写规则,避免刷新页面404
            RewriteEngine On
            RewriteBase /
            RewriteRule ^index\.html$ - [L]
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule . /index.html [L]
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/your-site-error.log
        CustomLog ${APACHE_LOG_DIR}/your-site-access.log combined
    </VirtualHost>
    
  3. 启用必要模块和站点:
    a2enmod rewrite # 启用重写模块
    a2ensite your-site.conf # 启用你的站点配置
    systemctl restart apache2 # 重启Apache生效
    

这样前端静态文件由Apache直接托管,自带进程保活和开机自启,无需额外维护。

方法二:用systemd服务管理serve进程(系统级保活)

如果坚持要用serve,用systemd创建系统服务是最可靠的保活方式:

  1. 创建systemd服务文件:
    nano /etc/systemd/system/frontend-serve.service
    
  2. 写入以下内容(注意替换路径和用户):
    [Unit]
    Description=React Frontend Serve Process
    After=network.target
    
    [Service]
    User=www-data # 运行进程的用户,建议用Apache的用户
    WorkingDirectory=/var/www/html # 你的项目根目录
    ExecStart=/usr/bin/npx serve build # 如果serve是全局安装,也可以写`/usr/bin/serve build`,用`which serve`可查路径
    Restart=always # 进程意外退出时自动重启
    RestartSec=5 # 重启间隔5秒
    StandardOutput=journal+console
    StandardError=journal+console
    
    [Install]
    WantedBy=multi-user.target
    
  3. 加载配置并启动服务:
    systemctl daemon-reload
    systemctl start frontend-serve
    systemctl enable frontend-serve # 设置开机自启
    
  4. 常用管理命令:
    • 查看状态:systemctl status frontend-serve
    • 查看实时日志:journalctl -u frontend-serve -f
    • 停止服务:systemctl stop frontend-serve

方法三:用forever管理serve进程(和后端统一工具)

既然你已经在用forever管理后端,也可以用它来管理前端进程:

  1. 进入项目目录:
    cd /var/www/html
    
  2. 用forever启动serve进程:
    forever start -c serve build
    
    可选:指定日志路径方便排查问题:
    forever start -l /var/log/frontend.log -o /var/log/frontend-out.log -e /var/log/frontend-err.log -c serve build
    
  3. 常用管理命令:
    • 查看运行的进程:forever list
    • 停止前端进程:forever stop <进程ID>(从list里获取ID)
    • 重启进程:forever restart <进程ID>

方法四:用nohup临时后台运行(仅临时测试)

如果只是临时测试,不想配置服务,可以用nohup让进程脱离终端后台运行:

cd /var/www/html && nohup serve build > /var/log/frontend-nohup.log 2>&1 &

这种方法的缺点是进程意外退出后不会自动重启,不适合生产环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:35:19