动态 版块 发帖 消息 我的
Loading...
支持原创软件,共创美好明天!
子版块
xyb
12
xyb
在html页面的HEAD标签内添加如下CSS代码<style type="text/css"> html { filter: gray; -webkit-filter: grayscale(100%); filter: grayscale(100%); -moz-filter: grayscale(100%); -ms-filter: grayscale(100%); -o-filter: grayscale(100%); filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); -webkit-filter: grayscale(1); } </style>
 2   0  55天前
xyb
222
xyb
1、通过css的方式*{ moz-user-select: -moz-none; -moz-user-select: none; -o-user-select:none; -khtml-user-select:none; -webkit-user-select:none; -ms-user-select:none; user-select:none; }2、通过在body标签中添加如下属性:<body οncοntextmenu="return false;" onselectstart="return false">3、在js中添加如下两行语句:document.οncοntextmenu=function(){return false;}; document.onselectstart=function(){return false;};
 3   0  224天前
xyb
186
xyb
1、获取DIV标签内的HTMLvar divbox=document.getElementById('div-box');2、清除DIV标签内的HTMLdivbox.innerHTML="";3、修改改变DIV标签的HTMLdivbox.innerHTML="<li>List</li>";4、插入HTMLdivbox.innerHTML+="<li>List</li>";5、添加CLASSdivbox.classList.add("ok");6、删除CLASSdivbox.classList.remove("ok");
 3   0  228天前
问星
608
默认禁用root帐户,需要加密码才能用。sudo passwd root可以设置root密码或者打开终端(即Terminal) 输入sudo -s -H 也行。注意H 一定要是大写。这样可以直接进入root
 4   0  344天前
问星
341
win10系统用标识右键菜单打开命令行的键,键值639bc8(十六进制):ShowBasedOnVelocityId(显示标识)HideBasedOnVelocityId(隐藏标识)方法一:一键自动导入设置。将以下内容保存成reg文件,如a.reg,双击该文件自动导入设置。Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Background\shell\OpenCMDHere] "ShowBasedOnVelocityId"=dword:00639bc8 [HKEY_CLASSES_ROOT\Directory\Background\shell\OpenCMDHere\command] @="cmd.exe /s /k pushd \"%V\""方法二:手工设置1. 我们用regedit或者其他注册表编辑器定位到HKEY_CLASSES_ROOT\Directory\Background\shell\处,右击新建项“OpenCMDHere”,并在该项下,右击新建项“command”。2.我们在右边OpenCMDHere项下,右击新建REG_DWORD类型整数值。设置键名为“ShowBasedOnVelocityId”,键值为“639bc8”。3.进入command项下,设置键值为cmd.exe /s /k pushd "%V"
 4   0  366天前
问星
511
这次的原因是字段的数据类型为datetime时,导出的数据字段类型为变成了"datetime(0)".解决方法:把导出SQL文件里的所有"datetime(0)"替换为"datetime".OK导入成功。
 6   0  400天前
