准备Nodejs开发环境Ubuntu

从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发。Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎。chrome浏览器就基于V8,同时打开20-30个网页都很流畅。Nodejs标准的web开发框架Express,可以帮助我们迅速建立web站点,比起PHP的开发效率更高,而且学习曲线更低。非常适合小型网站,个性化网站,我们自己的Geek网站!!

关于作者

张丹(Conan), 程序员Java,R,PHP,Javascript
weibo:@Conan_Z
blog: http://blog.fens.me
email: bsspirit@gmail.com

转载请注明出处:
http://blog.fens.me/nodejs-enviroment/

 

nodejs-env

目录:

  1. 通过apt-get安装nodejs –  失败
  2. 从github下载源代码安装 –  成功
  3. 建立express工程,启动第一个项目

 

系统环境:

Ubuntu 12.04 LTS 64bit

1. 通过apt-get安装nodejs – 失败:


~ sudo apt-get install nodejs
~ sudo apt-get install npm

~ node -v
v0.6.12

~ npm -v
1.1.4

创建工作目录


~ mkdir workspace
~ mkdir workspace/nodejs
~ cd workspace/nodejs
~ pwd
/home/conan/workspace/nodejs

安装失败


sudo npm install express -g
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/connect/2.7.11
npm http GET https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.4
npm http GET https://registry.npmjs.org/cookie/0.1.0
npm http GET https://registry.npmjs.org/buffer-crc32/0.2.1
npm http GET https://registry.npmjs.org/fresh/0.1.0
npm http GET https://registry.npmjs.org/methods/0.0.1
npm http GET https://registry.npmjs.org/send/0.1.0
npm http GET https://registry.npmjs.org/cookie-signature/1.0.1
npm http GET https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/commander/0.6.1
npm http 304 https://registry.npmjs.org/connect/2.7.11
npm http 304 https://registry.npmjs.org/range-parser/0.0.4
npm http 304 https://registry.npmjs.org/mkdirp/0.3.4
npm http 304 https://registry.npmjs.org/cookie/0.1.0
npm http 304 https://registry.npmjs.org/buffer-crc32/0.2.1
npm http 304 https://registry.npmjs.org/fresh/0.1.0
npm http 304 https://registry.npmjs.org/methods/0.0.1
npm http 304 https://registry.npmjs.org/send/0.1.0
npm http 304 https://registry.npmjs.org/cookie-signature/1.0.1
npm http 304 https://registry.npmjs.org/debug
npm ERR! error installing express@3.2.6
npm ERR! error rolling back express@3.2.6 Error: UNKNOWN, unknown error '/usr/local/lib/node_modules/express'

npm ERR! Unsupported
npm ERR! Not compatible with your version of node/npm: connect@2.7.11
npm ERR! Required: {"node":">= 0.8.0"}
npm ERR! Actual: {"npm":"1.1.4","node":"0.6.12"}
npm ERR!
npm ERR! System Linux 3.5.0-23-generic
npm ERR! command "node" "/usr/bin/npm" "install" "express" "-g"
npm ERR! cwd /home/conan/workspace/nodejs
npm ERR! node -v v0.6.12
npm ERR! npm -v 1.1.4
npm ERR! code ENOTSUP
npm ERR! message Unsupported
npm ERR! errno {}
npm http GET https://registry.npmjs.org/mime/1.2.6
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /home/conan/workspace/nodejs/npm-debug.log
npm not ok

系统提示, node和npm版本不兼容。可能是终于apt-get源没有更新造成的问题。

2. 从github下载源代码安装 – 成功

下面要找到兼容的版本,手动安装。
先卸载刚刚装的node和npm


~ sudo apt-get autoremove npm
~ sudo apt-get autoremove nodejs

找到nodejs的官方发布下载:https://github.com/joyent/node

在ubuntu中,先安装git


~ sudo apt-get install git

然后,从github下载nodejs源代码


~ git clone git://github.com/joyent/node.git
Cloning into 'node'...
remote: Counting objects: 100200, done.
remote: Compressing objects: 100% (28074/28074), done.
remote: Total 100200 (delta 78807), reused 90936 (delta 70473)
Receiving objects: 100% (100200/100200), 61.81 MiB | 698 KiB/s, done.
Resolving deltas: 100% (78807/78807), done.

进入node目录


~ cd node
~ pwd
/home/conan/workspace/nodejs/node

切换最新的release的版本v0.11.2-release


~ git checkout v0.11.2-release
Branch v0.11.2-release set up to track remote branch v0.11.2-release from origin.
Switched to a new branch 'v0.11.2-release'

进行安装


./configure
make
sudo make install

安装完成,查看node版本


~ node -v
-bash: /usr/bin/node: No such file or directory

提示错误,没有找到node,查一下node安装位置


~ whereis node
node: /usr/local/bin/node

增加软链接:node和npm到/usr/bin


~ sudo ln -s /usr/local/bin/node /usr/bin/node
~ sudo ln -s /usr/local/bin/npm /usr/bin/npm

我们再查看node和npm版本


~ node -v
v0.11.2
~ npm -v
1.2.21

下面安装express


~ sudo npm install express -g
express@3.2.6 /usr/local/lib/node_modules/express
├── methods@0.0.1
├── fresh@0.1.0
├── range-parser@0.0.4
├── cookie-signature@1.0.1
├── buffer-crc32@0.2.1
├── cookie@0.1.0
├── debug@0.7.2
├── commander@0.6.1
├── mkdirp@0.3.4
├── send@0.1.0 (mime@1.2.6)
└── connect@2.7.11 (pause@0.0.1, qs@0.6.5, bytes@0.2.0, cookie@0.0.5, formidable@1.0.14, send@0.1.1)

安装成功。

3. 建立express工程,启动第一个项目


