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,做一个真正属于自己的应用!

  • 相关阅读:
    仿百度输入框智能提示
    SQLSERVER2012 列存储索引的简单研究和测试
    Slider.js轻量级图片播放控件
    mina 字节数组编解码器的写法 II
    mongodb常用基础命令
    QT绘制半透明窗体(改写paintEvent,超级简单)
    在windows下的QT编程中的_TCHAR与QString之间的转换
    QT 遍历目录查找指定文件(比较简单)
    QNetworkAccessManager跳转URL处理(使用QNetworkRequest::RedirectionTargetAttribute获得跳转URL)
    跨平台生成GUID/UUID
  • 原文地址:https://www.cnblogs.com/wangluochong/p/7451938.html
Copyright © 2011-2022 走看看