サーバーで実行する必要のある2つのnuxtプロジェクトがあります。アプリをローカルで実行すると、次のように機能しているようです:npm run dev
ですが、サーバーではサブプロセスの下で実行する必要があるため、pm2を使用します。しかし、同じnpmスクリプトをpm2で実行し始めると、プロセスにエラーが発生します。
これに使用されるコマンドは次のとおりです:Sudo pm2 start npm --name "dev" -- dev
、アプリを個別に実行してもエラーが発生します。 Sudo pm2 start npm --name "app1" -- app1:dev
およびSudo pm2 start npm --name "app2" -- app2:dev
package.json
{
...
"scripts": {
"app1:dev": "nuxt --config-file src/app1/nuxt.config.js -p=3000",
"app2:dev": "nuxt --config-file src/app2/nuxt.config.js -p=4000",
"dev": "concurrently \"npm run app1:dev\" \"npm run app2:dev\"",
},
"dependencies": {
...
},
"devDependencies": {
"concurrently": "^3.6.0",
"cross-env": "^5.2.0"
}
}
pm2ログ
/home/ubuntu/.pm2/pm2.log :
PM2 | [2018-08-16T10:05:55.046Z] PM2 log: ===============================================================================
...
PM2 | [2018-08-16T10:07:32.825Z] PM2 log: App [app1] with id [0] and pid [11135], exited with code [1] via signal [SIGINT]
PM2 | [2018-08-16T10:07:32.827Z] PM2 log: Starting execution sequence in -fork mode- for app name:app1 id:0
PM2 | [2018-08-16T10:07:32.828Z] PM2 log: App name:app1 id:0 online
PM2 | [2018-08-16T10:07:33.105Z] PM2 log: App [app1] with id [0] and pid [11145], exited with code [1] via signal [SIGINT]
PM2 | [2018-08-16T10:07:33.106Z] PM2 log: Starting execution sequence in -fork mode- for app name:app1 id:0
PM2 | [2018-08-16T10:07:33.108Z] PM2 log: App name:app1 id:0 online
PM2 | [2018-08-16T10:07:33.383Z] PM2 log: App [app1] with id [0] and pid [11155], exited with code [1] via signal [SIGINT]
PM2 | [2018-08-16T10:07:33.383Z] PM2 log: Script /usr/local/bin/npm had too many unstable restarts (16). Stopped. "errored"
/home/ubuntu/.pm2/logs/app1-error.log :
/home/ubuntu/.pm2/logs/app1-out.log :
...
0|app1 | Specify configs in the ini-formatted file:
0|app1 | /home/ubuntu/.npmrc
0|app1 | or on the command line via: npm <command> --key value
0|app1 | Config info can be viewed via: npm help config
0|app1 |
0|app1 | [email protected] /usr/local/lib/node_modules/npm
0|app1 |
0|app1 | Usage: npm <command>
0|app1 |
0|app1 | where <command> is one of:
0|app1 | access, adduser, bin, bugs, c, cache, completion, config,
0|app1 | ddp, dedupe, deprecate, dist-tag, docs, doctor, edit,
0|app1 | explore, get, help, help-search, i, init, install,
0|app1 | install-test, it, link, list, ln, login, logout, ls,
0|app1 | outdated, owner, pack, ping, prefix, profile, Prune,
0|app1 | publish, rb, rebuild, repo, restart, root, run, run-script,
0|app1 | s, se, search, set, shrinkwrap, star, stars, start, stop, t,
0|app1 | team, test, token, tst, un, uninstall, unpublish, unstar,
0|app1 | up, update, v, version, view, whoami
0|app1 |
0|app1 | npm <command> -h quick help on <command>
0|app1 | npm -l display full usage info
0|app1 | npm help <term> search for help on <term>
0|app1 | npm help npm involved overview
0|app1 |
...
これはどういう意味ですか、pm2はnpmコマンドを認識しませんか?ここに欠けているパラメーターはありますか? ...
追加情報:
サーバー:Ubuntu 16.04
npmバージョン:5.6.0
nuxtバージョン:1.4.2
pm2バージョン:3.0.3
ノードのバージョン:8.11.1
複数のnuxtインスタンスがpm2で機能するためには、nuxt-start
内のnode_modules/nuxt/bin/nuxt-start
スクリプトを指す必要があります。
このガイド はそれをよく説明しています。まとめると、アプリのecosystem構成が必要です(ecosystem.config.js)。ここで、アプリに指定されたすべてのパラメーターを設定します。 ここ は、使用可能なすべてのパラメーターを含むリストです。
次のようになります。
module.exports = {
apps: [
{
name: 'app1',
port: 3000,
script: './node_modules/nuxt/bin/nuxt-start',
cwd: '/home/user/your-nuxt-project/app1',
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
},
{
name: 'app2',
port: 4000,
script: './node_modules/nuxt/bin/nuxt-start',
cwd: '/home/user/your-nuxt-project/app2',
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}
]
};
次に、プロジェクトのディレクトリにcdし、Sudo pm2 start
を実行します。設定ファイルが自動的に検出され、両方のアプリが同時に実行されます。
機能する場合は、以下のコマンドを試してください
Sudo pm2 start npm -- app1:dev