前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在CVM上安装Node.js及PM2

如何在CVM上安装Node.js及PM2

原创
作者头像
朝朝
发布2018-07-31 10:32:44
1.1K0
发布2018-07-31 10:32:44
举报

介绍

本教程目的是帮助您设置Ubuntu服务器以运行Node.js程序,包括基于Express,Geddy或Sails的应用程序。这些说明将帮助您避免一些安全性错误,主要内容如下,让我们开始吧!

例如:

  • 本教程不会以root身份运行您的应用程序,您的应用程序将更安全。
  • 本教程将使用80端口来运行您的应用程序,您可以通过url直接访问。
  • 如果应用程序崩溃,您的应用程序将重新启动,并将保留未处理异常的日志。
  • 您的应用程序将自动设为开机启动,以方便运行。

以上说明假定您有一定的Linux基础知识,希望您任真阅读。在教程开始之前,你应该先购买一台服Ubuntu服务器,我建议您使用腾讯云免费开发者专属在线实验平台进行试验。

创建一个安全帐户来运行您的代码

首次使用腾讯云CVM时,您会在您的邮箱收到使用Ubuntu帐户登录的说明。说明看起来会像这样:

代码语言:javascript
复制
尊敬的用户,
您重装云服务器购买成功,感谢您对腾讯云的支持! 
服务器操作系统为 Ubuntu Server 16.04.1 LTS 64位 ,默认账户为 ubuntu ,密码是您设置的初始密码,如果忘记,请在控制台重置密码。 
服务器名称   云主机ID   所在网络ID  内网IP    公网IP
未命名 ins-XXXX    vpc-XXXX    172.27.X.X  118.24.XXX.XXX

这里我们先以Ubuntu账户登录,并创建名为safeuser的账户118.24.XXX.XXX对您而言会有所不同。在设置虚拟服务器并使用ssh登录时,只需按照从腾讯云CVM收到的说明进行操作即可。

代码语言:javascript
复制
ssh ubuntu@118.24.XXX.XXX
代码语言:javascript
复制
useradd -s /bin/bash -m -d /home/safeuser -c "safe user" safeuser

为safeuser创建密码,输入以下命令后,系统会要求您输入两次密码:

代码语言:javascript
复制
passwd safeuser

授予安全用户使用root别命令的权限:

代码语言:javascript
复制
usermod -aG sudo <username>

以safeuser身份登录

按ctrl-D退出腾讯云CVM ubuntu会话。请注意,以安全用户身份登录的命令与您之前使用的命令相同,但用户名已更改。一旦以安全用户身份登录,每次要运行具有root权限的命令时,您必须使用sudo继续执行该命令。从您自己计算机上使用下面显示的命令登录。

代码语言:javascript
复制
ssh safeuser@192.241.xxx.xxx

安装GIT

下面我们来安装GIT(我们将使用GIT安装Node.js)。

在Ubuntu上安装:

代码语言:javascript
复制
sudo apt-get install git

sudo表示您要以root身份运行此命令。系统将提示您输入密码,输入密码后,将运行该命令。

安装最新的Node.JS

请注意,在撰写本文时,v0.10.24是Node的最新版本。如果有更新的版本,请使用该版本号。输入以下命令进行安装:

代码语言:javascript
复制
sudo apt-get install build-essential
sudo apt-get install curl openssl libssl-dev
git clone https://github.com/joyent/node.git
cd node
git checkout v0.10.24
./configure
make
sudo make install

make install命令执行完成后,请输入以下命令检查您的服务器是否安装了node:

代码语言:javascript
复制
node -v

如果一切顺利,你应该看到:

代码语言:javascript
复制
v0.10.24.

授予safeuser使用80端口

我们不希望以root用户身份运行您的应用,但有一个问题:safeuser无权使用默认HTTP端口(80)。但是这样,用户就无法通过http://mysite.com访问你的网站了。除非你以root用户身份登录,否则你必须使用http://mysite.com:3000这样的网址才能登录。

有没有解决方案呢?答案很简单,输入以下命令:

代码语言:javascript
复制
sudo apt-get install libcap2-bin
sudo setcap cap_net_bind_service=+ep /usr/local/bin/node

现在,当您告诉Node应用程序您希望它在80端口上运行,他就会使用80端口啦!

使用NPM安装PM2程序

