发布网友 发布时间:2022-04-30 02:30
共2个回答
懂视网 时间:2022-05-15 06:49
pm2 是一个带有负载均衡功能的Node应用的进程管理器。可以把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载。
pm2的主要特性:
1、内建负载均衡(使用Node cluster 集群模块)
2、后台运行
3、0秒停机重载
4、具有Ubuntu和CentOS 的启动脚本
5、停止不稳定的进程(避免无限循环)
6、控制台检测
7、提供 HTTP API
8、远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 )
pm2的安装:
pm2的用法:
pm2运行进程的不同方式:
常用命令使用:
pm2 list
列出由pm2管理的所有进程信息,还会显示一个进程会被启动多少次,因为没处理的异常。
pm2 monit
监视每个node进程的CPU和内存的使用情况
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
利用JS使用POST方式提交请求的方法(结合代码详细解答)
js代码延迟一定时间后执行一个函数的实例
Avalonjs 实现简单购物车功能
热心网友 时间:2022-05-15 03:57
###创建一个安全账户来运行你的代码
当你刚创建好DigitalOcean droplet后,会收到使用根账户登录的指令:
<pre>To login to your droplet, you will need to open a terminal window and copy and paste the following string:
ssh root@192.241.xxx.xxx</pre>
请注意:‘192.241.xxx.xxx’会有些不同之处。当你的虚拟服务器设置好并用ssh登录后,只管跟着执行DigitalOcean给出的指令就可以。正如我们大多数理解的那样,如果你使用根账户运行代码,而不怀好意的人泄露了代码,他就可以完全控制你的VPS。为避免事情发生,要设置一个安全账户,即使我们提供了合适的密码,账户仍然可以执行根操作。在本教程中,我们就给安全账户起名叫做“safeuser”-你也可以随便命名。现在,作为根用户登陆,并执行这些步骤:
在 /home/safeuser/里用一个文件夹创建用户:
<pre>useradd -s /bin/bash -m -d /home/safeuser -c “safe user” safeuser</pre>
给safeuser设置密码—输入以下命令后,你需要输入两遍:
<pre>passwd safeuser</pre>
给安全用户使用根级别命令的权限:
<pre>usermod -aG sudo <username></pre>
<br>
###作为安全用户登陆
按ctrl+D退出你的DigitalOcean根会话。
请注意作为安全用户登录的命令是你之前使用的同样命令,但用户名变了。而作为安全用户登陆时,每次你想运行一个具有根特权的命令时,需要在命令前加一个词:sudo。自己机器上的命令行使用命令登陆会显示下面的信息。
<pre>sh safeuser@192.241.xxx.xxx</pre>
<br>
###安装GIT
登陆后,安装GIT(我们会用GIT安装Node.js.)。如果出于一些原因,你不熟悉GIT的话,你会爱上这个漂亮的工具一辈子。如果您想知道更多,可以阅读GIT book。在Ubuntu上安装很容易:
<pre>sudo apt-get install git</pre>
Sudo表明你想作为根用户运行这一命令,你会看到密码提示,就是安全用户密码。当提供密码后,命令开始运行。
<br>
###安装最新的Node.JS
请注意在写本教程时,v0.10.24是Node最新版本,如果出现更新版本,请使用更新版本。
输入以下命令,一次一行,观察你的droplet下载、编译以及安装Node.js时的不可思议的变化。
<pre>sudo apt-get install build-essential
sudo apt-get install curl openssl libssl-dev
git clone
cd node
git checkout v0.10.24
./configure
make
sudo make install</pre>
当你输入sudo make,会发生很多事,耐心点。
当make install进程完毕后,为确保一切顺利,输入:
<pre>node -v</pre>
如果一切顺利,你会看到:
<pre>v0.10.24.</pre>
<br>
###授予安全用户使用80端口的权限
记住,我们不想作为根用户运行你的应用程序,但有个*:你的安全用户没有权限使用默认的HTTP 端口(80)。你的目标是发布一个网站,在网站上访问者可以通过导航轻松地使用像h这样的URL。
不走运的是,除非作为根用户登陆,一般情况下,你都需要使用像这样的一个URL—注意端口号。
很多人在这儿卡住,其实解决方法很简单,有几种方法,但有一个我比较偏爱。输入下面的命令:
<pre>sudo apt-get install libcap2-bin
sudo setcap cap_net_bind_service=+ep /usr/local/bin/node</pre>
现在,当你告诉一个Node应用程序你希望它在80端口运行,它会任劳任怨。
<br>
###使用NPM安装一个名为PM2的包
NPM是一个包管理器,要用它来安装框架和库,和你的Node.js应用程序一起使用。NPM是和Node.js一起安装的。PM2是个贴心的小工具,它会为你解决两个问题:
1. 如果它崩溃了,会通过重启应用程序让你的站点保持正常。
这些崩溃是不该发生的,但了解PM2能挽救你还是很好的。(一些人可能知道Forever.js,这是另外一个工具,可以让node基础站点保持运行—不过我觉得你会发现PM2能提供更多帮助)
2.每次你重启服务器时,你的node应用程序会作为一项服务重启,这样会帮助到你。一些用户知道其他的方法,但pm2更加简单,而且它添加了一些灵活性。
在命令行输入下列命令安装PM2:
<pre>sudo npm install pm2 -g</pre>
<br>
###创建一个简单的Node App
在这儿你可以测试环境,以确保一切工作顺利进行。在这个例子中,我会使用IP地址,但目标应该是用一个域名。点击查看这些指令:如何用DigitalOcean创建一个主机名。
首先,测试前创建一个简单的node app,在命令行输入:
<pre>nano app.js</pre>
然后,在nano编辑器输入下面的代码:
使用Ctrl-X退出,如果nano询问你是否保存,回答yes。
现在你有了一个基于node的名为app.js的应用程序,可以用它测试环境。
可以在命令行输入下列内容运行app.js:
<pre>node app.js</pre>
完成后,通过浏览器,并输入IP地址作为URL,你应该可以看到你的hello world文本了。可以按Crtl+C中断执行。我们不想这样运行应用程序,这儿有一个要好得多的方法,我们用PM2来运行,不直接用Node。
<br>
###使用Pm2运行你的app,并保证你的服务器重启时,node.js应用自动启动
如果你用pm2运行你的应用程序,会有很大益处。现在不要像上面那样运行app,用下面的命令:
<pre>pm2 start app.js</pre>
你应该能看到这个内容:
<br>
用这种方式运行你的应用程序,有什么优势呢?
• 如果应用程序崩溃,PM2会自动将其重启。
• PM2会记录你未处理的异常情况—如果出现这种情况,会在/home/safeuser/.pm2/logs/app-err.log.目录的一个文件里。
• 当服务器重启时,一个命令,PM2就可以保证任何它管理的应用程序重启。基本上,你的node应用程序会作为一项服务开启。
运行这条命令,将应用程序作为一项服务运行:
<pre>sudo env PATH=$PATH:/usr/local/bin pm2 startup -u safeuser</pre>
请注意,你可能不会把用户名设置为安全用户—使用和你的设置相对应的名字。你应该会看到下面内容:
现在我们的目标已经完成了!
• 你并未作为根用户运行;因此,你的app更安全。
• 你是在用80端口,一般只有根用户使用。
• 如果你的应用程序崩溃,它会重启,而且会保持未处理异常情况的记录。
• 服务器开启时,你的应用程序会重启。
玩的开心吧!这个开始阶段的设置相当强大了吧。
<br>
读后感:你可能注意到在safeuser目录里,有一个名为node的文件夹。它是在安装时使用的,但你已经不再需要了,可以删掉,输入:
关于node还有很多要学,但这个教程会带你走在正确的轨道上。要学习更多关于pm2的东西,可以访问pm2 repo。
重要说明:有一个启动脚本可以启动你的Node应用程序,但如果你知道它怎样工作的话,可以避免很多混淆,脚本叫做‘pm2-init.sh.’,在 'etc/init.d/’目录里,但它不会启动app.js。相反,服务器最后一次关机时,它会启动运行在PM2下的程序。
这很重要。当你输入pm2 list,如果你的node应用程序没有出现在list,你的app在服务器重启时将不会重启。使用pm2开启你的apps,以保证它们会重启: