我有一个简单的节点服务器:
//server.js
import express from 'express';
import React from 'react';
...
Run Code Online (Sandbox Code Playgroud)
当我尝试使用Forever运行时:
forever start -c "babel-node --experimental" server.js
,它因使用而错误 import
/Applications/MAMP/htdocs/React/ReactBoilerplates/koba04/app/server.js:1
(function (exports, require, module, __filename, __dirname) { import express
^^^^^^
SyntaxError: Unexpected reserved word
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:902:3
error: Forever detected script exited with code: 8
Run Code Online (Sandbox Code Playgroud)
我也曾尝试PM2和nodemon,我得到同样的错误那里.对于pm2,我遵循了这个问题https://github.com/Unitech/PM2/issues/1167,但它也没有用.我在这做错了什么?
我在我写的节点应用程序中有一些有用的日志记录 console.log
node server.js >> /var/log/nodeserver.log 2>&1
Run Code Online (Sandbox Code Playgroud)
但是,在pm2下尝试相同时:
pm2 start server.js >> /var/log/pm2server.log 2>&1
Run Code Online (Sandbox Code Playgroud)
日志文件仅显示pm2启动信息
应用程序是否可以使用pm2进行日志记录?在他们的页面上,他们讨论日志记录,并显示带有文本的图像"log message from echo.js",但我没有看到将自定义信息输入pm2日志.
我像这样使用生态系统.config.js 启动了我的节点应用程序。
pm2 start ecosystem.config.js
我的生态系统.config.js 就在这里。
module.exports = {
/**
* Application configuration section
* http://pm2.keymetrics.io/docs/usage/application-declaration/
*/
apps : [
// First application
{
name : "API",
script : "./app/index.js",
env: {
COMMON_VARIABLE: "true"
},
env_production : {
NODE_ENV: "production"
}
},
],
/**
* Deployment section
* http://pm2.keymetrics.io/docs/usage/deployment/
*/
deploy : {
production : {
user : "node",
host : "212.83.163.1",
ref : "origin/master",
repo : "git@github.com:repo.git",
path : "/var/www/production",
"post-deploy" : "npm install && pm2 startOrRestart ecosystem.json …Run Code Online (Sandbox Code Playgroud) 我有一个在pm2上运行的节点服务器,它取决于一些外部服务.
当这些服务器出现故障时,我pm2开始重新启动我的应用程序,但这将继续运行,直到它堵塞我的CPU和服务器上的RAM,每分钟重启50次.
有没有办法限制pm2上的重启次数?当服务器达到某个RAM内存级别时,有一种方法可以重新启动服务器,所以我希望我要求的这个功能存在.
我有一个用 Typescript 编写的应用程序,它与 PM2 一起运行。目前我编译为 JavaScript,然后使用 PM2 启动应用程序。我的ecosystem.config.js文件看起来像这样:
module.exports = {
apps: [
{
name: 'My Application',
script: './dist/server/index.js',
env_qa: {
PORT: 3001,
NODE_ENV: 'production',
},
env_production: {
PORT: 3000,
NODE_ENV: 'production',
},
},
],
};
Run Code Online (Sandbox Code Playgroud)
我使用以下命令运行它:
pm2 stop ecosystem.config.js --env qa
在开发时,我只是运行ts-node server而不是编译和使用 PM2。我最近读到 ts-node 有一个“transpileOnly”或“fast”模式,这意味着它可以用于生产。首先,我想知道这是否可以在生产环境中使用。其次,我如何仍然使用 PM2 来启动我的应用程序但使用 ts-node?
试过这个,但它不起作用:
SHELL=/bin/bash
PATH=/usr/lib/node_modules/pm2/bin
* 0,12 * * * pm2 restart all
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我该怎么ng serve --prod办:
用pm2?
ng来自angular-cli,Angular2.我正在使用DigitalOcean.
我试过http-server -p 4200 -d false在dist /文件夹中测试之后ng build --prod
当我从域https://www.unibookkh.com/请求时,我得到404错误:(我已经设置了nginx来监听端口4200.
我用http-server测试,因为我想我可以通过这个命令pm2 start my_app_process.json在哪里运行pm2
my_app_process.json
{
"apps": [
{
"name": "angular",
"cwd": "~/angular2",
"args": "-p 4200 -d false",
"script": "/usr/bin/http-server"
}
]
}
Run Code Online (Sandbox Code Playgroud)
有关如何使用PM2的更好的想法?
我看到我的应用程序活动句柄数不断增加.活动句柄的数量究竟是多少?这是我必须要注意防止应用程序崩溃吗?
是否可以停止或禁用 pm2 模块?我确实安装了 pm2-logrotate 模块,但最近社区发现了一个影响我们服务的问题,我们需要优先停止或禁用该模块。
模块不断重启,节点应用程序正在生产中。所以我们不能只是停止 pm2 并寻找修复程序。
nodejs version: "4.8.2"
pm2 version "2.7.2"
pm2-logrotate version "2.4.0"
OS-Release: "Raspbian Stretch"
$ pm2 describe pm2-logrotate | grep -i script
? script path ? /home/user/.pm2/node_modules/pm2-logrotate/app.js ?
? script args ? N/A ?
? script id ? 0 ?
$ pm2 describe pm2-logrotate | grep -i id
Describing process with id 0 - name pm2-logrotate
? pid path ? /home/user/.pm2/pids/pm2-logrotate-0.pid ?
? script id ? 0 ?
$ cat /home/user/.pm2/pids/pm2-logrotate-0.pid
7723
Run Code Online (Sandbox Code Playgroud) 我一直在将一些已经在同一台机器上执行的项目转移到各个泊坞窗。我尝试pm2在其中一个docker项目上使用,以确保如果出现问题(这是一个易失性项目),该服务将重新启动,并且某些示例要求使用Dockerfile pm2-runtime而不是pm2。我一直在寻找这两者的区别,但找不到特定的东西,有人可以帮忙吗?
pm2 ×10
node.js ×7
angular ×1
babeljs ×1
cron ×1
crontab ×1
docker ×1
dockerfile ×1
forever ×1
javascript ×1
logging ×1
nginx ×1
npm ×1
puppeteer ×1
typescript ×1