我想在AWS EC2的一个Linux机器上托管2个节点应用程序。我可以在其中运行开发环境和登台环境的地方。我注意到我必须在两个应用程序上使用不同的端口,但这不是我面临的问题。
使用暂存端,该暂存端一直在我之前开始使用的以前的版本中一直使用,请确保在尝试其他端口之前它可以正常工作。
我有一个使用express的后端node.js和一个用Vue CLI构建的静态网页。快速应用将使用app.use(express.static('static'));
托管静态网页的位置。然后使用pm2 start /directoryToDist/main.js
将其托管在PM2上。守护程序启动后,我做了一个curl http://localhost:80/
,但它返回了一个错误的HTML页面Cannot GET /
。
当我在两个应用程序上都执行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
消息。
答案 0 :(得分:1)
或者您可以通过path
找到它:
import path from 'path'
app.use(
'/some-url',
express.static(path.join(__dirname, '/some/path/on/server'))
)
如果您知道服务器上的确切路径。
相对路径也适用:
app.use(
'/some-url',
express.static(path.join(__dirname, '../../some/relative/on/server'))
)
答案 1 :(得分:0)
找到了可行的解决方案。
Pm2没有指向当前工作目录。 sudo -i
然后运行$ pm2 start /home/user/directory
,它将在directory
文件夹而不是已实现的dist
文件夹中寻找模块路由。
因此可以解决此问题。必须先遍历目录并启动pm2从那里开始。 $ cd /home/user/directory/dist/
$ pm2 start main.js
。这为节点应用程序提供了良好且稳定的服务。