本次博客的编写时用的系统环境,刚装好的Centos 6.4  64位虚拟机。

另外关于linux 其他系统的安装 可以参考https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

之前在linux下部署过几次NodeJS,也有些经验,最近也在Q群里有朋友问Node在linux下部署问题,于是总结一下,主要介绍两种不同的部署方式,二进制文件直接解压部署和手动编译安装,一来巩固自己的知识,二来希望能对新手有所帮助。

关于在node在linux的部署我认为主要有三种方式,

第一种就是自己下载源码,手动编译二进制,即是部署过程。

第二种方法 直接下载二进制文件解压即可。

第三种方式,使用yum install node或者apt-get install node安装(在linux下 貌似默认源中没有node的程序,这种方式有缺点,安装后的程序版本可能不是最新版的,不推荐这种方式安装)

编译源码安装

需要先安装编译环境 比如 node编译依赖于gcc make gcc-c++ openssl-devel等三方模块,因此需要提前自己先安装依赖(使用 yum -y install gcc make gcc-c++ openssl-devel 即可),还有要确认自己下载的是源码(有同学之前要自己手动编译安装,却找不到configure,文件,结果发现自己下载不是源码,而是二进制包)官网的下载地址中http://nodejs.org/download/ 最后一项才是源码。下载完解压,在linux编译程序一般就分为三步

1、 进入源码路径,执行里面的 configure文件./configure --prefix=生成的二进制文件路径

2. 运行make命令,这个是编译过程,运行的时间可能稍长一些

3、 执行install 命令。如果在第第一步骤中配置的程序安装路径不在系统的环境量PATH中,需要自己添加(下面会介绍在centos下修改环境变量)

关于源码的编译也可以参考这篇博客,下面重点叙述如何通过部署二进制的文件的方式安装NodeJS

NodeJS二进制文件的部署安装

2、首先下载NodeJS的二进制文件,http://nodejs.org/download/。在 Linux Binaries (.tar.gz)行处根据自己系统的位数选择

3、下载后将安装包移动到要安装到的文件夹下,根据个人喜好设置即可

这里我放在了/home/kun/mysofltware/ 下面,依次执行如下命令,可看到

 cd  /home/kun/mysofltware/
ls

解压到当前文件夹下运行

   tar zxvf node-v0.10.26-linux-x64.tar.gz

进入 解压后的目录bin目录下,执行ls会看到两个文件node,npm. 然后执行./node -v ,如果显示出 版本号说明我们下载的程序包是没有问题的。 依次运行如下三条命令

cd node-v0.10.26-linux-x64/bin
ls
./node -v

因为 /home/kun/mysofltware/node-v0.10.26-linux-x64/bin这个目录是不在环境变量中的,所以只能到该目录下才能node的程序。如果在其他的目录下执行node命令的话 ,必须通过绝对路径访问才可以的

如果要在任意目录可以访问的话,需要将node 所在的目录,添加PATH环境变量里面,或者通过软连接的形式将node和npm链接到系统默认的PATH目录下的一个,以下别介绍

  软连接方式

在终端执行echo $PATH可以获取PATH变量包含的内容,系统默认的PATH环境变量包括/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin: ,冒号为分隔符。所以我们可以将node和npm链接到/usr/local/bin 目录下如下执行

ln -s /home/kun/mysofltware/node-v0.10.26-linux-x64/bin/node /usr/local/bin/node
ln -s /home/kun/mysofltware/node-v0.10.26-linux-x64/bin/npm /usr/local/bin/npm

  通过如此,就可以访问Node了,同时node部署也已经完毕。

环境变量配置。

在node目录下执行pwd 获取node所在的目录,要把这个目录添加到PATH环境变量

执行su 输入密码切换到root用户。

vi /etc/profile

(如果不熟悉vi的,centos还有个方便的类似记事本的东东。gedit执行gedit /etc/profile可以打开进行编辑)


在vi 环境下 点击 i 进入插入状态,在export PATH的上一行添加如下内容 (环境变量中的内容 是以冒号分割的)
PATH=$PATH:/home/kun/mysofltware/node-v0.10.26-linux-x64/bin

编辑完成后按Esc键 然后输入 :wq 按回车保存退出。

退出vi ,执行

source /etc/profile 可以是变量生效,

然后执行 echo $PATH ,看看输出内容是否包含自己添加的内容

然后到任意目录下去执行一次执行node -v   npm -v

ok 搞定了。

需要注意的是,在我的安装过程中,通过source /etc/profile,只是让变量临时生效了,如果此时我在开一个终端的 话运行node会提示找不到命令,这个问题 重启或者注销之后得到了解决,我记得之前玩Ubuntu的时候 是没有这个问题的。看来linux知识还是欠缺啊。

 

