2017-08-16 85 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文件。

希望它能幫助:)

相關問題