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的更多相关文章

  1. Centos6.8阿里云linux系统下配置LAMP运行环境-mysql5.6

    1.Apache #安装apache软件 yum -y install httpd #启动httpd服务 service httpd start #设置开机启动chkconfig --list htt ...

  2. (转)阿里云CentOS 7下配置及使用mysql

    一.安装 1 正确的安装方法: 众所周知,Linux系统自带的repo是不会自动更新每个软件的最新版本(基本都是比较靠后的稳定版),所以无法通过yum方式安装MySQL的高级版本.所以我们需要先安装带 ...

  3. Django+nginx+gunicore+supervisor+阿里云主机 部署博客项目

    1 准备阶段 1 新鲜的阿里云主机 2 购买一个喜欢的域名 3 创建python的虚拟环境 2 阿里云主机的选取 咱们就是为了实验,我买了最便宜的阿里云主机 3 阿里云主机创建一个超级用户 3.1 默 ...

  4. nginx进行获取阿里云slb真实ip配置操作

    环境: 1.使用阿里云的slb进行配置nginx,nginx无法获取用户的真实ip解决方案 参考阿里云: https://help.aliyun.com/knowledge_detail/40535. ...

  5. 阿里云服务器centos下安装配置svn服务器

      阿里云服务器centos下安装配置svn服务器 1.安装svn服务器端yum install subversion      从镜像下载安装svn服务器端中间会提示是否ok,输入y,确认安装成功提 ...

  6. 阿里云主机安装Memcached

    http://www.zyuns.com/?page_id=354 前言最近发现阿里云主机在使用中,并发访问量稍大,页面加载速度就很慢.于是学习了一些服务器优化的文章,决定安装Memcached,优化 ...

  7. 【小技巧解决大问题】使用 frp 突破阿里云主机无弹性公网 IP 不能用作 Web 服务器的限制

    背景 今年 8 月份左右,打折价买了一个阿里云主机,比平常便宜了 2000 多块.买了之后,本想作为一个博客网站的,毕竟国内的服务器访问肯定快一些.满心欢喜的下单之后,却发现 http 服务,外网怎么 ...

  8. 阿里云安装Nginx+vue项目部署

    阿里云安装Nginx+vue项目部署 nginx安装包下载 http://nginx.org/en/download.html nginx安装 首先先安装PCRE pcre-devel 和Zlib,因 ...

  9. 阿里云服务器win2003下iis整合tomcat共享80端口

    阿里云服务器win2003下iis整合tomcat共享80端口 很多机器都用tomcat跟IIS部署不同网站.最近买了阿里云的服务器.于是也想玩一下.网上百度了很多方法.但是都有缺陷说的不是很清楚.通 ...

随机推荐

  1. Terminal 快捷键帮助

    Terminal 快捷键帮助 Terminal 快捷键帮助 移动光标至行首 CTRL+A 第一次按时,移动光标至行首: 再次按时,回到原有位置 CTRL+X 移动光标至行尾 CTRL+E 光标向左移动 ...

  2. C++模板的使用以及常见问题

    最近的数据结构实验频繁地遇到了模板,之前对这一块接触不多,遇到了很多问题,放到这里总结一下. 模板的声明有两种:template <typename Type>或者template< ...

  3. 修改VS 2012调试默认浏览器

    首先用vs打开我们的工程文件,点击任意一个aspx文件,点右键,找到弹出菜单中的“浏览方式”,如图: 然后点击“浏览方式”或者“Browser with”,弹出如图对话框: 

  4. jsp使用cookie自动登录

    Login.jsp <%@ page language="java" import="java.util.*" pageEncoding="ut ...

  5. git 提交解决冲突(转载)

    转载 git 提交解决冲突 http://www.cnblogs.com/qinbb/p/5972308.html   一:git命令在提交代码前,没有pull拉最新的代码,因此再次提交出现了冲突. ...

  6. SqlExpress与 LocalDB的链接字符串转换

    1.如果是连接SQL Server Express databases,需要将连接字符串定义为:Data Source=.SQLEXPRESS" to "Data Source=( ...

  7. (14)CountTriplets

    一.问题描述 给定一个数组.三个索引 i,i ~ [0, array.length) j,  j ~ [0, array.length) k, k ~ [0, array.length) 求有多少种组 ...

  8. [SYSS-2018-033]: Fujitsu Wireless Keyboard Set LX901 - Keystroke Injection Vulnerability

    风险简介: [SYSS-2018-033]:富士通无线键盘组LX901 -击键注入漏洞 风险报告ID: sys - 2018 - 033 产品:无线键盘套件LX901 制造商:富士通 受影响版本:型号 ...

  9. 第25月第5天 Hands-on Machine Learning with Scikit-Learn and TensorFlow

    1.apachecn视频(机器学习实战) https://github.com/apachecn/AiLearning https://space.bilibili.com/97678687/#/ch ...

  10. python判断小数示例&写入文件内容示例

    #需求分析: #1.判断小数点个数是否为1 #2.按照小数点分隔,取到小数点左边和右边的值 #3.判断正小数,小数点左边为整数,小数点右边为整数 #4.判断负小数,小数点左边以负号开头,并且只有一个负 ...