https://www.iteblog.com/archives/1313.html
上面的链接对于新装的话确实不错!亲测有效,不过有个缺点就是安装的版本号还是太低了。
本该到v6.多的,还是那么低。
解决方法:
先照上面的安装,然后
如果你有安装过n模块,第一步骤也可以省略了!
sudo n // 用于切换本地已经下载的node版本
如何在后台挂起服务(其中 npm start 就是你开启项目的指令)
nohup npm start > myLog.log 2>&1 &
第二种安装方法,适合没有外网的服务器
https://www.jianshu.com/p/2cc020b170c0
下载的包可能为***.tar.xz (解压指令为 tar xvjf ***.tar.xz)
2.对于离线环境,如何全局安装node_modules
查看全局包位置:
npm root -g
可以看到实际的位置 (把文件拷贝过去就可以了)
修改全局包位置
npm config set prefix '目标目录'
查看修改结果
npm config get prefix
或者用npm root -g命令也可
使用pm2进行项目后台运行
npm install pm2 -g
: 全局安装。
① 在你的项目下安装 npm install pm2 --save
② 在根努力下创建pm2.json(可以自己命名)
1 { 2 "apps": [{ 3 "name": "liblog", 4 "script": "index.js", 5 "cwd": "/usr/local/node/gongwuyuan/lookWebsite", 6 "max_memory_restart": "1G", 7 "autorestart": true, 8 "node_args": [], 9 "args": [], 10 "env": { 11 12 } 13 }] 14 }
cwd : 指的是根目录,script: 指的是要运行的文件目录
各参数详解
{ "apps": { "name": "wuwu", // 项目名 "script": "./bin/www", // 执行文件 "cwd": "./", // 根目录 "args": "", // 传递给脚本的参数 "interpreter": "", // 指定的脚本解释器 "interpreter_args": "", // 传递给解释器的参数 "watch": true, // 是否监听文件变动然后重启 "ignore_watch": [ // 不用监听的文件 "node_modules", "logs" ], "exec_mode": "cluster_mode", // 应用启动模式,支持fork和cluster模式 "instances": 4, // 应用启动实例个数,仅在cluster模式有效 默认为fork;或者 max "max_memory_restart": 8, // 最大内存限制数,超出自动重启 "error_file": "./logs/app-err.log", // 错误日志文件 "out_file": "./logs/app-out.log", // 正常日志文件 "merge_logs": true, // 设置追加日志而不是新建日志 "log_date_format": "YYYY-MM-DD HH:mm:ss", // 指定日志文件的时间格式 "min_uptime": "60s", // 应用运行少于时间被认为是异常启动 "max_restarts": 30, // 最大异常重启次数,即小于min_uptime运行时间重启次数; "autorestart": true, // 默认为true, 发生异常的情况下自动重启 "cron_restart": "", // crontab时间格式重启应用,目前只支持cluster模式; "restart_delay": "60s" // 异常重启情况下,延时重启时间 "env": { "NODE_ENV": "production", // 环境参数,当前指定为生产环境 process.env.NODE_ENV "REMOTE_ADDR": "爱上大声地" // process.env.REMOTE_ADDR }, "env_dev": { "NODE_ENV": "development", // 环境参数,当前指定为开发环境 pm2 start app.js --env_dev "REMOTE_ADDR": "" }, "env_test": { // 环境参数,当前指定为测试环境 pm2 start app.js --env_test "NODE_ENV": "test", "REMOTE_ADDR": "" } } }
③ 通过 sudo pm2 start index 或者sudo pm2 start pm2.json都可以开启服务,不过两个命令在不同的端口下开启服务
最简单的办法可以通过sudo pm2 restart pm2.json
重启服务,但这种方式会导致服务临时性的中断(重启服务需要时间,重启过程中会导致无法处理用户的请求从而导致服务中断)。如果不想服务中断,那么可以通过发送信号的方式来重启方式,具体命令为:
sudo pm2 sendSignal SIGUSR2 pm2.json
通过发送 SIGUSR2
信号,pm2 会将这个信号派发给框架,框架主进程捕获到这个信号后,会 fork 一个新的子进程提供服务,然后逐渐将之前的子进程重启,从而达到不中断服务重启的目的。
##可以使用pm2 实现集群(cluster)
//-i max 根据有效CPU数目启动最大进程数目 pm2 start app.js -i max --name [项目名称]
//内存使用超过上限自动重启 可以加上--max-memory-restart参数
pm2 start app.js --max-memory-restart 20M
//如果需要设置定时重启,cluster模式有提供参数可以选择;
cron_restart
crontab时间格式重启应用
pm2 start app.js --cron "0 3 * * *" //表示 每天的 凌晨3点都重启任务
第一段应该定义的是:分钟,表示每个小时的第几分钟来执行。范围是从0-59
第二段应该定义的是:小时,表示从第几个小时来执行,范围是从0-23
第三段应该定义的是:日期,表示从每个月的第几天执行,范围从1-31
第四段应该定义的是:月,表示每年的第几个月来执行,范围从1-12
第五段应该定义的是:周,表示每周的第几天执行,范围从0-6,其中 0表示星期日
ubuntu 如何给文件夹root权限
### linux 查看node的文件位置
which node
修改Linux环境变量
cd /etc vim ./profile 在最底部添加 export NODE_HOME= "这里要填的是which node 命令的结果,去掉最后的/node" export PATH=$NODE_HOME:$PATH 保存退出 刷新这个配置文件 source ./profile 检查是否成功 1. echo $PATH 2. export