AngularJS中文社區(qū)即運行在阿里云主機上,本站使用Nginx引擎,為了AngularJS,我決定將它的黃金搭檔NodeJS也架設(shè)起來。
我使用了LuManager來管理服務(wù)器,LuManager是十分強大且方便的服務(wù)器管理軟件,沒接觸過的朋友建議去官網(wǎng)看看。
首先是網(wǎng)站入口問題,Nginx使用了80端口,NodeJS使用8080端口。我們利用Nginx的“proxy_pass”將對80端口NodeJS站點的訪問導(dǎo)向8080端口,在LuManager中,這個配置十分簡單:
*1、*進入LuManager后臺,用“快速建站”建立NodeJS網(wǎng)站,如testnodejs.com網(wǎng)站,這里也可建立多個NodeJS網(wǎng)站,網(wǎng)站域名按如下方式填寫即可:
testnodejs.com *.testnodejs.com testnodejs2.com *.testnodejs2.com
使他們指向共同的NodeJS網(wǎng)站群根目錄,如nodejs
目錄。
2、然后為NodeJS網(wǎng)站配置Nginx,修改該NodeJS網(wǎng)站配置,進入選填項,在Nginx擴展設(shè)置(location段)**添加如下代碼:
proxy_pass http://127.0.0.1:8080;
如此以來,外部對testnodejs.com、testnodejs2.com等NodeJS網(wǎng)站的訪問全部轉(zhuǎn)向了8080端口,NodeJS監(jiān)聽8080端口即可。而該NodeJS網(wǎng)站群的根目錄即上面設(shè)置的nodejs
目錄,我們可在該目錄中再搭設(shè)testnodejs.com、testnodejs2.com等虛擬站點。
NodejS目前最新穩(wěn)定版是0.8.9,在阿里云CentOS6.2環(huán)境中,根據(jù)以下步驟即可成功安裝:
wget http://nodejs.org/dist/v0.8.9/node-v0.8.9.tar.gztar zxvf node-v0.8.9.tar.gzcd node-v0.8.9./configure --prefix=/home/node/0.8.9makemake install
我的阿里云主機編譯過程大概花了7分鐘,安裝成功后配置系統(tǒng)環(huán)境,使node命令可用:
echo "export PATH=$PATH:/home/node/0.8.9/bin" >> ~/.bash_profile. ~/.bash_profile
第一行將/home/node/0.8.9/bin
添加到系統(tǒng)環(huán)境(root目錄下的.bash_profile
文件),第二行執(zhí)行該文件更新$PATH變量,我們可以使用echo $PATH
命令查看是否添加進去?,F(xiàn)在,我們在命令行輸入node --help
測試一下:
至此,NodeJS安裝完畢。
使用NodeJS幾乎是必裝express框架,使用下面命令即可安裝:
npm install express -gd
其中g
參數(shù)是把express安裝到NodeJS的lib目錄,d
參數(shù)表示同時安裝依賴模塊包。安裝完畢后切換到NodeJS模塊目錄,然后執(zhí)行npm命令查看所有NodeJS模塊:
cd /home/node/0.8.9/libnpm listnpm outdatednpm update
上面第二個命令是列出所有NodeJS目錄下的模塊,第三個命令是檢查模塊是否有更新,第四個命令是更新當(dāng)前目錄可更新的模塊。
至此,Express安裝完畢,我們可以在網(wǎng)站目錄下建一個基于express的應(yīng)用:
express testappcd testappnpm installnode app.js
上面第三個命令是安裝該testapp應(yīng)用的依賴模塊包,第四個命令即運行testapp應(yīng)用。我們看到提示“Express server listening on port 3000”,目前該應(yīng)用使用的是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的網(wǎng)站就開始運行了,從瀏覽器進入該NodeJS站點,即可看到效果(我使用了域名weizt.com):
我們不可能直接通過node
命令來管理遠程站點,這樣無法保證網(wǎng)站的可持續(xù)運行。我們用Forever來解決這個問題,它可以將NodeJS應(yīng)用以后臺守護進程的方式運行,我們還可以將NodeJS應(yīng)用設(shè)成隨系統(tǒng)啟動而自動運行。
首先,安裝Forever:
npm install forever -gd
這樣Forever就安裝好了,我們可以直接運行Forever命令:
forever --helpforever start app.jsforever stop app.js
上面命令先查看Forever幫助文件,然后運行app.js,然后停止app.js。我們要讓Forever自動運行,先在/etc/init.d
目錄創(chuàng)建一個文件node
,內(nèi)容如下:
#!/bin/bash## node Start up node server daemon## chkconfig: 345 85 15# description: Forever for Node.js#PATH=/home/node/0.8.9/binDEAMON=/home/ftp/1520/weizt-20120918-tKx/weizt.com/app.jsLOG=/home/hosts_logPID=/tmp/forever.pidcase "$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 ;;esacexit 0
以上代碼是我在本地虛擬機的配置,根據(jù)實際情況修改相關(guān)參數(shù),主要是DEAMON的路徑參數(shù),賦予該文件可執(zhí)行權(quán)限,并運行chkconfig添加自動運行:
chmod 755 /etc/init.d/nodechkconfig /etc/init.d/node on
reboot重啟系統(tǒng),通過瀏覽器進入網(wǎng)站可發(fā)現(xiàn),該NodeJS已經(jīng)可自動運行了,剩下的工作,就是好好研究NodeJS、Express和AngularJS,做一個真正屬于自己的應(yīng)用!