在EC2上运行node.js + nginx + pm2 + express4的node应用程序

EC2 上的 node.js 服务器.

首先,我们要准备好node.js的环境。
本次使用的版本是v0.10.36。
我们将使用git远程仓库中存放的node.js代码。

$ sudo yum update -y
$ sudo yum install git gcc-c++ make openssl-devel -y
$ git clone git://github.com/creationix/nvm.git .nvm
$ source ~/.nvm/nvm.sh
$ nvm install v0.10.36
$ nvm alias default v0.10.36
$ vim ~/.bash_profile
if [[ -f ~/.nvm/nvm.sh ]]; then
  source ~/.nvm/nvm.sh
    _nodejs_use_version="v0.10.36"
    if nvm ls | grep -F -e "${_nodejs_use_version}" >/dev/null 2>&1 ;then
      nvm use "${_nodejs_use_version}" >/dev/null
      export NODE_PATH=${NVM_PATH}_modules${NODE_PATH:+:}${NODE_PATH}
    fi
    unset _nodejs_use_version
fi

安装nginx

$ sudo yum install nginx -y
$ nginx -v
$ sudo chkconfig nginx on
$ sudo service nginx start
$ sudo vim /etc/nginx/conf.d/node-app.conf
upstream node-app {
    server localhost:3000;
}

server {
    listen       80;
    server_name  10.211.55.2;
    proxy_redirect                          off;
    proxy_set_header Host                   $host;
    proxy_set_header X-Real-IP              $remote_addr;
    proxy_set_header X-Forwarded-Host       $host;
    proxy_set_header X-Forwarded-Server     $host;
    proxy_set_header X-Forwarded-For        $proxy_add_x_forwarded_for;
    location / {
        proxy_pass http://node-app/;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {  
    root   /usr/share/nginx/html;
    }
}

$ sudo service nginx restart

应用程序设置

$ git pull origin master nodeapp
$ cd nodeapp
$ npm install

节点守护进程使用pm2

以下是将node应用程序设置为守护程序的最后配置。
由于本次使用的是express4,所以要将其作为服务器启动,需要将其设为./bin/www.js。(原本应该是./bin/www文件,所以请复制一份。)

$ npm install -g pm2
$ pm2 start ./bin/www.js -i max