【发布时间】:2020-07-11 02:57:39
【问题描述】:
我想在 AWS EC2 的一个 Linux 机器上托管 2 个节点应用程序。我可以在哪里运行开发环境和登台环境。我注意到我必须在两个应用程序上使用不同的端口,但这不是我面临的问题。
使用在我首先启动它的以前的盒子上一直有效的暂存端,在尝试不同的端口之前确保它有效。
我有一个使用 express 的后端 node.js 和一个使用 Vue CLI 构建的静态网页。 express 应用程序将使用app.use(express.static('static')); 托管静态网页的位置。然后继续使用pm2 start /directoryToDist/main.js 在 PM2 上托管它。守护进程启动后,我执行了curl http://localhost:80/,但它返回了Cannot GET / 的错误HTML 页面。
当我在这两个应用程序上执行npm install、npm rebuild 和npm build 时。确保正确构建了dist 文件夹。然后做了一个sudo -i 和pm2 start /directoryToDist/main.js。确保节点应用程序正在运行,我做了一个ps -ef | grep js 以表明它正在运行。 pm2 安装的应用程序没有重新启动,一切运行顺利。之后我做了curl http://localhost/,它确实返回了Cannot GET /。
我在之前的盒子中对一个工作应用程序进行了 zip 文件传输,并进行了必要的 npm 安装并运行它。期望它像以前的盒子一样工作,但事实并非如此。显示与Cannot GET / 相同的错误。
Node js 构建脚本
"build": "rimraf dist/ && babel ./ --out-dir dist/ --ignore ./node_modules,./babelrc,./package.json,/.npm-debug-log,./static/* --copy-files"
Vue js 构建脚本
"build": "node build/build.js"
重建我使用的脚本
cd api
npm run build
cd ..
cd pwa
npm run build
cd ..
sudo rm -rf api/dist/static
sudo mkdir -p api/dist/static
sudo cp -r pwa/dist/* api/dist/static/
sudo chown -R ubuntu.ubuntu *
如果您需要查看更多信息,请告诉我
实际结果是在将域分配给特定端口之前,在 curl 上提供正确的 200 消息。
【问题讨论】:
-
所以你的文件路径位于
ROOT/dist/static/*.*? -
@MattOestreich 是的
/home/ubuntu/nodeApp/dist/main.js在 main.js 中有一个app.use(express.static('static'))服务于 index.html -
我认为它需要是:
app.use(express.static('dist'))在这种情况下.. 取决于您的 Node 应用程序入口点所在的位置.. -
您的
packages.json文件是什么样的?特别是“主要”? -
嗯我以前试过。好吧,我的
nodeApp有一个dist文件夹,其中包含所有构建文件,然后将其前端static nodeApp的构建文件放到nodeApp的dist的静态子目录中并运行主目录。 js应用就可以了。
标签: node.js linux vue.js amazon-ec2 pm2