Nis*_*ani 116
如果要从CLI传递节点参数,那么
pm2 start myServer.js --node-args="--production --port=1337"
Run Code Online (Sandbox Code Playgroud)
.
编辑
你可以添加任何参数 --
pm2 start app.js -- --prod
Run Code Online (Sandbox Code Playgroud)
为deploymemt发布 docs文档.
tst*_*rzl 25
您可以按照此票证中的说明进行操作:https://github.com/Unitech/pm2/issues/13
虽然如果您正在通过环境,您可能需要考虑利用环境变量.通过这种方式,您可以创建一个变量,该变量可以由该环境中的任何进程访问process.env.*
.
所以你有一个配置文件config.json
:
{
"dev": {
"db": {
"hosts":["localhost"],
"database": "api"
},
"redis": {
"hosts": ["localhost"]
}
},
"staging": {
"db": {
"hosts":["1.1.1.1"],
"database": "api"
},
"redis": {
"hosts": ["2.2.2.2"]
}
},
"production": {
"db": {
"hosts":["1.1.1.1", "1.1.1.2", "1.1.1.3"],
"database": "api"
},
"redis": {
"hosts": ["2.2.2.2", "2.2.2.3"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后导入配置:
var config=require('./config.json')[process.env.NODE_ENV || 'dev'];
db.connect(config.db.hosts, config.db.database);
Run Code Online (Sandbox Code Playgroud)
然后,您将通过shell在您的环境中设置变量:
export NODE_ENV=staging
pm2 start app.js
Run Code Online (Sandbox Code Playgroud)
环境变量将持续与您的会话一样长.因此,您必须在该~/.bashrc
用户的文件中设置该变量才能保留.这将在每个会话中设置变量.
PM2有一个部署系统,允许您在每次应用程序被守护之前设置环境变量.这就是POSIX系统中守护进程通常采用参数的方式,因为这些参数不会随进程丢失.鉴于你的情况可能并不重要,但这是一个很好的做法.
此外,您应该考虑在本地停止/启动,并尽可能重新启动(如果处于群集模式)以防止在生产中停机.
Tra*_*vis 14
可以使用该过程定义参数.
您可以ecosystem.config.js
使用args
键定义新进程,如下所示:
{
name : 'my-service',
script : './src/service.js',
args : 'firstArg secondArg',
},
{
name : 'my-service-alternate',
script : './src/service.js',
args : 'altFirstArg altSecondArg',
}
Run Code Online (Sandbox Code Playgroud)
这里,两个进程使用相同的file(service.js
),但是向它传递不同的参数.
请注意,这些参数在其中处理service.js
.在我的情况下,我只是习惯process.argv[2]
得到第一个参数,依此类推.
jun*_*yea 13
我已经测试过了,它可以在我的 Windows 机器上运行。下面是使用 pm2 将参数传递给 Nodejs 应用程序的完整解决方案。
** 还有两种类型的参数
有 2 种方法可以通过 pm2 传递参数。
选项 1:使用 pm2 命令传递参数。
选项 2:使用配置文件,例如 Ecosystem.config.js
选项 1(通过命令传递 arg):
pm2 start app/myapp1.js --node-args="--max-http-header-size=80000" -- arg1 arg2
Run Code Online (Sandbox Code Playgroud)
//Access the arg as below in your node program.
console.log(process.argv[2]); // arg1
console.log(process.argv[3]); // arg2
Run Code Online (Sandbox Code Playgroud)
选项 2(使用配置文件): 如果您使用的是Ecosystem.config.js。您可以使用以下配置来定义:
{
name: 'my-app',
script: 'app\\myapp1.js',
env: {
NODE_ENV: 'DEV',
PORT : 5051
},
node_args: '--max-http-header-size=80000',
args : 'arg1 arg2',
instances: 1,
exec_mode: 'fork'
}
Run Code Online (Sandbox Code Playgroud)
以开发模式启动:
pm2 start --name myapp app/myapp1.js -- .\ecosystem.config.js
Run Code Online (Sandbox Code Playgroud)
要以生产模式启动,只需添加 --env=development
pm2 start --name myapp app/myapp1.js -- .\ecosystem.config.js --env=production
Run Code Online (Sandbox Code Playgroud)
//Access the arg as below in your node program.
console.log(process.argv[2]); // arg1
console.log(process.argv[3]); // arg2
Run Code Online (Sandbox Code Playgroud)
您可以通过传递参数将脚本发送到脚本--
.例如:pm2 start app.js -i max -- -a 23 // Pass arguments after -- to app.js
归档时间: |
|
查看次数: |
64117 次 |
最近记录: |