我知道你们中的一些人可能认为这有点偏离主题,但我不确定这是服务器的错误还是我的配置文件的错误,所以......
我创建了 React.js 项目,但它需要服务器端渲染,所以现在我必须从 CRA 迁移到 next.js。问题:我必须将我的网站上传到 apache 网络服务器上,从我从谷歌收集的信息来看,我需要安装 node.js 和 pm2(最新版本),还需要为反向代理配置 apache。我还为 pm2 创建了生态系统(我想这是必要的)。它目前看起来像这样:
module.exports = {
apps : [{
name: "nextjs-app",
script: "npm",
args: "run build",
env: {
NODE_ENV: "production"
}
}]
};
但是当我运行 pm2 start npm -- start 时,终端给了我这样的响应:
pm2 start npm -- start
[PM2] Spawning PM2 daemon with pm2_home=/home/georgianar/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /usr/local/bin/npm in fork_mode (1 instance)
[PM2] Done.
但是当我尝试查看进程列表时,却没有任何进程,并且当用户尝试进入网站时,站点日志显示端口 3000 上没有服务
AH01114: HTTP: failed to make connection to backend: localhost
和
(111)Connection refused: AH00957: http: attempt to connect to 127.0.0.1:3000 (localhost:3000) failed
所以,不确定是服务器的错误还是我的配置文件导致了这种混乱。有什么想法吗?
答案1
首先确保你的 package.json 中存在以下命令
"scripts": {
"start": "next start -p 3000"
}
使用以下命令
pm2 start yarn --name "nextjs-app" --interpreter bash -- start
您可以使用以下方式打印出详细的流程信息
pm2 show nextjs-app
配置 PM2 在服务器启动时启动,运行以下命令根
pm2 startup
保存 pm2 进程列表以便在服务器重启后重新启动它们
pm2 save