NPM是一个包管理器,您将使用它来安装与Node.js应用一起使用的框架和库。PM2是一个很好的工具,可以解决两个问题:

  1. 如果应用程序崩溃,它将通过重新启动应用程序来保证您服务正常运行。虽说这些崩溃不常发生,但是我们建议还是将PM2作为备选方案。
  2. 每次重新启动服务器时,它都会通过重新启动node程序。使用PM2可以使整个过程更轻松,使体验更加灵活。

通过在命令行输入下面的命令来安装PM2:

代码语言:javascript
复制
sudo npm install pm2 -g

创建一个简单的node应用

您可以测试您的环境,以确保一切正常。在此示例中,我将使用IP地址,建议您使用域名,域名注册请点击这里

首先,创建一个简单的node.js应用程序,仅用于测试。在命令行输入

代码语言:javascript
复制
nano app.js

然后在nano编辑器中输入以下代码行:

代码语言:javascript
复制
var http = require('http');
var server = http.createServer(function (request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.end("Hello World\n");
});
server.listen(80);
console.log("Server running at http://127.0.0.1:80/");

ctrl-X退出 - 当nano询问您是否要保存时,请回答是。

现在您有了一个名为app.js的基于node.js的应用程序,您可以使用它来测试您的环境。

您可以通过输入以下命令运行app.js

代码语言:javascript
复制
node app.js

现在,您应该能够通过浏览器输入您的IP地址来查看您的hello world文本。您可以通过按crtl-C来中断执行。其实更好的方法是使用PM2来运行它,而不是直接使用Node。

使用PM2运行您的应用程序,并确保在服务器重新启动时自动启动node.js应用程序

如果您使用pm2运行应用程序,那么你会发现pm2的好处,使用以下命令运行它:

代码语言:javascript
复制
pm2 start app.js

你应该看到这个报告:

以这种方式运行应用程序有什么好处?

  • 如果应用程序崩溃,PM2将自动重启您的应用程序。
  • PM2将记录未处理的异常日志,在本例中,位于/home/safeuser/.pm2/logs/app-err.log中的文件中。
  • PM2可以确保在服务器重新启动时它管理的任何应用程序都会重新启动。简单的讲,您的node.js应用程序将作为服务启动。

输入以下内容将您的应用程序作为服务运行:

代码语言:javascript
复制
sudo env PATH=$PATH:/usr/local/bin pm2 startup -u safeuser

请注意,请使用与您的设置相对应的名称作为用户名。您应该看到以下报告:

代码语言:javascript
复制
Adding system startup for /etc/init.d/pm2-init.sh ...
   /etc/rc0.d/K20pm2-init.sh -> ../init.d/pm2-init.sh
   /etc/rc1.d/K20pm2-init.sh -> ../init.d/pm2-init.sh
   /etc/rc6.d/K20pm2-init.sh -> ../init.d/pm2-init.sh
   /etc/rc2.d/S20pm2-init.sh -> ../init.d/pm2-init.sh
   /etc/rc3.d/S20pm2-init.sh -> ../init.d/pm2-init.sh
   /etc/rc4.d/S20pm2-init.sh -> ../init.d/pm2-init.sh
   /etc/rc5.d/S20pm2-init.sh -> ../init.d/pm2-init.sh

现在我们完成了之前设定的目标!

  • 本教程不会以root身份运行您的应用程序,您的应用程序将更安全。
  • 本教程将使用80端口来运行您的应用程序,您可以通过url直接访问。
  • 如果应用程序崩溃,您的应用程序将重新启动,并将保留未处理异常的日志。
  • 您的应用程序将自动设为开机启动,以方便运行。

PS:您可能会注意到safeuser目录中名为node的文件夹。虽然它在安装过程中被使用,但实际上您不再需要它了。您可以通过输入以下内容将其删除:

代码语言:javascript
复制
rm -rf /home/safuser/node

结论

现在,你已经学会使用Ubuntu安装Node.js程序,并且学会使用PM2来控制node.js程序,购买一台服务器进行尝试吧,学无止境!更多Linux教程请前往腾讯云+社区学习。


参考文献:《How To Use PM2 to Setup a Node.js Production Environment On An Ubuntu VPS》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 创建一个安全帐户来运行您的代码
  • 以safeuser身份登录
  • 安装GIT
  • 安装最新的Node.JS
  • 授予safeuser使用80端口
  • 使用NPM安装PM2程序
  • 创建一个简单的node应用
  • 使用PM2运行您的应用程序,并确保在服务器重新启动时自动启动node.js应用程序
  • 结论
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档