摘要:运行文件启动项目及的安装定义运行配置文件我们可以预定义一个配置文件,然后制定运行这个配置文件,比如我们定义一个文件,内容如下然后可以通过运行这个。如果设置成,当应用程序变动时,会自动重载。
pm2运行json文件启动node项目及pm2-web的安装 定义运行配置文件
我们可以预定义一个配置文件,然后制定运行这个配置文件,比如我们定义一个文件app.json,内容如下:
[root@jenkins-master linux]# cat app.json { "apps":[ { "name": "service-sk_platform_professional_dev", "cwd": "/data/source/service-sk_platform_professional_dev/publish/", "script": "/data/source/service-sk_platform_professional_dev/publish/service/server.js", "log_date_format": "YYYY-MM-DD HH:mm Z", "error_file": "/data/pm2-log/errlogs/service-sk_platform_professional_dev-err.log", "out_file": "/data/pm2-log/outlogs/service-sk_platform_professional_dev-out.log", "pid_file": "/data/pm2-log/outlogs/service-sk_platform_professional_dev.pid", "instances": 1, "node_args": "--inspect=0.0.0.0:33111", "min_uptime": "20s", "max_restarts": 50, "watch": false, "merge_logs": true, "exec_interpreter": "node", "exec_mode": "fork", } ] }
[root@node-44 ~]# cat app.json { "apps":[ { "name": "sk_service_calculate_convert_dev", "cwd": "/data/source/sk_service_calculate_convert_dev/publish/", "script": "/data/source/sk_service_calculate_convert_dev/publish/service/server.js", "log_date_format": "YYYY-MM-DD HH:mm Z", "error_file": "/data/pm2-log/errlogs/sk_service_calculate_convert_dev-err.log", "out_file": "/data/pm2-log/outlogs/sk_service_calculate_convert_dev-out.log", "pid_file": "/data/pm2-log/outlogs/sk_service_calculate_convert_dev.pid", "instances": 1, "min_uptime": "20s", "max_restarts": 50, "watch": false, "merge_logs": true, "exec_interpreter": "node", "exec_mode": "fork", },{ "name": "sk_service_calculate_convert_dev2", "cwd": "/data/source/sk_service_calculate_convert_dev/publish/", "script": "/data/source/sk_service_calculate_convert_dev/publish/service/server.js", "args": ""debug" "12345"", "log_date_format": "YYYY-MM-DD HH:mm Z", "error_file": "/data/pm2-log/errlogs/sk_service_calculate_convert2_dev-err.log", "out_file": "/data/pm2-log/outlogs/sk_service_calculate_convert2_dev-out.log", "pid_file": "/data/pm2-log/outlogs/sk_service_calculate_convert2_dev.pid", "instances": 1, "min_uptime": "20s", "max_restarts": 50, "watch": false, "merge_logs": true, "exec_interpreter": "node", "exec_mode": "fork", },{ "name": "sk_service_calculate_convert_dev3", "cwd": "/data/source/sk_service_calculate_convert_dev/publish/", "script": "/data/source/sk_service_calculate_convert_dev/publish/service/server.js", "args": ""debug" "12344"", "log_date_format": "YYYY-MM-DD HH:mm Z", "error_file": "/data/pm2-log/errlogs/sk_service_calculate_convert3_dev-err.log", "out_file": "/data/pm2-log/outlogs/sk_service_calculate_convert3_dev-out.log", "pid_file": "/data/pm2-log/outlogs/sk_service_calculate_convert3_dev.pid", "instances": 1, "min_uptime": "20s", "max_restarts": 50, "watch": false, "merge_logs": true, "exec_interpreter": "node", "exec_mode": "fork", },{ "name": "sk_service_calculate_convert_dev4", "cwd": "/data/source/sk_service_calculate_convert_dev/publish/", "script": "/data/source/sk_service_calculate_convert_dev/publish/service/server.js", "args": ""debug" "12343"", "log_date_format": "YYYY-MM-DD HH:mm Z", "error_file": "/data/pm2-log/errlogs/sk_service_calculate_convert4_dev-err.log", "out_file": "/data/pm2-log/outlogs/sk_service_calculate_convert4_dev-out.log", "pid_file": "/data/pm2-log/outlogs/sk_service_calculate_convert4_dev.pid", "instances": 1, "min_uptime": "20s", "max_restarts": 50, "watch": false, "merge_logs": true, "exec_interpreter": "node", "exec_mode": "fork", } ] }
for (int i = 0;i<"${node_number}".toInteger();i++){ Integer nodeport=10000+i sh "cat /data/ansible/playbook/linux/linux_app.json |sed -e "s/sourcepath_node_Jenvironment/${projectname}_${environment}_${i}/g" -e "s/sourcepath_Jenvironment/${projectname}_${environment}/g" -e "s/process_mode/${process_mode}/g" -e "s/node_port/${nodeport}/g" >>${WORKSPACE}/publish/app.json" sh(script: "echo -n ", " >>${WORKSPACE}/publish/app.json") }
然后可以通过,运行这个App。
pm2 start app.json
apps:json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用 name:应用程序名称 args:脚本的参数域 cwd:应用程序所在的目录 script:应用程序的脚本路径 log_date_format: node_args:node 的参数域 error_file:自定义应用程序的错误日志文件 out_file:自定义应用程序日志文件 pid_file:自定义应用程序的pid文件 instances: min_uptime:最小运行时间,这里设置的是60s即如果应用程序在60s内退出,pm2会认为程序异常退出,此时触发重启max_restarts设置数量 max_restarts:设置应用程序异常退出重启的次数,默认15次(从0开始计数) cron_restart:定时启动,解决重启能解决的问题 watch:是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。 merge_logs: exec_interpreter:应用程序的脚本类型,这里使用的shell,默认是nodejs exec_mode:应用程序启动模式,这里设置的是cluster_mode(集群),默认是fork autorestart:启用/禁用应用程序崩溃或退出时自动重启 vizion:启用/禁用vizion特性(版本控制)总结-常用命令总结如下:
安装pm2
npm install -g pm2
启动应用
pm2 start app.js
列出所有应用
pm2 list
查看资源消耗
pm2 monit
查看某一个应用状态
pm2 describe [app id]
查看所有日志
pm2 logs
重启应用
pm2 restart [app id]
停止应用
pm2 stop [app id]
开启api访问
pm2 web
安装pm2-web 安装软件安装时需要g++,make等软件,下面的软件你自己挑(我是刚装完系统就都装了) yum -y install ntpdate lrzsz tree cmake gcc gcc-c++ autoconf l libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel libxslt-devel libtool-ltdl-devel make wget docbook-dtds asciidoc e2fsprogs-devel gd gd-devel openssl openssl-devel lsof git unzip gettext-devel gettext libevent libevent-devel pcre pcre-devel npm install --unsafe-perm -g pm2-web pm2-web配置启动文件
[root@localhost ~]# cat pm2-web-config.json { "www": { "host": "localhost", "address": "0.0.0.0", "port": 11111 } } [root@localhost ~]# cat pm2-web-start.sh nohup pm2-web --config pm2-web-config.json >pm2-web.log& [root@localhost ~]# sh +x pm2-web-start.sh
server { listen 80; server_name pm2-web.xxxx.com; access_log /data/nginx/logs/node-web.xxx.com/node-web.xxxx.com.log main; location / { auth_basic "node-web monitor"; auth_basic_user_file /data/nginx/htpasswd.conf; //设置用户访问控制 proxy_pass http://192.168.0.xxx:xxxx; proxy_redirect off; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_connect_timeout 360; proxy_send_timeout 360; proxy_read_timeout 360; } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/110617.html
摘要:感谢老师,老师的慕课网教程购买阿里云服务器及域名终端连接阿里云服务器环境输入密码购买时的密码如果出现这个问题的解决方案解决方法查看硬盘挂在情况如果有数据盘的情况下查看硬盘使用情况通过设置快捷登录权限,可以增加几个拥有权限的用户下查 感谢 Scott 老师,Scott老师的慕课网教程 https://coding.imooc.com/clas... 1. 购买阿里云服务器及域名 2. ...
摘要:感谢老师,老师的慕课网教程购买阿里云服务器及域名终端连接阿里云服务器环境输入密码购买时的密码如果出现这个问题的解决方案解决方法查看硬盘挂在情况如果有数据盘的情况下查看硬盘使用情况通过设置快捷登录权限,可以增加几个拥有权限的用户下查 感谢 Scott 老师,Scott老师的慕课网教程 https://coding.imooc.com/clas... 1. 购买阿里云服务器及域名 2. ...
摘要:一是什么是可以用于生产环境的的进程管理工具,并且它内置一个负载均衡。嗯嗯,最好的用处就是监控我们的生产环境下的程序运行状态,让它给我们日以继日的处于工作状态。部署自动部署,避免逐个在所有服务器中进行。 一、PM2是什么 是可以用于生产环境的Nodejs的进程管理工具,并且它内置一个负载均衡。它不仅可以保证服务不会中断一直在线,并且提供0秒reload功能,还有其他一系列进程管理、监控...
摘要:一是什么是可以用于生产环境的的进程管理工具,并且它内置一个负载均衡。嗯嗯,最好的用处就是监控我们的生产环境下的程序运行状态,让它给我们日以继日的处于工作状态。部署自动部署,避免逐个在所有服务器中进行。 一、PM2是什么 是可以用于生产环境的Nodejs的进程管理工具,并且它内置一个负载均衡。它不仅可以保证服务不会中断一直在线,并且提供0秒reload功能,还有其他一系列进程管理、监控...
摘要:于是着手将应用迁移到阿里云的上去。环境介绍本地,应用采用的技术远端服务器阿里云核内存,,系统为账户名系统架构服务器部署的应用,并在端口进行监听。通过浏览器打开可以看到部署的应用可以访问了。 背景 前一段时间,是通过百度云的BAE部署自己的Node应用的,不过随着应用的不断开发,BAE的限制不断制约了应用的使用。于是着手将应用迁移到阿里云的ECS上去。本文即是介绍了如何在ECS上搭建No...
阅读 1062·2021-11-22 09:34
阅读 3094·2021-09-29 09:35
阅读 334·2021-09-04 16:40
阅读 2805·2019-08-30 15:53
阅读 2459·2019-08-30 15:44
阅读 2487·2019-08-30 14:10
阅读 1224·2019-08-29 18:43
阅读 2091·2019-08-29 13:26