zoukankan      html  css  js  c++  java
  • 阿里云主机Nginx下配置NodeJS、Express和Forever

    https://cnodejs.org/topic/5059ce39fd37ea6b2f07e1a3

    AngularJS中文社区即运行在阿里云主机上,本站使用Nginx引擎,为了AngularJS,我决定将它的黄金搭档NodeJS也架设起来。

    我使用了LuManager来管理服务器,LuManager是十分强大且方便的服务器管理软件,没接触过的朋友建议去官网看看。

    一、Nginx站点与NodeJS站点共存的配置

    首先是网站入口问题,Nginx使用了80端口,NodeJS使用8080端口。我们利用Nginx的“proxy_pass”将对80端口NodeJS站点的访问导向8080端口,在LuManager中,这个配置十分简单:<!–more–>

    *1、*进入LuManager后台,用“快速建站”建立NodeJS网站,如testnodejs.com网站,这里也可建立多个NodeJS网站,网站域名按如下方式填写即可:

    testnodejs.com *.testnodejs.com testnodejs2.com *.testnodejs2.com

    使他们指向共同的NodeJS网站群根目录,如nodejs目录。

    2、然后为NodeJS网站配置Nginx,修改该NodeJS网站配置,进入选填项,在Nginx扩展设置(location段)**添加如下代码:

    proxy_pass http://127.0.0.1:8080;

    如此以来,外部对testnodejs.com、testnodejs2.com等NodeJS网站的访问全部转向了8080端口,NodeJS监听8080端口即可。而该NodeJS网站群的根目录即上面设置的nodejs目录,我们可在该目录中再搭设testnodejs.com、testnodejs2.com等虚拟站点。

    二、安装NodeJS

    NodejS目前最新稳定版是0.8.9,在阿里云CentOS6.2环境中,根据以下步骤即可成功安装:

    wget http://nodejs.org/dist/v0.8.9/node-v0.8.9.tar.gz
    tar zxvf node-v0.8.9.tar.gz
    cd node-v0.8.9
    ./configure --prefix=/home/node/0.8.9
    make
    make install

    我的阿里云主机编译过程大概花了7分钟,安装成功后配置系统环境,使node命令可用:

    echo "export PATH=$PATH:/home/node/0.8.9/bin" >> ~/.bash_profile
    . ~/.bash_profile

    第一行将/home/node/0.8.9/bin添加到系统环境(root目录下的.bash_profile文件),第二行执行该文件更新$PATH变量,我们可以使用echo $PATH命令查看是否添加进去。现在,我们在命令行输入node --help测试一下:

    enter image description here

    至此,NodeJS安装完毕。

    三、安装Express框架

    使用NodeJS几乎是必装express框架,使用下面命令即可安装:

    npm install express -gd

    其中g参数是把express安装到NodeJS的lib目录,d参数表示同时安装依赖模块包。安装完毕后切换到NodeJS模块目录,然后执行npm命令查看所有NodeJS模块:

    cd /home/node/0.8.9/lib
    npm list
    npm outdated
    npm update

    上面第二个命令是列出所有NodeJS目录下的模块,第三个命令是检查模块是否有更新,第四个命令是更新当前目录可更新的模块。

    至此,Express安装完毕,我们可以在网站目录下建一个基于express的应用:

    express testapp
    cd testapp
    npm install
    node app.js

    上面第三个命令是安装该testapp应用的依赖模块包,第四个命令即运行testapp应用。我们看到提示“Express server listening on port 3000”,目前该应用使用的是3000端口,我们要改成8080端口,用编辑器打开app.js,代码如下:

    /**
     * Module dependencies.
     */
    
    var express = require('express')
      , routes = require('./routes')
      , user = require('./routes/user')
      , http = require('http')
      , path = require('path');
    
    var app = express();
    
    app.configure(function(){
      app.set('port', process.env.PORT || 8080);
      app.set('views', __dirname + '/views');
      app.set('view engine', 'jade');
      app.use(express.favicon());
      app.use(express.logger('dev'));
      app.use(express.bodyParser());
      app.use(express.methodOverride());
      app.use(app.router);
      app.use(express.static(path.join(__dirname, 'public')));
    });
    
    app.configure('development', function(){
      app.use(express.errorHandler());
    });
    
    app.get('/', routes.index);
    app.get('/users', user.list);
    
    http.createServer(app).listen(app.get('port'), function(){
      console.log("Express server listening on port " + app.get('port'));
    });

    上面第14行,我已将端口改成8080,然后运行node app.js,这个简单的基于NodeJS和Express的网站就开始运行了,从浏览器进入该NodeJS站点,即可看到效果(我使用了域名weizt.com):

    enter image description here

    四、安装Forever后台管理器

    我们不可能直接通过node命令来管理远程站点,这样无法保证网站的可持续运行。我们用Forever来解决这个问题,它可以将NodeJS应用以后台守护进程的方式运行,我们还可以将NodeJS应用设成随系统启动而自动运行。

    首先,安装Forever:

    npm install forever -gd

    这样Forever就安装好了,我们可以直接运行Forever命令:

    forever --help
    forever start app.js
    forever stop app.js

    上面命令先查看Forever帮助文件,然后运行app.js,然后停止app.js。我们要让Forever自动运行,先在/etc/init.d目录创建一个文件node,内容如下:

    #!/bin/bash
    #
    # node      Start up node server daemon
    #
    # chkconfig: 345 85 15
    # description: Forever for Node.js
    #
    PATH=/home/node/0.8.9/bin
    DEAMON=/home/ftp/1520/weizt-20120918-tKx/weizt.com/app.js
    LOG=/home/hosts_log
    PID=/tmp/forever.pid
    
    case "$1" in
        start)
            forever start -l $LOG/forever.log -o $LOG/forever_out.log -e $LOG/forever_err.log --pidFile $PID -a $DEAMON
            ;;
        stop)
            forever stop --pidFile $PID $DEAMON
            ;;
        stopall)
            forever stopall --pidFile $PID
            ;;
        restartall)
            forever restartall --pidFile $PID
            ;;
        reload|restart)
            forever restart -l $LOG/forever.log -o $LOG/forever_out.log -e $LOG/forever_err.log --pidFile $PID -a $DEAMON
            ;;
        list)
            forever list
            ;;
        *)
            echo "Usage: /etc.init.d/node {start|stop|restart|reload|stopall|restartall|list}"
            exit 1
            ;;
    esac
    exit 0

    以上代码是我在本地虚拟机的配置,根据实际情况修改相关参数,主要是DEAMON的路径参数,赋予该文件可执行权限,并运行chkconfig添加自动运行:

    chmod 755 /etc/init.d/node
    chkconfig /etc/init.d/node on

    reboot重启系统,通过浏览器进入网站可发现,该NodeJS已经可自动运行了,剩下的工作,就是好好研究NodeJS、Express和AngularJS,做一个真正属于自己的应用!

  • 相关阅读:
    linux之awk命令
    HDU 2097 Sky数 进制转换
    HDU 2077 汉诺塔IV
    HDU 2094 产生冠军 dfs加map容器
    HDU 2073 叠框
    HDU 2083 简易版之最短距离
    HDU 2063 过山车 二分匹配
    天梯 1014 装箱问题
    天梯 1214 线段覆盖
    天梯 1098 均分纸牌
  • 原文地址:https://www.cnblogs.com/wangluochong/p/7451938.html
Copyright © 2011-2022 走看看