Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效,非常适合运行在分布式设备的数据密集型的实时应用。Node.js 的包管理器 npm,是全球最大的开源库生态系统。典型的应用场景包括:
- 实时应用:如在线聊天,实时通知推送等等(如socket.io)
- 分布式应用:通过高效的并行I/O使用已有的数据
- 工具类应用:海量的工具,小到前端压缩部署(如grunt),大到桌面图形界面应用程序
- 游戏类应用:游戏领域对实时和并发有很高的要求(如网易的pomelo框架)
- 利用稳定接口提升Web渲染能力
- 前后端编程语言环境统一:前端开发人员可以非常快速地切入到服务器端的开发(如著名的纯Javascript全栈式MEAN架构)
适用对象
本文档介绍如何在阿里云CentOS系统的云服务器ECS实例上,安装Nodejs并部署项目。
准备工作
部署之前,请做如下准备工作:
- 购买ECS实例
- 您的实例运行的镜像是CentOS7.2
- 您的实例可以连接公网
- 本地已经安装用于连接 Linux 实例的工具,如 Xshell
基本流程
使用云服务器 ECS 安装Nodejs并部署项目的操作步骤如下:
- 购买 ECS 实例。
- 部署Node.js环境-二进制文件安装。
- 部署Node.js环境-使用NVM安装多版本。
- 部署测试项目。
注:2和3步骤,根据您的实际应用场景,任选其一。
操作步骤
步骤 1:创建ECS实例
选择操作系统为公共镜像CentOS7.2。使用root用户登录Linux实例。
步骤2:部署Node.js环境—二进制文件安装
该部署过程使用的安装包是已编译好的二进制文件,解压之后,在bin文件夹中就已存在node和npm,无需手工编译。
安装步骤:
1、 wget命令下载Node.js安装包。
该安装包是编译好的文件,解压之后,在bin文件夹中就已存在node和npm,无需重复编译。
wget https://nodejs.org/dist/v8.2.1/node-v8.2.1-linux-x64.tar.xz
2、 解压文件。
tar xvf node-v8.2.1-linux-x64.tar.xz
3、创建软链接,使node和npm命令全局有效。
通过创建软链接的方法,使得在任意目录下都可以直接使用node和npm命令:
ln -s /root/node-v8.2.1-linux-x64/bin/node /usr/local/bin/node
ln -s /root/node-v8.2.1-linux-x64/bin/npm /usr/local/bin/npm
4,查看node、npm版本。
node -v
npm -v
5、至此,Node.js环境已安装完毕。
软件默认安装在/root/node-v8.2.1-linux-x64/目录下。如果需要将该软件安装到其他目录(如:/opt/node/)下,请进行如下操作:
mkdir -p /opt/node/
mv /root/node-v6.9.5-linux-x64/* /opt/node/
rm -f /usr/local/bin/node
rm -f /usr/local/bin/npm
ln -s /opt/node/bin/node /usr/local/bin/node
ln -s /opt/node/bin/npm /usr/local/bin/npm
步骤3:部署Node.js环境-使用NVM安装多版本
NVM(Node version manager)是Node.js的版本管理软件,使用户可以轻松在Node.js各个版本间进行切换。适用于长期做 node 开发的人员或有快速更新node版本、快速切换node版本这一需求的用户。
安装步骤:
1、直接使用git将源码克隆到本地的~/.nvm目录下,并检查最新版本。
yum install git
git clone https://github.com/cnpm/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`
2、激活NVM。
echo ". ~/.nvm/nvm.sh" >> /etc/profile
source /etc/profile
3、列出Node.js的所有版本。
nvm list-remote
4、安装多个Node.js版本。
nvm install v8.2.1
nvm install v7.4.0
5、查看已安装Node.js版本,当前使用的版本为v8.2.1。
[root@iZuf62didsxigy36d6kjtrZ .nvm]# nvm ls
-> v8.2.1
v7.4.0
6、切换Node.js版本至v7.4.0。
[root@iZuf62didsxigy36d6kjtrZ .nvm]# nvm use v7.4.0
Now using node v7.4.0
NVM的更多操作请参考帮助文档:
nvm help
步骤4:部署测试项目
1、新建项目文件example.js。
cd ~
touch example.js
2、使用vim编辑器打开项目文件example.js。
yum install vim
vim example.js
输入“i”,进入编辑模式,将以下项目文件内容粘贴到文件中。使用“Esc”按钮,退出编辑模式,输入“:wq”,回车,保存文件内容并退出。
项目文件内容:
const http = require('http');
const hostname = '0.0.0.0';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
注:项目文件内容中的3000为端口号,可以自行定义。
3、运行项目。
node ~/example.js
注:可以使用命令“node ~/example.js &”将项目置于后台运行。
4、使用命令查看项目端口是否存在。
netstat -tpln
5、在浏览器中输入http://IP:端口号 访问项目。
重启防火墙,允许端口访问
执行
firewall-cmd --permanent --zone=public --add-port=3000/tcp
firewall-cmd --permanent --zone=public --add-port=3000/udp
这样就开放了相应的端口。
执行重启防火墙
firewall-cmd --reload
使最新的防火墙设置规则生效。
注:
启动防火墙 systemctl start firewalld
关闭防火墙 systemctl stop firewalld
查看 状态 systemctl status firewalld
方式二:
我当前使用的是Centos7
首先在官网查看当前最新的版本
https://nodejs.org/en/download/current/
我现在最新的是
https://nodejs.org/dist/v8.2.1/node-v8.2.1-linux-x64.tar.xz
移动到目录
cd /usr/local/
在centos中执行命令下载(可根据当前的版本情况下载最新的版本)/usr/local/目录中可能会需要root读写权限
wget https://nodejs.org/dist/v8.2.1/node-v8.2.1-linux-x64.tar.xz
下载完成后解压
tar xvJf node-v8.2.1-linux-x64.tar.xz
tar zxvf node-v8.2.1-linux-x64.tar.xz 重命名为node
mv node-v8.2.1-linux-x64 node 配置环境变量vim /etc/profile
在最后边添加
- #set for nodejs
- export NODE_HOME=/usr/local/node
- export PATH=$NODE_HOME/bin:$PATH
保存退出(:wq)执行命令是更改生效source /etc/profile
我执行之后依然不行,重启之后才可以使用命令
使用命令查看版本,出现相应版本号则表示成功
node -v
npm -v
-------*-*-*-*-*-*---------
最后不建议用新的测试版,用的的时候会出现许多错误
建议使用官网的LTS版本
部署Node.js项目(CentOS)的更多相关文章
-
如何线上部署node.js项目
来源:http://blog.csdn.net/chenlinIT/article/details/73343793 前言 最近工作不是很忙,在空闲时间学习用node+express搭建自己的个人博客 ...
-
阿里云部署Node.js项目(CentOS)
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...
-
阿里云ECS服务器部署Node.js项目全过程详解
本文详细介绍如何部署NodeJS项目到阿里云ECS上,以及本人在部署过程中所遇到的问题.坑点和解决办法,可以说是全网最全最详细的教程了.同时讲解了如何申请阿里云免费SSL证书,以及一台ECS服务器配置 ...
-
【转载】在Centos系统上采用二进制文件部署Node.js环境
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...
-
【从零开始学习Node.js】一.在CentOS 7中部署Node.js环境
一.背景信息 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用来方便快速地搭建易于扩展的网络应用.Node.js使用了一个事件驱动.非阻塞式I/O的模型,使其轻量又高效 ...
-
IIS 部署 node.js ---- 基础安装部署
一些可能有用的相关文章: https://blogs.msdn.microsoft.com/scott_hanselman/2011/11/28/window-iisnode-js/ http://b ...
-
Linux环境部署Node.js
介绍 先前在阿里云ECS上部署Node.js,碰到不少坑,都是自己不仔细造成的,所以准备再部署一遍,并记录下来.我将我的服务器重置了,这次选择的是CentOS 7.4 64位,上次的是7.2的. 使用 ...
-
[Node.js] Node.js项目的持续集成
原文地址:http://www.moye.me/2016/03/03/nodejs_ci_by_jenkins 引子 持续集成 (Continuous Integration,简称CI)是一种软件工程 ...
-
WebStorm中Node.js项目配置教程(1)——创建项目
Node.js绝对是一个web开发的热点话题,作为web神器的WebStorm也是开发Node.js的佼佼者. 接下来就Node.js项目在WebStorm的配置操作就行详细的讲解,首先是创建项目.两 ...
随机推荐
-
【C++】多态性(函数重载与虚函数)
多态性就是同一符号或名字在不同情况下具有不同解释的现象.多态性有两种表现形式: 编译时多态性:同一对象收到相同的消息却产生不同的函数调用,一般通过函数重载来实现,在编译时就实现了绑定,属于静态绑定. ...
-
java 多线程—— 线程等待与唤醒
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
-
ORA-01078、ORA-01565、ORA-17503、ORA-29701
OS: Oracle Linux Server release 5.7 DB: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - ...
-
利用canvas压缩图片
现在手机拍的照片动不动就是几M,当用户上传手机里的照片时一个消耗流量大,一个上传时间长,为了解决这个问题,就需要压缩图片: 想法:利用canvas重绘图片,保持宽高比不变,具体宽高根本具体情况而定. ...
-
理解DNS
理解DNS 写在前面: 目前,我们大部分的网络通信都是基于TCP/IP协议的,而TCP/IP又基于IP地址作为唯一标识进行通信,随着需要记忆的IP地址数量的增多,肯定会超出我们的记忆能力范围,但如果使 ...
-
BZOJ3230 相似子串 字符串 SA ST表
原文链接http://www.cnblogs.com/zhouzhendong/p/9033092.html 题目传送门 - BZOJ3230 题意 给定字符串$s$.长度为$n$. 现在有$Q$组询 ...
-
javascript知识整理之this
js中的this是一个头疼的问题,尤其对于笔者这种初级的菜鸟来讲,下面梳理下this的知识,可以当做是初级进阶也好入门也罢,总归输出的才是自己掌握的: Js中this不是由词法作用域决定的 而是调用时 ...
-
Codeforces Beta Round #14 (Div. 2) C. Four Segments 水题
C. Four Segments 题目连接: http://codeforces.com/contest/14/problem/C Description Several months later A ...
-
BigDecimal 、BigInteger
package com.BigDecimal; public class BigDecimalDemo { /* * 下面的运算的结果出乎我们的意料,有些准确,有些不准确 * 这是为什么呢? * 我们 ...
-
23 DesignPatterns学习笔记:C++语言实现 --- 1.1 Factory
23 DesignPatterns学习笔记:C++语言实现 --- 1.1 Factory 2016-07-18 13:03:43 模式理解