2017-08-16 50 views
0

我正在尝试将我的应用程序部署到本地计算机以模拟部署过程。你把它称为分级模式或其他。我使用的工具包括pm2和Nginx。如何配置expressjs在生产模式下为index.html提供服务?

当我在我的项目中直接使用pm2 start server.js运行我的应用程序时,我可以使用我的web应用程序。客户端可以通过Nginx服务器访问index.html文件。但我认为这不是生产模式,除非我也使用--env production

所以我所有需要的文件复制到dist目录我的项目,配置Nginx的服务于静态内容,并在我的源代码,我想用

app.get('/', function(req, res) { 
    res.sendFile('index.html', {root: somePath}); 
}); 

,以允许客户端访问快速服务器上的index.html文件。但我不确定要在somePath中放些什么?当我将项目部署到服务器时,我将服务器端和客户端分开。例如,我的服务器端是/usr/path/server,但我的客户端在/etc/shared/html。如果我搞砸了路径,当我访问index.html时,我将收到来自 的“禁止”错误消息。

+0

我认为你应该使用这个 https://github.com/expressjs/serve-static –

+0

@ArtemIlchenko我使用Nginx的服务静态内容。我为什么要使用这个模块? – newguy

回答

0

如果您想在开发过程中提供类似于生产的可重复性,那么您应该使用相同的工具来实现相同的功能。

时下docker compose是解决此问题的最佳解决方案。作为开始,你应该有两个容器,第一个使用nginx,第二个使用pm2。你也应该将静态文件的卷挂载/挂载到nginx。

+0

是的,我打算晚些时候使用docker。但是在这个阶段,我需要很快把它放到互联网上。 – newguy

+0

在我看来,docker撰写是一种最简单的解决方案,用于在风格上展示您的应用程序。如果你需要更快更肮脏的东西,那么你可以使用代码黑客(例如:来自@ArtemIlchenko建议的serve-static)或简单和免费的互联网发布工具(例如:https://c9.io) – galkin

0

你的代码应该是这样的。

var path = require('path'); 
var virtualDirPath = process.env.virtualDirPath || ''; 
var appDir = path.dirname(require.main.filename) + virtualDirPath; 

APPDIR会给环境目录,从那里你可以访问html文件。

希望它能帮助:)

相关问题