~ express -e nodejs-demo
create : nodejs-demo
create : nodejs-demo/package.json
create : nodejs-demo/app.js
create : nodejs-demo/public
create : nodejs-demo/public/javascripts
create : nodejs-demo/public/images
create : nodejs-demo/public/stylesheets
create : nodejs-demo/public/stylesheets/style.css
create : nodejs-demo/routes
create : nodejs-demo/routes/index.js
create : nodejs-demo/routes/user.js
create : nodejs-demo/views
create : nodejs-demo/views/index.ejs
install dependencies:
$ cd nodejs-demo && npm install
run the app:
$ node app

安装依赖包


~ cd nodejs-demo
~ sudo npm install
express@3.2.6 node_modules/express
├── methods@0.0.1
├── fresh@0.1.0
├── range-parser@0.0.4
├── cookie-signature@1.0.1
├── buffer-crc32@0.2.1
├── cookie@0.1.0
├── debug@0.7.2
├── commander@0.6.1
├── mkdirp@0.3.4
├── send@0.1.0 (mime@1.2.6)
└── connect@2.7.11 (pause@0.0.1, qs@0.6.5, bytes@0.2.0, cookie@0.0.5, formidable@1.0.14, send@0.1.1)

启动程序


~ node app.js
Express server listening on port 3000

测试是否启动成功curl


~ sudo apt-get install curl
~ curl localhost:3000

<!DOCTYPE html>
<html>
<head>
<title>Express</title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1>Express</h1>
<p>Welcome to Express</p>
</body>
</html>

nodejs的服务器日志:


GET / 200 6ms - 206b

好了,我们已经成功的在ubuntu中,准备好了nodejs的开发环境。下面就可以享受开发的乐趣了。

进阶的内容请继续看
从零开始nodejs系列文章
http://blog.fens.me/series-nodejs/

转载请注明出处:
http://blog.fens.me/nodejs-enviroment/

打赏作者

This entry was posted in Javascript语言实践

  • Pingback: nodejs豆瓣爬虫 | 粉丝日志()

  • Pingback: 准备Nodejs开发环境(Ubuntu) - Node.js - 开发者问答()

  • Pingback: upstart封装nodejs应用为系统服务 | 粉丝日志()

  • xylinq

    非常感谢, 帮助到我了。

    • :-)

      • zhenxu

        请问您的QQ加爆了吗?如没加爆,方便留下QQ不?/haha

        • 感兴趣可以加Q群:383275651
          跨学科多语言混编讨论群:R,Nodejs,Hadoop,金融,统计

  • googya

    用NVM 安装 node 更简单些

    • nvm?不是npm?
      还真没有用过,有机会试试。

      对于熟手来说,怎么安装都没问题,只有新手才会各种错误解决不了。

      • Jimmy

        nvm => node version manager

  • 春遥 刘

    系列教程非常给力。我们最近打算用node做ios应用服务器(基于socket),希望博主能给些建议。据说node开发效率很高,学习曲线低,而且我们打算用mongodb

    • 就像你了解的node挺好的

      • 春遥 刘

        我们是一个小型团队,后端基本上是我一个人来做。之前搞过一年的PHP,做http服务器,后来觉得还的用socket,查了一下资料觉得PHP不太适合做socket。打算转node。现在问题是,我们直接用pomelo网易的游戏框架好,还是自己根据socket io写一套框架好呢?从开发效率和服务器稳定性来说。博主能给些建议吗?

        • 1. 我不清楚pomelo。
          2. socket.io是偏底层的API,但比较好用。
          3. 开发效率,跟个人能力挂钩
          4. 服务器稳定性,我没有做过ws的性能测试,只能说看个人能力。

          • 春遥 刘

            非常感谢。网上的资源和API文档都很完备,值得一试。谢谢博主不吝赐教。还要继续拜读你的文档一阵子。 : )

  • MaLin

    不知道怎么搞的 express 安装成了 express 不能运行是不是我漏掉了什么

    • 上个月express发布了新版本4,而我的文章是express 3,这两个版本有一些不兼容。所以,你用express 4时,需要看新的文档,或者继续用express 3 版本。

    • sini

      你现在可以运行了吗?求教

    • http://stackoverflow.com/questions/23002448/express-command-not-found

      sudo npm install -g express-generator

      不过用express生成了app,但运行没有任何效果,看了app.js源码,也没发现建立服务器的代码

      • 文中是express3的,3.6以后把express-generator分离出来了。

  • Troland

    git checkout错了吧应该是git checkout -b test origin/v0.11.13-release吧。

    • 你这样子写可以新建一个本地分支test,我文章中的是直接切换到分支。我没有修改源代码的需求,所以没必要新建分支。

  • 刘云博

    localhost:3000拒绝连接

  • Pingback: CNPM搭建私有的NPM服务 | 粉丝日志()

  • yunf

    express3.6以后把express-generator分离出来

    sudo npm install -g express
    express4.X 以后需安装
    sudo npm install -g express-generator

    node app.js 没响应是因为
    express 4.X 无法以 app.js 为启动方式
    而是用指今npm start 作为启动

  • Season

    建议把node app.js改成npm start,不及时更新很容易让新手放弃。

  • Season

    安装完express后依旧无法使用指令,请继续安装express generator。因为新版本把cli从express分离出来了。

  • ivydom

    centos yum安装
    自己写了个测试文件结果显示正常,外网也能访问
    然后按照你这个继续走下去node app.js 不成功 curl 提示network is unreacheable

  • ivydom

    麻烦帮忙看一下,谢谢

  • Jane

    “node app.js”已经不支持了

    • 本书比较早,是针对 express3的版本的,后面就变了。
      当然,等你熟悉了node,也可以使用node app.js这种方法来启动node服务。