搭建基于Node.js-EXPRESS框架的WEB应用

2014-05-20 4,437 0 技术 大超超。

这两天看了一些Node.js的教程,理论结合实践才能提高的快,就试着搭建一个基于Node.js的网站出来,使用了EXPRESS框架。

1、在centos上安装nodejs已经在昨天的文章里写过了,使用以下命令即可:

yum install nodejs

2、安装Node.jsnpm扩展时,加上依赖需要安装81个包:

# yun install npm
Installing:
 npm                           noarch 1.3.6-5.el6                    epel 329 k
Installing for dependencies:
 c-ares19-devel                x86_64 1.9.1-5.el6.3                  epel  17 k
 gyp                           noarch 0.1-0.6.1010svn.el6            epel 335 k
 http-parser-devel             x86_64 2.0-4.20121128gitcd01361.el6   epel 9.2 k
 libuv-devel                   x86_64 1:0.10.25-1.el6                epel  38 k
 node-gyp                      noarch 0.10.6-2.el6                   epel  25 k
 nodejs-abbrev                 noarch 1.0.4-6.el6                    epel 7.1 k
 nodejs-ansi                   noarch 0.2.1-1.el6                    epel  13 k
 nodejs-archy                  noarch 0.0.2-8.el6                    epel 6.3 k
 nodejs-asn1                   noarch 0.1.11-3.el6                   epel  10 k
 nodejs-assert-plus            noarch 0.1.4-1.el6                    epel 7.0 k
 nodejs-async                  noarch 0.2.10-1.el6                   epel  21 k
 nodejs-aws-sign               noarch 0.3.0-1.el6                    epel 5.4 k
 nodejs-block-stream           noarch 0.0.7-1.el6                    epel 8.4 k
 nodejs-boom                   noarch 0.4.2-2.el6                    epel  36 k
 nodejs-child-process-close    noarch 0.1.1-2.el6                    epel 5.7 k
 nodejs-chmodr                 noarch 0.1.0-4.el6                    epel 5.6 k
 nodejs-chownr                 noarch 0.0.1-9.el6                    epel 6.1 k
 nodejs-cmd-shim               noarch 1.1.0-3.el6                    epel 7.3 k
 nodejs-combined-stream        noarch 0.0.4-3.el6                    epel 7.6 k
 nodejs-config-chain           noarch 1.1.7-1.el6                    epel 9.9 k
 nodejs-cookie-jar             noarch 1:0.3.0-1.el6                  epel 5.8 k
 nodejs-couch-login            noarch 0.1.18-1.el6                   epel  12 k
 nodejs-cryptiles              noarch 0.2.2-1.el6                    epel 6.5 k
 nodejs-ctype                  noarch 0.5.3-3.el6                    epel  31 k
 nodejs-delayed-stream         noarch 0.0.5-5.el6                    epel 7.5 k
 nodejs-devel                  x86_64 0.10.26-1.el6                  epel 436 k
 nodejs-editor                 noarch 0.0.4-2.el6                    epel 6.0 k
 nodejs-forever-agent          noarch 0.5.0-1.el6                    epel 5.3 k
 nodejs-form-data              noarch 0.1.1-1.el6                    epel  10 k
 nodejs-fstream                noarch 0.1.24-1.el6                   epel  24 k
 nodejs-fstream-ignore         noarch 0.0.7-1.el6                    epel 8.5 k
 nodejs-fstream-npm            noarch 0.1.5-1.el6                    epel  11 k
 nodejs-github-url-from-git    noarch 1.1.1-2.el6                    epel 5.7 k
 nodejs-glob                   noarch 3.2.6-1.el6                    epel  16 k
 nodejs-graceful-fs            noarch 2.0.0-2.el6                    epel  10 k
 nodejs-hawk                   noarch 1.0.0-1.el6                    epel 104 k
 nodejs-hoek                   noarch 0.9.1-1.el6                    epel  51 k
 nodejs-http-signature         noarch 0.10.0-3.el6                   epel  16 k
 nodejs-inherits               noarch 2.0.0-4.el6                    epel 8.3 k
 nodejs-ini                    noarch 1.1.0-3.el6                    epel 7.9 k
 nodejs-init-package-json      noarch 0.0.10-1.el6                   epel 9.1 k
 nodejs-json-stringify-safe    noarch 5.0.0-1.el6                    epel 6.2 k
 nodejs-lockfile               noarch 0.4.2-1.el6                    epel  11 k
 nodejs-lru-cache              noarch 2.3.0-3.el6                    epel 9.2 k
 nodejs-mime                   noarch 1.2.11-1.el6                   epel  22 k
 nodejs-minimatch              noarch 0.2.12-2.el6                   epel  18 k
 nodejs-mkdirp                 noarch 0.3.5-3.el6                    epel 7.2 k
 nodejs-mute-stream            noarch 0.0.4-1.el6                    epel 7.1 k
 nodejs-node-uuid              noarch 1.4.1-1.el6                    epel 9.8 k
 nodejs-nopt                   noarch 2.1.2-1.el6                    epel  15 k
 nodejs-normalize-package-data noarch 0.2.1-1.el6                    epel  12 k
 nodejs-npm-registry-client    noarch 0.2.28-1.el6                   epel  19 k
 nodejs-npm-user-validate      noarch 0.0.3-1.el6                    epel 5.7 k
 nodejs-npmconf                noarch 0.1.2-1.el6                    epel  16 k
 nodejs-npmlog                 noarch 0.0.4-1.el6                    epel 9.0 k
 nodejs-oauth-sign             noarch 0.3.0-1.el6                    epel 4.6 k
 nodejs-once                   noarch 1.1.1-5.el6                    epel 5.7 k
 nodejs-opener                 noarch 1.3.0-7.el6                    epel 6.5 k
 nodejs-osenv                  noarch 0.0.3-5.el6                    epel 6.7 k
 nodejs-packaging              noarch 5-1.el6                        epel 9.6 k
 nodejs-promzard               noarch 0.2.0-6.el6                    epel  12 k
 nodejs-proto-list             noarch 1.2.2-5.el6                    epel 6.4 k
 nodejs-qs                     noarch 0.6.5-3.el6                    epel 8.0 k
 nodejs-read                   noarch 1.0.5-1.el6                    epel 8.3 k
 nodejs-read-installed         noarch 0.2.4-1.el6                    epel 9.1 k
 nodejs-read-package-json      noarch 1.1.3-1.el6                    epel  11 k
 nodejs-request                noarch 2.25.0-3.el6                   epel  26 k
 nodejs-retry                  noarch 0.6.0-5.el6                    epel  10 k
 nodejs-rimraf                 noarch 2.2.2-1.el6                    epel 7.7 k
 nodejs-semver                 noarch 2.1.0-1.el6                    epel  16 k
 nodejs-sha                    noarch 1.2.1-1.el6                    epel 7.2 k
 nodejs-sigmund                noarch 1.0.0-5.el6                    epel 7.9 k
 nodejs-slide                  noarch 1.1.5-1.el6                    epel 9.5 k
 nodejs-sntp                   noarch 0.2.4-1.el6                    epel 9.7 k
 nodejs-tar                    noarch 0.1.18-1.el6                   epel  22 k
 nodejs-tunnel-agent           noarch 0.3.0-1.el6                    epel 6.0 k
 nodejs-uid-number             noarch 0.0.3-7.el6                    epel 6.8 k
 nodejs-which                  noarch 1.0.5-8.el6                    epel 7.6 k
 redhat-rpm-config             noarch 9.0.3-42.el6.centos            base  59 k
 v8-devel                      x86_64 1:3.14.5.10-7.el6              epel  70 k
        