xyb
753
xyb
在传统的 JavaScript 开发中,查找 DOM 往往是开发人员遇到的第一个头疼的问题,原生的 JavaScript 所提供的 DOM 选择方法并不多,仅仅局限于通过 tag, name, id 等方式来查找,这显然是远远不够的,如果想要进行更为精确的选择不得不使用看起来非常繁琐的正则表达式,或者使用某个库。事实上,现在所有的浏览器厂商都提供了 querySelector 和 querySelectorAll 这两个方法的支持,甚至就连微软也派出了 IE 8 作为支持这一特性的代表,querySelector 和 querySelectorAll 作为查找 DOM 的又一途径,极大地方便了开发者,使用它们,你可以像使用 CSS 选择器一样快速地查找到你需要的节点。querySelectorquerySelector 和 querySelectorAll 的使用非常的简单,就像标题说到的一样,它和 CSS 的写法完全一样,对于前端开发人员来说,这是难度几乎为零的一次学习。假如我们有一个 id 为 test 的 DIV,为了获取到这个元素,你也许会像下面这样:document.getElementById("test");1现在我们来试试使用新方法来获取这个 DIV:document.querySelector("#test"); document.querySelectorAll("#test")[0];12获取文档中 class=”example” 的第一个 <p> 元素:document.querySelector("p.example");1获取文档中有 “target” 属性的第一个 <a> 元素:document.querySelector("a[target]");1假定你选择了两个选择器: <h2> 和 <h3> 元素。 以下代码将为文档的第一个 <h2> 元素添加背景颜色:<h2>A h2 element</h2> <h3>A h3 element</h3> document.querySelector("h2, h3").style.backgroundColor = "red";//返回h2或者h3的首个元素1234但是,如果文档中 <h3> 元素位于 <h2> 元素之前,<h3> 元素将会被设置指定的背景颜色。<h3>A h3 element</h3> <h2>A h2 element</h2> document.querySelector("h2, h3").style.backgroundColor = "red";1234使用这两个方法无法查找带伪类状态的元素,比如querySelector(':hover')不会得到预期结果。querySelectorAll该方法返回所有满足条件的元素,结果是个nodeList集合。查找规则与前面所述一样。elements = document.querySelectorAll('div.foo');//返回所有带foo类样式的div1但需要注意的是返回的nodeList集合中的元素是非实时(no-live)的,想要区别什么是实时非实时的返回结果,请看下例:<div id="container"> <div></div> <div></div> </div> //首先选取页面中id为container的元素 container=document.getElementById('#container'); console.log(container.childNodes.length)//结果为2 //然后通过代码为其添加一个子元素 container.appendChild(document.createElement('div')); //这个元素不但添加到页面了,这里的变量container也自动更新了 console.log(container.childNodes.length)//结果为31234567891011通过上面的例子就很好地理解了什么是会实时更新的元素。document.getElementById返回的便是实时结果,上面对其添加一个子元素后,再次获取所有子元素个数,已经由原来的2个更新为3个(这里不考虑有些浏览器比如Chrome会把空白也解析为一个子节点)。感觉区别不大是吧,但如果是稍微复杂点的情况,原始的方法将变得非常麻烦,这时候 querySelector 和 querySelectorAll 的优势就发挥出来了。比如接下来这个例子,我们将在 document 中选取 class 为 test 的 div 的子元素 p 的第一个子元素,当然这很拗口,但是用本文的新方法来选择这个元素,比用言语来描述它还要简单。document.querySelector("div.test>p:first-child"); document.querySelectorAll("div.test>p:first-child")[0];12我们使用 querySelectorAll 给所有 class 为 emphasis 的元素加粗显示。var emphasisText = document.querySelectorAll(".emphasis"); for( var i = 0 , j = emphasisText.length ; i < j ; i++ ){ emphasisText[i].style.fontWeight = "bold"; }1234这是原生方法,比起jquery速度快
 15   0  780天前
xyb
717
xyb
echo "export PATH=$PATH:/www/web/node/node/bin" >/etc/profile.d/node.shsource /etc/profile.d/node.shecho "export PATH=$PATH:/www/web/node/mongodb/bin" >/etc/profile.d/mongodb.shsource /etc/profile.d/mongodb.sh
 15   0  781天前
