准备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语言实践

0 0 votes
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

37 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

[…] Ubuntu的Nodejs安装请参考:准备Nodejs开发环境Ubuntu ~ npm install jquery […]

[…] 请查看博客文章http://blog.fens.me/nodejs-enviroment […]

[…] 终于要把nodejs的应用程序部署上线了, node和npm在ubuntu下安装,请参考:准备Nodejs开发环境Ubuntu […]

xylinq

非常感谢, 帮助到我了。

Conan Zhang

🙂

zhenxu

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

Conan Zhang

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

googya

用NVM 安装 node 更简单些

Conan Zhang

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

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

Jimmy

nvm => node version manager

春遥 刘

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

Conan Zhang

就像你了解的node挺好的

春遥 刘

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

Conan Zhang

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

春遥 刘

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

MaLin

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

Conan Zhang

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

sini

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

Mars zhou

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

sudo npm install -g express-generator

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

Conan Zhang

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

Troland

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

Conan Zhang

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

刘云博

localhost:3000拒绝连接

Conan Zhang

多写点描述,一句话看不出问题。

刘云博

解决了 谢谢!

Conan Zhang

🙂

[…] 经过检查发现,是Node版本的问题。重新下载编译安装Node,详细操作请参考文章准备Nodejs开发环境Ubuntu,升级后的版本为 […]

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 作为启动

Conan Zhang

是的

Season

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

Season

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

ivydom

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

ivydom

麻烦帮忙看一下,谢谢

ivydom

解决了,要用npm start

Conan Zhang
Jane

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

Conan Zhang

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

37
0
Would love your thoughts, please comment.x
()
x