代码改变世界

Node.js 开发环境搭建及设置

2013-10-31 14:29  zwz2008  阅读(730)  评论(0编辑  收藏  举报

一、软件安装

    1 Node.js:访问官网安装对应自己操作系统的安装包

    2 Node包管理器npm(Node.js 0.6以后已经包含在发行包中)手动安装:cmd中执行命令curl http://npmjs.org/install.sh |sh

    3 开发工具WebStorm:访问官网下载对应自己操作系统的安装包安装

二、Web开发所需

    1 Express:它是目前最稳定,应用最广泛,而且Node.js官方推荐的唯一一个WEB开发框架.

    安装方法:cmd下进入${nodejs}\node_modules目录执行npm install -gexpress

    建立项目:

    a.cmd工作空间下执行express -e(ejs)或-j(jade) <project>

    b.进入其中运行npm install自动安装了依赖ejs和express

    c.启动服务器执行node app.js 浏览器输入http://localhost:3000即可

    2 附:express-partials:express 3.0(其他区别)后不支持对ejs模版引擎的layout模版

    解决方法:

        1.安装express-partials。

        方法一:运行cmd用npm install express-partials

        方法二:在package.json里面的dependencies添加"express-partials": "*"。然后运行cmd并切换        至项目目录运行npm install获得最新版。

        2.app.js里面引用express-partials。

        步骤一:添加引用var partials = require('express-partials'); 

        步骤二:在app.set('view engine', 'ejs');下面添加app.use(partials());

        3.在需要引用模板的地方调用layout:'模版名称'

        示例

1
2
3
4
5
6
app.get('/reg'function (req, res) {
                res.render('reg', {
                title: '用户注册',
                layout: 'template'
                }); 
        });

    3 package.json 中所需模块例子

    "dependencies":{

        "express":"3.0.0rc5",  //web开发框架

        "ejs":"*", //ejs解析

        "mongodb":">=0.9.9",//mongodb数据库

        "connect-mongo":">=0.1.7",//session存入mongodb模块

        "connect-flash":"*",//express 3.0取消flash()后的补丁模块

        "eventproxy":"*"//解决深层事件回调模块

    }

 

   4 安装 supervisor每次更改不用重启 node app

   安装很简单 cmd

      npm install supervisor -g

   使用

      supervisor app.js

 

   原 webstorm run 配置

      C:\Program Files\nodejs\node.exe

   修改 run 配置

      新建个 bat 内容: supervisor %1

      webstorm 修改: 菜单 run->edit configurations -> path to node -> 复制你的 bat 路径 如 d:\xxx.bat

5 设置开机启动

#!/bin/sh
#add for chkconfig
#chkconfig: 2345 70 30

PATH=/usr/local/bin/:$PATH
export PATH
cd /home/wwwroot/nodeproj
supervisor app.js >> /dev/null 2>&1 &

编辑/etc/init.d/nodeauto 设置执行权限和环境变量

chkconfig --add nodeauto

chkconfig nodeauto on/off

service nodeauto

6 forever 管理node进程服务

创建启动文件
sudo vim /etc/init.d/the_name_you_want

写入内容大致如下:

#!/bin/bash

# chkconfig: 345 99 01

# description: forever service

345 是启动级别,99 是启动优先级(序号),01 是关闭优先级(序号)。如果有其他服务依赖于 forever 服务,可以提高优先级,以确保其他服务启动时其可用。

继续:

DEAMON="/your/server/app.js"
LOG="/your/logs/file.log"
DEAMONPATH="/your/watch/path"
PID="/root/.forever/pids/forever.pid"

注意右边是值在引号内!!不然 forever 可能会喊它要 string,尤其是 LOG 地址。在 yum 安装环境中遇到过,make 安装环境未重现,这是今天的吐槽点二。

继续

export PATH=$PATH:/usr/local/bin
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules

注入环境变量,不然找不到 node 或者 -g 安装的包。上面已经提过,地址根据安装方法不同不一致,区别在于有没有 local 这一级,自己根据实际情况定夺。

继续

case"$1"in
    start)
        forever start -wal $LOG -m 0--watchDirectory $DEAMONPATH --pidFile $PID $DEAMON
        ;;
    stop)
        forever stop --pidFile $PID $DEAMON
        ;;
    restart)
        forever restart -wal $LOG -m 0--watchDirectory $DEAMONPATH --pidFile $PID $DEAMON
        ;;
    list)
        forever list
        ;;*)
    echo "Usage: /etc/init.d/the_name_you_want {start|stop|restart|list}"exit1;;esacexit0

详细说明一下:

  • -w 监视文件变更,forever 会重启 server 的子进程
  • -l 指定输入日志
  • -a 声明追加内容到已有日志文件 (没有 -a 会直接报错并中断…………谁会每次重新启动来关心 log 日志啊?!为什么 -a 不是默认值!!!这是今天的吐槽点三。
  • -m 最大运行次数
  • --watchDirectory 监视文件的目录 path (这是一个奇葩的设定,不知道是我“打开的方式不对”,还是其他问题。如果设置了 -w 就必须设置一下这货,不然…… 后面用一节来专门说明这个问题。这是今天的吐槽点四。也是最大的吐槽点!!
  • --pidFile 字面意思