xyb
812
xyb
在Centos中的Nginx配置https做反向代理跟配置http做反向代理基本一样,只是多了ssl的相关配置,如果不知道如何在Centos中配置Nginx做反向代理可以参考文章《Centos 中安装与配置Nginx - 知识林》,如果没有支持https的SSL证书可以参考文章《阿里云和腾讯云免费SSL证书 - 知识林》来获取免费的SSL证书。在Centos中配置Nginx做https的反向代理只需要修改之前所描述的*.conf文件即可,具体内容如下:server { listen 80; listen 443; server_name c.zslin.com; ssl on; ssl_certificate /etc/nginx/cert/1_c.zslin.com_bundle.crt; ssl_certificate_key /etc/nginx/cert/2_c.zslin.com.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; server_name zslin.com www.zslin.com *.zslin.com; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_pass http://website:port; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_redirect http:// $scheme://; #做https跳转 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } 注意:listen 443:表示监听443端口,即以https提交的请求,上面的listen 80表示同时也监听以http提交的请求;ssl on:表示开启SSL协议;ssl_certificate:指定SSL证书的crt文件路径(如果是阿里云的证书则是pem文件);ssl_certificate_key:指定SSL证书的key文件路径;其他ssl开头的可以照搬;proxy_pass:指定代理的地址,可以是外网地址,也可以是内网地址;proxy_redirect http:// $scheme://:表示在程序中有redirect跳转时,将采用原有传输协议方式跳转,即如果是以https请求,在跳转后依然是https。配置完成重启Nginx即可以https访问。在Windows中配置Nginx做https的反向代理在Windows中安装和配置Nginx其实也比较简单,进入下载地址:http://nginx.org/en/download.html,点击最新版下载,如下图:下载后将压缩文件解压到合适的目录,可以看到如下图的目录结构:运行nginx.exe即可,不过这样运行不是在windows的服务中运行,这样关闭和重新启动都很不方便,也不稳定,一般建议是将Nginx做为windows服务来运行。制作windows服务可以下载winsw小工具来完成,解压后可以得到winsw-1.9-bin.exe,可以将该文件移动到nginx安装目录,并重命名为服务名称,如:nginx-server.exe,创建nginx-server.xml文件,注意这两个名称要一样,xml文件内容如下:<?xml version="1.0" encoding="UTF-8" ?> <service> <id>nginx</id> <name>nginx</name> <description>nginx</description> <executable>D:\java\nginx-1.11.8\nginx.exe</executable> <logpath>D:\java\nginx-1.11.8\</logpath> <logmode>roll</logmode> <depend></depend> <startargument>-p D:\java\nginx-1.11.8\</startargument> <stopargument>-p D:\java\nginx-1.11.8\ -s stop</stopargument> </service> 注意:将executable、logpath、startargument、stopargument这几个地方的路径修改为自己nginx的安装目录即可。打开命令提示符窗口进入到nginx-server.exe所在目录,键入:nginx-server.exe install即可安装windows服务,nginx-server.exe uninstall卸载windows服务。现在开始配置。在windows中Nginx的配置文件在:安装目录/conf/nginx.conf,在这个配置文件中复制一个server来做修改,内容如下:server { listen 443 ssl; server_name c.zslin.com; ssl_certificate 1_c.zslin.com_bundle.crt; ssl_certificate_key 2_c.zslin.com.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { #root html; #index index.html index.htm; proxy_pass http://localhost:81; proxy_set_header Host $host; proxy_redirect http:// $scheme://; #做https跳转 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 注意:具体描述跟上面Centos中的一样。ssl_certificate和ssl_certificate_key对应值没有写路径是因为我已经将这两个文件复制到了conf所在目录。nginx-server.exe start:启动服务nginx-server.exe stop:停止服务本文所属【知识林】:http://www.zslin.com/web/article/detail/73
 16   0  781天前
xyb
820
xyb
转自https://blog.csdn.net/chengxuyuanyonghu/article/details/74910875pm2 是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的,下面我们来看pm2常用的命令用法介绍吧。PM2 (github上的源码)是开源的基于Nodejs的进程管理器,包括守护进程,监控,日志的一整套完整的功能,基本是Nodejs应用程序不二的守护进程选择,事实上它并不仅仅可以启动Nodejs的程序,只要是一般的脚本的程序它同样可以胜任。以下是pm2常用的命令行$ pm2 start app.js              # 启动app.js应用程序$ pm2 start app.js -i 4         # cluster mode 模式启动4个app.js的应用实例     # 4个应用程序会自动进行负载均衡$ pm2 start app.js --name="api" # 启动应用程序并命名为 "api"$ pm2 start app.js --watch      # 当文件变化时自动重启应用$ pm2 start script.sh           # 启动 bash 脚本$ pm2 list                      # 列表 PM2 启动的所有的应用程序$ pm2 monit                     # 显示每个应用程序的CPU和内存占用情况$ pm2 show [app-name]           # 显示应用程序的所有信息$ pm2 logs                      # 显示所有应用程序的日志$ pm2 logs [app-name]           # 显示指定应用程序的日志$ pm2 flush$ pm2 stop all                  # 停止所有的应用程序$ pm2 stop 0                    # 停止 id为 0的指定应用程序$ pm2 restart all               # 重启所有应用$ pm2 reload all                # 重启 cluster mode下的所有应用$ pm2 gracefulReload all        # Graceful reload all apps in cluster mode$ pm2 delete all                # 关闭并删除所有应用$ pm2 delete 0                  # 删除指定应用 id 0$ pm2 scale api 10              # 把名字叫api的应用扩展到10个实例$ pm2 reset [app-name]          # 重置重启数量$ pm2 startup                   # 创建开机自启动命令$ pm2 save                      # 保存当前应用列表$ pm2 resurrect                 # 重新加载保存的应用列表$ pm2 update                    # Save processes, kill PM2 and restore processes$ pm2 generate                  # Generate a sample json configuration file$ pm2 deploy app.json prod setup    # Setup "prod" remote server$ pm2 deploy app.json prod          # Update "prod" remote server$ pm2 deploy app.json prod revert 2 # Revert "prod" remote server by 2$ pm2 module:generate [name]    # Generate sample module with name [name]$ pm2 install pm2-logrotate     # Install module (here a log rotation system)$ pm2 uninstall pm2-logrotate   # Uninstall module$ pm2 publish                   # Increment version, git push and npm publish简介PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。下面就对PM2进行入门性的介绍,基本涵盖了PM2的常用的功能和配置。安装全局安装,简直不能更简单。​npm install -g pm2目录介绍pm2安装好后,会自动创建下面目录。看文件名基本就知道干嘛的了,就不翻译了。$HOME/.pm2 will contain all PM2 related files$HOME/.pm2/logs will contain all applications logs$HOME/.pm2/pids will contain all applications pids$HOME/.pm2/pm2.log PM2 logs$HOME/.pm2/pm2.pid PM2 pid$HOME/.pm2/rpc.sock Socket file for remote commands$HOME/.pm2/pub.sock Socket file for publishable events$HOME/.pm2/conf.js PM2 Configuration入门教程挑我们最爱的express应用来举例。一般我们都是通过npm start启动应用,其实就是调用node ./bin/www。那么,换成pm2就是注意,这里用了--watch参数,意味着当你的express应用代码发生变化时,pm2会帮你重启服务,多贴心。pm2 start ./bin/www --watch入门太简单了,没什么好讲的。直接上官方文档:http://pm2.keymetrics.io/docs/usage/quick-start常用命令启动参数说明:--watch:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件。-i --instances:启用多少个实例,可用于负载均衡。如果-i 0或者-i max,则根据当前机器核数确定实例数目。--ignore-watch:排除监听的目录/文件,可以是特定的文件名,也可以是正则。比如--ignore-watch="test node_modules "some scripts""-n --name:应用的名称。查看应用信息的时候可以用到。-o --output <path>:标准输出日志文件的路径。-e --error <path>:错误输出日志文件的路径。--interpreter <interpreter>:the interpreter pm2 should use for executing app (bash, python...)。比如你用的coffee script来编写应用。完整命令行参数列表:地址pm2 start app.js --watch -i 2重启pm2 restart app.js停止停止特定的应用。可以先通过pm2 list获取应用的名字(--name指定的)或者进程id。pm2 stop app_name|app_id如果要停止所有应用,可以pm2 stop all删除类似pm2 stop,如下pm2 stop app_name|app_id pm2 stop all查看进程状态pm2 list查看某个进程的信息[root@iZ94wb7tioqZ pids]# pm2 describe 0 Describing process with id 0 - name oc-server ┌───────────────────┬──────────────────────────────────────────────────────────────┐ │ status │ online │ │ name │ oc-server │ │ id │ 0 │ │ path │ /data/file/qiquan/over_the_counter/server/bin/www │ │ args │ │ │ exec cwd │ /data/file/qiquan/over_the_counter/server │ │ error log path │ /data/file/qiquan/over_the_counter/server/logs/app-err-0.log │ │ out log path │ /data/file/qiquan/over_the_counter/server/logs/app-out-0.log │ │ pid path │ /root/.pm2/pids/oc-server-0.pid │ │ mode │ fork_mode │ │ node v8 arguments │ │ │ watch & reload │ │ │ interpreter │ node │ │ restarts │ 293 │ │ unstable restarts │ 0 │ │ uptime │ 87m │ │ created at │ 2016-08-26T08:13:43.705Z │ └───────────────────┴──────────────────────────────────────────────────────────────┘配置文件简单说明配置文件里的设置项,跟命令行参数基本是一一对应的。可以选择yaml或者json文件,就看个人洗好了。json格式的配置文件,pm2当作普通的js文件来处理,所以可以在里面添加注释或者编写代码,这对于动态调整配置很有好处。如果启动的时候指定了配置文件,那么命令行参数会被忽略。(个别参数除外,比如--env)例子举个简单例子,完整配置说明请参考官方文档。{ "name" : "fis-receiver", // 应用名称 "script" : "./bin/www", // 实际启动脚本 "cwd" : "./", // 当前工作路径 "watch": [ // 监控变化的目录,一旦变化,自动重启 "bin", "routers" ], "ignore_watch" : [ // 从监控目录中排除 "node_modules", "logs", "public" ], "watch_options": { "followSymlinks": false }, "error_file" : "./logs/app-err.log", // 错误日志路径 "out_file" : "./logs/app-out.log", // 普通日志路径 "env": { "NODE_ENV": "production" // 环境参数,当前指定为生产环境 } }自动重启前面已经提到了,这里贴命令行,更多点击这里。pm2 start app.js --watch这里是监控整个项目的文件,如果只想监听指定文件和目录,建议通过配置文件的watch、ignore_watch字段来设置。环境切换在实际项目开发中,我们的应用经常需要在多个环境下部署,比如开发环境、测试环境、生产环境等。在不同环境下,有时候配置项会有差异,比如链接的数据库地址不同等。对于这种场景,pm2也是可以很好支持的。首先通过在配置文件中通过env_xx来声明不同环境的配置,然后在启动应用时,通过--env参数指定运行的环境。环境配置声明首先,在配置文件中,通过env选项声明多个环境配置。简单说明下:env为默认的环境配置(生产环境),env_dev、env_test则分别是开发、测试环境。可以看到,不同环境下的NODE_ENV、REMOTE_ADDR字段的值是不同的。在应用中,可以通过process.env.REMOTE_ADDR等来读取配置中生命的变量。 "env": { "NODE_ENV": "production", "REMOTE_ADDR": "http://www.example.com/" }, ​"env_dev": { "NODE_ENV": "development", "REMOTE_ADDR": "http://wdev.example.com/" }, ​"env_test": { "NODE_ENV": "test", "REMOTE_ADDR": "http://wtest.example.com/" }启动指明环境假设通过下面启动脚本(开发环境),那么,此时process.env.REMOTE_ADDR的值就是相应的 http://wdev.example.com/ ,可以自己试验下。pm2 start app.js --env dev负载均衡命令如下,表示开启三个进程。如果-i 0,则会根据机器当前核数自动开启尽可能多的进程。pm2 start app.js -i 3 # 开启三个进程 ​​pm2 start app.js -i max # 根据机器CPU核数,开启对应数目的进程 参考文档:点击查看日志查看除了可以打开日志文件查看日志外,还可以通过pm2 logs来查看实时日志。这点对于线上问题排查非常重要。比如某个node服务突然异常重启了,那么可以通过pm2提供的日志工具来查看实时日志,看是不是脚本出错之类导致的异常重启。pm2 logs指令tab补全运行pm2 --help,可以看到pm2支持的子命令还是蛮多的,这个时候,自动完成的功能就很重要了。运行如下命令。恭喜,已经能够通过tab自动补全了。细节可参考这里。pm2 completion install source ~/.bash_profile开机自动启动可以通过pm2 startup来实现开机自启动。细节可参考。大致流程如下通过pm2 save保存当前进程状态。通过pm2 startup [platform]生成开机自启动的命令。(记得查看控制台输出)将步骤2生成的命令,粘贴到控制台进行,搞定。传入node args直接上例子,分别是通过命令行和配置文件。命令行:pm2 start app.js --node-args="--harmony"配置文件:{ "name" : "oc-server", "script" : "app.js", "node_args" : "--harmony" }实例说明假设是在centos下,那么运行如下命令,搞定。强烈建议运行完成之后,重启机器,看是否设置成功。[root@iZ94wb7tioqZ option_analysis]# pm2 save ​[root@iZ94wb7tioqZ option_analysis]# pm2 startup centos ​[PM2] Generating system init script in /etc/init.d/pm2-init.sh [PM2] Making script booting at startup... [PM2] /var/lock/subsys/pm2-init.sh lockfile has been added [PM2] -centos- Using the command: su -c "chmod +x /etc/init.d/pm2-init.sh; chkconfig --add pm2-init.sh" ​[PM2] Done. [root@iZ94wb7tioqZ option_analysis]# pm2 save ​[PM2] Dumping processes远程部署可参考官方文档,配置也不复杂,用到的时候再来填写这里的坑。TODO官方文档:http://pm2.keymetrics.io/docs/usage/deployment/#getting-started监控(monitor)运行如下命令,查看当前通过pm2运行的进程的状态。pm2 monit看到类似输出[root@oneday-dev0 server]# pm2 monit ⌬​ PM2 monitoring (To go further check out https://app.keymetrics.io) [ ] 0 % ⌬ ​PM2 monitoring (To go further check o[||||||||||||||| ] 196.285 MB ​● fis-receiver [ ] 0 % [1] [fork_mode] [||||| ] 65.773 MB ​● www [ ] 0 % [2] [fork_mode] [||||| ] 74.426 MB ​● oc-server [ ] 0 % [3] [fork_mode] [|||| ] 57.801 MB ​● pm2-http-interface [ ] stopped [4] [fork_mode] [ ] 0 B ​● start-production [5] [fork_mode]内存使用超过上限自动重启如果想要你的应用,在超过使用内存上限后自动重启,那么可以加上--max-memory-restart参数。(有对应的配置项)pm2 start big-array.js --max-memory-restart 20M更新pm2官方文档:http://pm2.keymetrics.io/docs/usage/update-pm2/#updating-pm2$ pm2 save # 记得保存进程状态 ​​$ npm install pm2 -g ​​$ pm2 update​pm2 + nginx无非就是在nginx上做个反向代理配置,直接贴配置。 upstream my_nodejs_upstream { server 127.0.0.1:3001; } server { listen 80; server_name my_nodejs_server; root /home/www/project_root; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_max_temp_file_size 0; proxy_pass http://my_nodejs_upstream/; proxy_redirect off; proxy_read_timeout 240s; } }官方文档:http://pm2.keymetrics.io/docs/tutorials/pm2-nginx-production-setup​pm2编程接口如果想把pm2的进程监控,跟其他自动化流程整合起来,pm2的编程接口就很有用了。细节可参考官方文档:http://pm2.keymetrics.io/docs/usage/pm2-api/模块扩展系统pm2支持第三方扩展,比如常用的log rotate等。可参考官方文档。​​​​二、安装Linux Binaries下载地址:https://nodejs.org/distcd oneinstack/srcwget https://nodejs.org/dist/v4.2.4/node-v4.2.4-linux-x64.tar.gztar xzf node-v4.2.4-linux-x64.tar.gzcp node-v4.2.4-linux-x64/bin/node /usr/local/bin/cp -R node-v4.2.4-linux-x64/lib/node_modules /usr/local/lib/ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npmnpm install pm2@latest -g #安装最新版本pm2模块PS: 如果你的主机无法连接公网,先找到能连公网的主机安装上面的方法安装pm2,然后拷贝到你要安装的主机。拷贝如下目录:/usr/local/bin/node/usr/local/lib/node_modules再创建相关软连接三、PM2常用命令假设你现在已经写好了一个app.js的文件,需要启动,你可以使用pm2进行管理1. 启动# pm2 start app.js# pm2 start app.js --name my-api   #my-api为PM2进程名称# pm2 start app.js -i 0           #根据CPU核数启动进程个数# pm2 start app.js --watch   #实时监控app.js的方式启动,当app.js文件有变动时,pm2会自动reload2. 查看进程# pm2 list# pm2 show 0 或者 # pm2 info 0  #查看进程详细信息,0为PM2进程id3. 监控# pm2 monit4. 停止# pm2 stop all  #停止PM2列表中所有的进程# pm2 stop 0    #停止PM2列表中进程为0的进程5. 重载# pm2 reload all    #重载PM2列表中所有的进程# pm2 reload 0     #重载PM2列表中进程为0的进程6. 重启# pm2 restart all     #重启PM2列表中所有的进程# pm2 restart 0      #重启PM2列表中进程为0的进程7. 删除PM2进程# pm2 delete 0     #删除PM2列表中进程为0的进程# pm2 delete all   #删除PM2列表中所有的进程8. 日志操作# pm2 logs [--raw]   #Display all processes logs in streaming# pm2 flush              #Empty all log file# pm2 reloadLogs    #Reload all logs9. 升级PM2# npm install pm2@lastest -g   #安装最新的PM2版本# pm2 updatePM2                    #升级pm210. 更多命令参数请查看帮助# pm2 --help四、PM2目录结构默认的目录是:当前用于的家目录下的.pm2目录(此目录可以自定义,请参考:五、自定义启动文件),详细信息如下:$HOME/.pm2                   #will contain all PM2 related files$HOME/.pm2/logs           #will contain all applications logs$HOME/.pm2/pids           #will contain all applications pids$HOME/.pm2/pm2.log    #PM2 logs$HOME/.pm2/pm2.pid    #PM2 pid$HOME/.pm2/rpc.sock    #Socket file for remote commands$HOME/.pm2/pub.sock   #Socket file for publishable events$HOME/.pm2/conf.js       #PM2 Configuration五、自定义启动文件创建一个test.json的示例文件,格式如下:{  "apps":    {      "name": "test",      "cwd": "/data/wwwroot/nodejs",      "script": "./test.sh",      "exec_interpreter": "bash",      "min_uptime": "60s",      "max_restarts": 30,      "exec_mode" : "cluster_mode",      "error_file" : "./test-err.log",      "out_file": "./test-out.log",      "pid_file": "./test.pid"      "watch": false    }}说明:apps:json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用name:应用程序的名称cwd:应用程序所在的目录script:应用程序的脚本路径exec_interpreter:应用程序的脚本类型,这里使用的shell,默认是nodejsmin_uptime:最小运行时间,这里设置的是60s即如果应用程序在60s内退出,pm2会认为程序异常退出,此时触发重启max_restarts设置数量max_restarts:设置应用程序异常退出重启的次数,默认15次(从0开始计数)exec_mode:应用程序启动模式,这里设置的是cluster_mode(集群),默认是forkerror_file:自定义应用程序的错误日志文件out_file:自定义应用程序日志文件pid_file:自定义应用程序的pid文件watch:是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。详细参数列表:见附件八六、实例已上面的test.json为例# cat > /data/wwwroot/nodejs/test.sh << EOF#!/bin/bashwhile :do    echo "Test" >> 1.log    sleep 5doneEOF# chmod +x test.sh      #添加执行权限# pm2 start test.json    #启动,如下图:# pm2 list    #查看pm2进程,如下图:
 17   0  781天前
我的小伙伴
Powered by 心晨工作室 7.3.6
© 2015-2020 PuYueTian
您的IP:18.232.38.214,2020-05-29 11:10:16,Processed in 0.11084 second(s).
Powered by 心晨工作室
开心每一天