Transaction Summary
================================================================================
Install      81 Package(s)
        
Total download size: 2.2 M
Installed size: 5.8 M

3、安装express

npm install -g express

安装完成后出现以下内容:

express@4.2.0 /usr/lib/node_modules/express
├── parseurl@1.0.1
├── merge-descriptors@0.0.2
├── utils-merge@1.0.0
├── cookie@0.1.2
├── escape-html@1.0.1
├── debug@0.8.1
├── cookie-signature@1.0.3
├── range-parser@1.0.0
├── fresh@0.2.2
├── qs@0.6.6
├── methods@1.0.0
├── buffer-crc32@0.2.1
├── serve-static@1.1.0
├── path-to-regexp@0.1.2
├── send@0.3.0 (debug@0.8.0, mime@1.2.11)
├── type-is@1.1.0 (mime@1.2.11)
└── accepts@1.0.1 (negotiator@0.4.3, mime@1.2.11)

4、创建一个基于express的博客(貌似3步骤和书上的不一样,没法直接执行express -t ejs blog,是不是没添加路径到全局变量?但是也没找到expressbin目录啊……所以在网上找了express官方教程):

mkdir blog
cd blog/
vim package.json

输入以下内容,保存:

{
    "name": "hello-world",
    "description": "hello world test app",
    "version": "0.0.1",
    "private": true,
    "dependencies": {
      "express": "4.2.0",
      "ejs":">=0.0.1"
    }
 }

5、再执行(安装express):

npm install

然后就可以看到这些:

express@4.2.0 /usr/lib/node_modules/express
├── parseurl@1.0.1
├── utils-merge@1.0.0
├── merge-descriptors@0.0.2
├── cookie@0.1.2
├── escape-html@1.0.1
├── debug@0.8.1
├── cookie-signature@1.0.3
├── range-parser@1.0.0
├── fresh@0.2.2
├── qs@0.6.6
├── methods@1.0.0
├── buffer-crc32@0.2.1
├── serve-static@1.1.0
├── path-to-regexp@0.1.2
├── send@0.3.0 (debug@0.8.0, mime@1.2.11)
├── type-is@1.1.0 (mime@1.2.11)
└── accepts@1.0.1 (negotiator@0.4.3, mime@1.2.11)

6、开始编写WEB代码:

vim server.js

写入以下内容:

var express = require('express');
var app = express();
   
app.get('/', function(req, res){
        res.send('Hello world');
});
   
var server = app.listen(9080, function(){
        console.log("Listen on port "+server.address().port);
});

7、执行它:

# node server.js
Listen on port 9080

8、测试:

curl localhost:9080
Hello world

9、加上Nginx反向代理(“共用”80端口):

cd /etc/nginx/conf.d/
vim nodejs.conf

写入以下内容:

#
# A virtual host using mix of IP-, name-, and port-based configuration
#
   
server {
    listen       80;
    server_name  blog.geeyan.com;
   
    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://localhost:9080/;  #反向代理到nodejs占用的端口
        proxy_redirect off;
    }
}

随后重启Nginx

/etc/init.d/nginx restart

10、使用域名测试:

 使用域名测试

 



声明: 本文由大超超。原创编译,转载请保留链接: http://www.thinkful.cn/archives/480.html