详解Node项目部署到云服务器上


Posted in Javascript onJuly 12, 2017

本篇介绍了Node项目部署到云服务器上,小编觉得不错,分享给大家,具体如下:

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效,非常适合运行在分布式设备的数据密集型的实时应用。Node.js 的包管理器 npm,是全球最大的开源库生态系统。典型的应用场景包括:

  1. 实时应用:如在线聊天,实时通知推送等等(如socket.io)
  2. 分布式应用:通过高效的并行I/O使用已有的数据
  3. 工具类应用:海量的工具,小到前端压缩部署(如grunt),大到桌面图形界面应用程序
  4. 游戏类应用:游戏领域对实时和并发有很高的要求(如网易的pomelo框架)
  5. 利用稳定接口提升Web渲染能力
  6. 前后端编程语言环境统一:前端开发人员可以非常快速地切入到服务器端的开发(如著名的纯Javascript全栈式MEAN架构)

一、服务器购买

阿里云、腾讯云、百度云等等都可以选择,购买对应的云服务器或云服务器 ECS(选择平台不同名字可能会不一致),系统镜像选择CentOS7.2,其他带宽、内存等自行配置。如果只是小型网站,建议配置最低即可。

  1.   CPU:1核
  2.   内存:1GB
  3.   系统盘:Linux 20G
  4.   带宽:1Mbps

二、服务器登陆

通过ssh方式登陆服务器

$ ssh root@192.168.1.112  // 格式: ssh 用户名@公网IP

三、部署Node.js环境

该部署过程使用的安装包是已编译好的二进制文件,解压之后,在bin文件夹中就已存在node和npm,无需手工编译。

wget命令下载Node.js安装包,该安装包是编译好的文件,解压之后,在bin文件夹中就已存在node和npm,无需重复编

$ wget https://nodejs.org/dist/v6.9.5/node-v6.9.5-linux-x64.tar.xz

解压文件

$ tar xvf node-v6.9.5-linux-x64.tar.xz

创建软链接,使node和npm命令全局有效(通过创建软链接的方法,使得在任意目录下都可以直接使用node和npm命令)

$ ln -s /root/node-v6.9.5-linux-x64/bin/node /usr/local/bin/node
$ ln -s /root/node-v6.9.5-linux-x64/bin/npm /usr/local/bin/npm

查看node、npm版本

$ node -v
$ npm -v

Node.js环境已安装完毕,软件默认安装在/root/node-v6.9.5-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

注: 如果不在意软件安装路径,就跳过该操作;

四、部署Node.js环境(NVM安装多版本)

NVM(Node version manager)是Node.js的版本管理软件,使用户可以轻松在Node.js各个版本间进行切换。适用于长期做 node 开发的人员或有快速更新node版本、快速切换node版本这一需求的用户。

直接使用git将源码克隆到本地的~/.nvm目录下,并检查最新版本

$ yum install git
$ git clone https://github.com/cnpm/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`

激活NVM

$ echo ". ~/.nvm/nvm.sh" >> /etc/profile
$ source /etc/profile

列出Node.js的所有版本

$ nvm ls

安装多个Node.js版本

$ nvm install v6.9.5
$ nvm install v7.4.0

需要哪些node版本即安装对应版本即可

查看已安装Node.js版本

$ nvm ls
->    v6.9.5
     v7.4.0

切换Node.js版本至v7.4.0

$ nvm use v7.4.0
 Now using node v7.4.0

五、部署测试项目

  1.   - $ touch server.js  // 新建文件
  2.   - $ vi server.js   // 打开文件server.js
  3.   - 按i进入编辑状态,将下面代码复制到该文件中
  4.   - 按esc退出编辑状态
  5.   - :wq  // 退出并保存
  6.   - $ node server.js  // 运行server.js
  7.   - 在浏览器中打开页面: http://服务器IP:3000
