web-dev-qa-db-ja.com

MEAN.js(Node.js)アプリケーションを本番環境にデプロイする方法

MEAN.JS スタックは、アプリケーションを本番環境に準備するための「大規模なビルド」タスクを提案します。残念ながら、次のステップに関する情報が不足しています。実際には、アプリケーションを本番環境にデプロイする方法とそれを起動する方法は明確ではありません。

質問#1config/env/production.jsの変更に加えて、プロジェクトで何を構成する必要がありますか?例えば。カスタムフォントを使用する方法

質問#2わかりました。 (Git、rsyncなどを介して)本番環境にデプロイされたコード。それを実行するのに十分ですか

 $NODE_ENV=production node server.js& 
20
Roman Podlinov

本番環境へのデプロイには、次の手順を実行することをお勧めします。

  1. /config/env/production.js構成ファイルを再確認し、手動で/config/env/all.jsに追加したすべてのアセットを含めます。これは、本番用に縮小バージョンを使用するのに適したアプローチです。

  2. (オプション)アプリにカスタムフォントがある場合は、gruntfile.jsを更新し、フォントを/ public/dist /フォルダーにコピーするタスクを追加することをお勧めします。次の変更を行いました。

    copy: {
        main:{
            expand: true,
            flatten: true,
            src: ['public/modules/core/fonts/*'],
            dest: 'public/dist/',
            filter: 'isFile'
        }
    },
    
    ...
    // Build task(s).
    grunt.registerTask('build', ['lint', 'loadConfig', 'ngmin', 'uglify', 'cssmin', 'copy']);
    

    コピータスクでは、grunt-copyモジュールをインストールする必要があります

  3. 次に、本番用に単一のapplication.js、application.min.js、application.min.cssファイルを作成します(/public/distフォルダーを参照)。アプリフォルダーで実行する

    $grunt build
    
  4. ファイルを本番サーバーにコピーします。 GITプッシュ展開を使用することを好みます。増分変更のみをサーバーに送信します。プッシュ展開にGITを使用する場合、 `/ public/dist/'フォルダーからリポジトリーにすべてのファイルを追加する必要があります。

  5. プロジェクトでexpress.jsを使用するため、コマンドを使用するだけで十分です

    $NODE_ENV=production node server.js&
    

    一部の開発者がforever(node.jsのモジュール)を使用していることを知っていますが、デフォルトで利用可能なUPSTART(イベントベースのinitデーモン)を使用することを好みますシステムサービスとしてのUbuntu。 /etc/initフォルダに構成ファイルを作成します。 /etc/init/my-app.conf。この後、アプリをサービスとして起動、停止、再起動できます。例えば。サービスmy-app start | stop | restart

    UPSTARTは、障害が発生した場合にサービスを監視して再起動します(UPSTART構成のrespawnコマンドを参照)。 UPSTART構成ファイルを作成する方法の詳細な回答は、次の場所にあります。 node.jsのupstartスクリプト

  6. (オプション、ただし推奨)nginxNode.jsの前にインストールします。セキュリティ上の理由から、権限のないユーザーの下でWebアプリを実行することをお勧めします。一方、Webアプリにポート80(httpプロトコルのデフォルトポート)を使用する場合(例 http://) my-app-domain.com/http://my-app-domain.com:3000/ )の代わりに、このような設定は注意が必要です。このため、権限のないユーザーが使用できるポート(例:3000)で実際に動作するNginx(ポート80)をWebアプリの前で使用します。

    6a。 Nginxの代わりにVarnishを使用できます

35
Roman Podlinov