阿里云主机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测试一下:

至此,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):

四、安装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,做一个真正属于自己的应用!
阿里云主机Nginx下配置NodeJS、Express和Forever的更多相关文章
- Centos6.8阿里云linux系统下配置LAMP运行环境-mysql5.6
1.Apache #安装apache软件 yum -y install httpd #启动httpd服务 service httpd start #设置开机启动chkconfig --list htt ...
- (转)阿里云CentOS 7下配置及使用mysql
一.安装 1 正确的安装方法: 众所周知,Linux系统自带的repo是不会自动更新每个软件的最新版本(基本都是比较靠后的稳定版),所以无法通过yum方式安装MySQL的高级版本.所以我们需要先安装带 ...
- Django+nginx+gunicore+supervisor+阿里云主机 部署博客项目
1 准备阶段 1 新鲜的阿里云主机 2 购买一个喜欢的域名 3 创建python的虚拟环境 2 阿里云主机的选取 咱们就是为了实验,我买了最便宜的阿里云主机 3 阿里云主机创建一个超级用户 3.1 默 ...
- nginx进行获取阿里云slb真实ip配置操作
环境: 1.使用阿里云的slb进行配置nginx,nginx无法获取用户的真实ip解决方案 参考阿里云: https://help.aliyun.com/knowledge_detail/40535. ...
- 阿里云服务器centos下安装配置svn服务器
阿里云服务器centos下安装配置svn服务器 1.安装svn服务器端yum install subversion 从镜像下载安装svn服务器端中间会提示是否ok,输入y,确认安装成功提 ...
- 阿里云主机安装Memcached
http://www.zyuns.com/?page_id=354 前言最近发现阿里云主机在使用中,并发访问量稍大,页面加载速度就很慢.于是学习了一些服务器优化的文章,决定安装Memcached,优化 ...
- 【小技巧解决大问题】使用 frp 突破阿里云主机无弹性公网 IP 不能用作 Web 服务器的限制
背景 今年 8 月份左右,打折价买了一个阿里云主机,比平常便宜了 2000 多块.买了之后,本想作为一个博客网站的,毕竟国内的服务器访问肯定快一些.满心欢喜的下单之后,却发现 http 服务,外网怎么 ...
- 阿里云安装Nginx+vue项目部署
阿里云安装Nginx+vue项目部署 nginx安装包下载 http://nginx.org/en/download.html nginx安装 首先先安装PCRE pcre-devel 和Zlib,因 ...
- 阿里云服务器win2003下iis整合tomcat共享80端口
阿里云服务器win2003下iis整合tomcat共享80端口 很多机器都用tomcat跟IIS部署不同网站.最近买了阿里云的服务器.于是也想玩一下.网上百度了很多方法.但是都有缺陷说的不是很清楚.通 ...
随机推荐
- HDU - 6311 Cover(无向图的最少路径边覆盖 欧拉路径)
题意 给个无向图,无重边和自环,问最少需要多少路径把边覆盖了.并输出相应路径 分析 首先联通块之间是独立的,对于一个联通块内,最少路径覆盖就是 max(1,度数为奇数点的个数/2).然后就是求欧拉路 ...
- hdu 6418(石头剪刀布 **)
题意是说双方各有剪刀,石头和布的卡片各 a,b,c,a‘,b',c' 张,对方是随机选择,问我方的最大预期得分. 这道题目一开始看到的时候感觉没有头绪,再次读题,发现题目说结果可能是分数,如果是分数的 ...
- impala系列: 时间函数
--=======================时间函数--======================= --当前时间戳now()current_timestamp() --当前时间戳相对于 li ...
- vue 移动端日期选择组件 vue-mobile-calendar
vue-mobile-calendar cnpm install vue-mobile-calendar -S import Vue from 'vue' import Calendar from ' ...
- 让WeuiPicker隐藏日期中的日,只保留年月
weui.datePicker({ start: 1990, end: new Date().getFullYear() + 3, defaultValue: [year, month, 1], on ...
- linux 下shell脚本备份文件
以下是shell自动备份用的: 主要功能: 1)将pathSrc目录中的文件拷贝到pathDst目录中去. 具体步骤:先查询源目录和目标目录中的文件,分别存在fileSrc和fileDst中. -&g ...
- 使用WebSocket帮助应用程序群集节点间通信
[序列化message传输方式]两种方式都是转成二进制. 1.使用Java序列化器,ObjectXXXputStream 2.使用ByteBuffer.wrap(bytes). 在一个标准群集场景中, ...
- nginx: [error] CreateFile() "E:\nginx\nginx-1.9.3/logs/nginx.pid" failed
nginx: [error] CreateFile() "E:\nginx\nginx-1.9.3/logs/nginx.pid" failed nginx: [error] Op ...
- c# cbo控件
c# cbo控件 ,要获取选中的值 最好使用 ((强转的类型)selectitem).属性
- pyqtgraph
安装 pip3 install pyqtgraph 在PyQtGraph中,有几种绘制图形的方法: pyqtgraph.plot():创建一个新的绘图窗口来显示数据: PlotWidget.plot ...