linux 下部署nodejs(两种方式)的更多相关文章

  1. 设置 Linux 下打印机的几种方式

    设置 Linux 下打印机的几种方式 一.使用 cups 进行设置 如若遇到 cups 也没有驱动的话可以前往 openprinting.org 找寻对应驱动. 二.前往 official 下载驱动 ...

  2. 基于Maven的SpringBoot项目实现热部署的两种方式

    转载:http://blog.csdn.net/tengxing007/article/details/72675168 前言 JRebel是JavaEE中比较流行的热部署插件,可快速实现热部署,节省 ...

  3. js进阶 12-16 jquery如何实现通过点击按钮和按下组合键两种方式提交留言

    js进阶 12-16 jquery如何实现通过点击按钮和按下组合键两种方式提交留言 一.总结 一句话总结:实现按下组合键提交留言是通过给input加keydown事件,判断按键的键码来实现的. 1.如 ...

  4. linux下线程的两种封装方式

    在网络编程的时候往往需要对Linux下原生的pthread库中的函数进行封装,使其使用起来更加方便,封装方法一般有两种:面向对象和基于对象,下面将分别介绍这两种方式,最后统一分析这两种方式的优缺点: ...

  5. linux异步IO的两种方式【转】

    转自:https://blog.csdn.net/shixin_0125/article/details/78898146 知道异步IO已经很久了,但是直到最近,才真正用它来解决一下实际问题(在一个C ...

  6. Linux 下wdcp支持两种安装方式

    wdcp支持两种安装方式1 源码编译 此安装比较麻烦和耗时,一般是20分钟至一个小时不等,具体视机器配置情况而定2 RPM包安装 简单快速,下载快的话,几分钟就可以完成源码安装(ssh登录服务器,执行 ...

  7. Linux下定时执行任务的几种方式

    如果说我说如果,你的某一个目录下会经常的生成一些垃圾文件,比如访问日志.错误日志.core文件,而你又不想过几分钟就去手动检查一下,那么可以使用定时执行任务的方式来解决.目前我所知道的可以执行定时任务 ...

  8. zz---Tomcat服务器下部署项目几种方式

    http://blog.sina.com.cn/s/blog_550281c60101hvrs.html 一.静态部署1.直接将web项目文件件拷贝到webapps 目录中     Tomcat的We ...

  9. SpringBoot热部署的两种方式

    SpringBoot热部署方式一共有两种,分别使用两种不同的依赖 SpringBoot 1.3后才拥有SpringBoot devtools热部署 ①:spring-boot-devtools   ② ...

随机推荐

  1. 【EF学习笔记05】----------操作内存中的数据

    SingleOrDefault实验 //SingleOrDefault实验 using (var db = new Entities()) { var classes = new Classes() ...

  2. Hadoop MapReduce编程 API入门系列之薪水统计(三十一)

    不多说,直接上代码. 代码 package zhouls.bigdata.myMapReduce.SalaryCount; import java.io.IOException; import jav ...

  3. CSS3基础 02(2D /3D)

    一.2D转换 概念:就是元素在2D平面上实现移动,旋转,缩放,斜切的操作就称之为2D转换 语法:transform:值 值:移动,旋转,缩放,斜切 (1.1)移动 transform:translat ...

  4. information_schema系列之字符集校验(CHARACTER_SETS,COLLATIONS,COLLATION_CHARACTER_SET_APPLICABILITY)

    1:CHARACTER_SETS 首先看一下查询前十条的结果: root@localhost [information_schema]>select * from CHARACTER_SETS ...

  5. 一步步编写avalon组件01:弹出层组件

    avalon2已经稳定下来,是时候教大家如何使用组件这个高级功能了. 组件是我们实现叠积木开发的关键. avalon2实现一个组件非常轻松,并且如何操作这个组件也比以前的avalon2,还是react ...

  6. 【原】JS正则表达式里的控制符

    正则表达式易于使用而又让人费解,乍一看上去,就像是一行行的乱码,但是它的功能确实又不容小觑.今天整理正则时,纠正了自己的一个误解. 先缕一缕: 正则表达式的两种声明方式: 字面量.构造器 (RegEx ...

  7. position:absolute、float、display:inline-block 区别

    position: absolute会导致元素脱离文档流,被定位的元素等于在文档中不占据任何位置,在另一个层呈现,可以设置z-index.PS的图层效果就是position: absolute. fl ...

  8. js中this对象,call,apply

  9. HTML速查列表

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  10. [转载] 1. JebAPI 之 jeb.api

    本文转载自: https://www.zybuluo.com/oro-oro/note/142707 JEB API 官方地址:https://www.pnfsoftware.com/apidoc/  ...