阿里云主机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部署不同网站.最近买了阿里云的服务器.于是也想玩一下.网上百度了很多方法.但是都有缺陷说的不是很清楚.通 ...
随机推荐
- NET Core Kestrel部署HTTPS使用SSL证书
ASP.NET Core配置 Kestrel部署HTTPS.现在大部分网站已经部署HTTPS,大家对于安全越来越重视. 今天简单介绍一下ASP.NET Core 部署HTTPS,直接通过配置Kestr ...
- Django路由层
路由层简单配置 urlpatterns = [ url(r'^admin/$', admin.site.urls), url(r'^articles/2003/$', views.special_ca ...
- jsp使用cookie自动登录
Login.jsp <%@ page language="java" import="java.util.*" pageEncoding="ut ...
- linux上安装mysql,tomcat,jdk
Linux 上安装 1 安装jdk 检测是否安装了jdk 运行 java –version 若有 需要将其卸载 a) 查看安装哪些jdk rmp –qa |grep java b) ...
- git常用命令(转载自用)
转载自 阮一峰博客: http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 一个码农博客: http://blog.gitor.org ...
- Ubuntu18.04使用AndroidStudio3.2.1编译TensorFlow android demo【2018年12月】
按照官方教程修改下面3处即可编译完成. 修改部分: 在build.gradle文件里修改以下部分: 1.原来: buildscript { repositories { jcenter() } dep ...
- 第20月第29天 cocoa抽象工厂 cocoapods组件化 cocoapods升级
1. 在 Cocoa Touch 框架中,类簇是抽象工厂模式在 iOS 下的一种实现,以 NSArray 举例,将原有的 alloc+init 拆开写: id obj1 = [NSArray allo ...
- easyui 进阶之表单校验、自定义校验
前言 easyui是一种基于jQuery的用户界面插件集合,它为创建现代化,互动,JavaScript应用程序,提供必要的功能,完美支持HTML5网页的完整框架,节省网页开发的时间和规模.非常的简单易 ...
- 遍历系统中所有的进程,可根据名字或ID查找某一个线程
我们这根据名字查找进程,获取其ID /*@brief 获取找到的与指定进程名相符的第一个进程ID * @param [in] cpszExeFileName 进程可执行文件名(不带路径) * @par ...
- target与currentTarget与this的区别
target与currentTarget与this的区别: target在事件流的目标阶段:currentTarget在事件的捕获.目标及冒泡阶段. 只有当事件流处在目标阶段的时候,二者的指向才是一致 ...