2017-08-16 12 views
0

デプロイメントプロセスをシミュレートするために自分のアプリケーションをローカルコンピュータにデプロイしようとしています。ステージングモードなどと呼んでいます。私が使用したツールにはpm2とNginxがあります。expressjsを運用モードでindex.htmlを提供するように設定するにはどうすればよいですか?

pm2 start server.jsをプロジェクトで直接使用してアプリを実行すると、自分のウェブアプリを使用することができます。クライアントは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

私はあなたが私はnginxのを使用しています https://github.com/expressjs/serve-static –

+0

@ArtemIlchenkoこれは、静的なコンテンツを提供するために使うべきだと思います。なぜこのモジュールを使うべきですか? – newguy

答えて

0

開発中にプロダクションのような再現性を実現するには、同じツールで同じ機能を実装する必要があります。

今日、docker composeはこの問題を解決する最適な解決策です。開始として、2つのコンテナを最初にnginxで、2番目のコンテナをpm2で作成する必要があります。また、静的ファイルのボリュームをnginxにバインド/マウントする必要があります。

+0

はい私はドッカーを後で使用する予定です。しかし、この段階で私はインターネットにすばやく載せる必要があります。 – newguy

+0

私の意見では、ドッカーの作成は、スタイルのようなプロダクションでアプリケーションをデモするための最も簡単なソリューションです。もっと素早く汚れたものが必要な場合は、コードハッキング(例えば、@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ファイルにアクセスできる場所から、環境ディレクトリにを与えるだろう。

はそれが役に立てば幸い:)

関連する問題