$ node server.js & // 将项目置于后台运行(只要服务器不关机,它就会一直在后台运行)
 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}/`);
 });

六、文件上传到服务器

scp

优点: 简单方便,安全可靠;支持限速参数

格式: scp [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机

scp /home/work/source.txt work@192.168.0.10:/home/work/ #把本地的source.txt文件拷贝到192.168.0.10机器上的/home/work目录下
scp work@192.168.0.10:/home/work/source.txt /home/work/ #把192.168.0.10机器上的source.txt文件拷贝到本地的/home/work目录下
scp work@192.168.0.10:/home/work/source.txt work@192.168.0.11:/home/work/ #把192.168.0.10机器上的source.txt文件拷贝到192.168.0.11机器的/home/work目录下
scp -r /home/work/sourcedir work@192.168.0.10:/home/work/ #拷贝文件夹,加-r参数 
scp -r /home/work/sourcedir work@www.myhost.com:/home/work/ #使用主机名 
scp -r -v /home/work/sourcedir work@www.myhost.com:/home/work/ #显示详情,加-v

github (前提是项目是开源)

  1. - 将本地代码托管到github
  2. - 在服务器中将代码clone下来

本地代码如果有修改,先更新到github代码仓库;在服务器中,更新代码即可;

七、关于后台运行进程

$ node server.js &

通过该命令行$ node server.js & ,将项目置于后台运行

$ netstat -tpln

如果想要查看项目端口是否存在,即查看项目是否在后台运行

$ kill xxx

结束对应的进程,kill后面写的是进程号.

详解Node项目部署到云服务器上

进程号

例如想要结束端口号为2017的进程,2017端口对应的进程号是19451,通过命令行 kill 19451

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Add Formatted Text to a Word Document
Jun 15 Javascript
[原创]用javascript实现检测指定目录是否存在的方法
Jan 12 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
Jan 28 Javascript
浅析Bootstrap组件之面板组件
May 04 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
Jun 01 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
Jul 13 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
Aug 01 Javascript
layui 动态设置checbox 选中状态的例子
Sep 02 Javascript
从零搭一个自用的前端脚手架的方法步骤
Sep 23 Javascript
vue不操作dom实现图片轮播的示例代码
Dec 18 Javascript
详解jQuery中的prop()使用方法
Jan 05 jQuery
Node在Controller层进行数据校验的过程详解
Aug 28 Javascript
angular.js中解决跨域问题的三种方式
Jul 12 #Javascript
JavaScript+HTML5实现的日期比较功能示例
Jul 12 #Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
Jul 12 #Javascript
Bootstrap提示框效果的实例代码
Jul 12 #Javascript
JavaScript输出所选择起始与结束日期的方法
Jul 12 #Javascript
微信小程序三级联动地址选择器的实例代码
Jul 12 #Javascript
微信小程序 共用变量值的实现
Jul 12 #Javascript
You might like
php下通过POST还是GET来传值
2008/06/05 PHP
php 无限级 SelectTree 类
2009/05/19 PHP
新浪微博OAuth认证和储存的主要过程详解
2015/03/27 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
基于PHP实现邮箱验证激活过程详解
2020/10/28 PHP
不错的JS中变量相关的细节分析
2007/08/13 Javascript
浏览器脚本兼容 文本框中,回车键触发事件的兼容
2010/06/21 Javascript
学习面向对象之面向对象的术语
2010/11/30 Javascript
jQuery获取文本节点之 text()/val()/html() 方法区别
2011/03/01 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
直接拿来用的页面跳转进度条JS实现
2016/01/06 Javascript
详解angularJs模块ui-router之状态嵌套和视图嵌套
2017/04/28 Javascript
vue 详情跳转至列表页实现列表页缓存
2019/03/27 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
vue 组件基础知识总结
2021/01/26 Vue.js
python获取本机外网ip的方法
2015/04/15 Python
python简单读取大文件的方法
2016/07/01 Python
基于循环神经网络(RNN)的古诗生成器
2018/03/26 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
2018/06/04 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
2019/04/15 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
2019/06/17 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
通过实例解析Python return运行原理
2020/03/04 Python
python 利用百度API识别图片文字(多线程版)
2020/12/14 Python
英国复古皮包品牌:Beara Beara
2018/07/18 全球购物
存储过程和sql语句的优缺点
2014/07/02 面试题
浅谈react路由传参的几种方式
2021/03/23 Javascript
党员组织关系介绍信
2014/02/13 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书
python中redis包操作数据库的教程
2022/04/19 Python