本次博客的编写时用的系统环境,刚装好的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. mvc之页面强类型

    为什么使用页面强类型: 一个页面只能定义 为一个强类型.因为 我们自己写@Html.TextBox("Qq"); 有可能写错,所以我们就在 编译阶段就把页当作一个类型然后使用lam ...

  2. Excel 如何按条件计数和按条件求和(如按月求和)

    1.使用SUMPRODUCT进行多条件计数语法:=SUMPRODUCT((条件1)*(条件2)*(条件3)* …(条件n))作用:统计同时满足条件1.条件2到条件n的记录的个数.实例:=SUMPROD ...

  3. JavaScript Function(函数表达式)

    创建函数 创建函数的方式有两种:1.函数声明,2.函数表达式 函数声明的语法为 functionName(); //不会报错,函数声明提升function functionName(arg0,arg1 ...

  4. FireDAC 超时

    FireDAC 超时 Timeout  expired 在Win10 正常. 在Win7 CB的DLL 正常,Delphi的DLL怎么会超时呢??? 果然是连接字符串错了.改为正确的就连接正常了!

  5. 比较一下Linux下的Epoll模型和select模型的区别

    一. select 模型(apache的常用) 1. 最大并发数限制,因为一个进程所打开的 FD (文件描述符)是有限制的,由 FD_SETSIZE 设置,默认值是 1024/2048 ,因此 Sel ...

  6. nginx的gzip选项和expire过期时间记录

    最近,参加了公司的组织的一个公开课,收获还是挺多的,下面来总结接一下: 一. 使用nginx来进行网页内容的压缩编码与传输速度的优化: 先来观察一下news.sina.com.cn在请求和传输的时候发 ...

  7. 【转】还html标签以本来意义

    说句实话,“div+css”这个词汇不知道害了多少人,也许其提出者本意并没有错,但是跟风者从表现曲解了其意思,认为整个页面就应当是div+css文件的组合.这样做,对于视觉上并没有什么影响,因为还原了 ...

  8. androidannotations 简单配置

    1.build.gradle 需要添加的内容 标注的颜色是新建项目之后,build.gradle文件需要添加的内容. buildscript { repositories { jcenter() } ...

  9. openstackM版本常见问题汇总

    汇总下常见的问题以及解释下一些比较容易让人萌的参数配置等等 问题汇总1.使用纯文本模式进行复制粘贴,打死不要用word!!!可以解决绝大多数问题,如果你依然执迷不悟,那么就好自为之吧 2.创建路由器时 ...

  10. rhel7防止开机破密码

    在/etc/grub.d/00_header文件结尾加入  cat <<EOF set  superusers="qin"#用户名称可以更加自身编辑 password ...