pm2运行json文件启动node项目和pm2-web的安装定义运行配置文件我们可以预先定义一个配置文件,然后制定并运行这个配置文件,比如我们定义一个app.json文件内容如下:[root@jenkins-masterlinux]#catapp.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-DDHH:mmZ","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~]#猫应用程序j儿子{“应用程序”:[{“名称”:“sk_service_calculate_convert_dev”,“cwd”:“/data/source/sk_service_calculate_convert_dev/publish/”,“脚本”:“/data/source/sk_service_calculate_convert_dev/publish/service/server。js","log_date_format":"YYYY-MM-DDHH:mmZ","error_file":"/data/pm2-log/errlogs/sk_service_calculate_convert_dev-err.log","out_file":"/data/pm2-日志/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_格式":"YYYY-MM-DDHH:mmZ","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":假,“merge_logs”:真,“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-DDHH:mmZ","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-日志/输出日志/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”,},{“名称”:“sk_service_calculate_convert_dev4”,“cwd”:“/data/source/sk_service_calculate_convert_dev/publish/”,“脚本”:“/data/source/sk_service_calculate_convert_dev/publish/service/server.js","args":"'debug''12343'","log_date_format":"YYYY-MM-DDHH:mmZ","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","实例":1,"min_uptime“:“20s”,“max_restarts”:50,“watch”:false,“merge_logs”:true,“exec_interpreter”:“node”,“exec_mode”:“fork”,}]}for(inti=0;我&我t;"${node_number}".toInteger();i++){整数nodeport=10000+ish"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',\r\n'>>${WORKSPACE}/publish/app.json")}然后你可以运行应用程序pm2startapp.jsonapps:json结构,apps是一个数组,每个数组成员对应一个运行在pm2中的应用程序name:应用程序名称args:脚本的参数域cwd:应用程序所在目录script:应用程序的脚本pathlog_date_format:node_args:节点参数字段error_file:自定义应用的错误日志文件out_file:自定义应用的日志文件pid_file:自定义应用实例的pid文件:min_uptime:最小运行时间,这里设置为60s即如果应用在60s内退出,pm2会认为应用异常退出,此时触发重启。已解决问题watch:是否开启监听模式,默认为false。如果设置为true,pm2将在应用程序更改时自动重新加载。在这里您还可以设置要监控的文件。merge_logs:exec_interpreter:应用程序的脚本类型,这里使用的shell,默认是nodejscrashesorexitsvizion:enable/disablevizionfeature(versioncontrol)总结-常用命令总结如下:installpm2npminstall-gpm2startapplicationpm2startapp.jslistallapplicationspm2listviewresourceconsumptionpm2monitviewanapplicationstatuspm2describe[appid]查看所有日志pm2logsrestartapplicationpm2restart[appid]stopapplicationpm2stop[appid]openapiaccesspm2web安装pm2-web安装软件安装需要g++、make等软件,如下你选择的软件(我刚刚安装了系统)yum-yinstallntpdatelrzsztreecmakegccgcc-c++autoconfllibjpeglibjpeg-devellibpnglibpng-develfreetypefreetype-devellibxml2libxml2-develzlibzlib-develglibcglibc-develglib2glib2-develbzip2bzip2-develncursesncurses-develcurlcurl-devellibxslt-devellibtool-ltdl-devel制作wgetdocbook-dtdsasciidoce2fsprogs-develgdgd-developensslopenssl-devellsofgitunzipgettext-devellibgettextlibentev-develpcrepcre-develnpminstall--unsafe-perm-gpm2-webpm2-web配置启动文件[root@localhost~]#catpm2-web-config.json{"www":{"host":"localhost","address":"0.0.0.0","port":11111}}[root@localhost~]#catpm2-web-start.shnohuppm2-web--configpm2-web-config.json>pm2-web.log&[root@localhost~]#sh+xpm2-web-start.shserver{listen80;服务器名称pm2-web.xxxx.com;access_log/data/nginx/logs/node-web.xxx.com/node-web.xxxx.com.logmain;location/{auth_basic"node-webmonitor";auth_basic_user_file/data/nginx/htpasswd.conf;//设置用户访问控制proxy_passhttp://192.168.0.xxx:xxxx;proxy_redirect关闭;proxy_set_header主机$http_host;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;proxy_http_version1.1;proxy_set_header升级$http_upgrade;proxy_set_header连接“升级”;proxy_connect_timeout360;proxy_send_timeout360;proxy_read_timeout360;}}
