搭建nodejs服务器
① 如何搭建简单的nodejs服务器
//请求模块
varlibHttp=require("http");//HTTP协议模块
varurl=require("url")
//Web服务器主函数,解析请求,返回Web内容
varfunWebSvr=function(req,res){
varresult="Hellonodejs";
res.writeHead(200,{"Content-Type":"text/html"});
res.write(result);
res.end();
}
//创建一个http服务器
varwebSvr=libHttp.createServer(funWebSvr);
//开始侦听8888端口
webSvr.listen(8888);
② 如何用nodejs搭建web服务器
使用Node.js搭建Web服务器是学习Node.js比较全面的入门教程,因为实现Web服务器需要用到几个比较重要的模块:http模块、文件系统、url解析模块、路径解析模块、以及301重定向技术等,下面我们就一起来学习如何搭建一个简单的Web服务器。
作为一个Web服务器应具备以下几个功能:
1、能显示以.html/.htm结尾的Web页面
2、能直接打开以.js/.css/.json/.text结尾的文件内容
3、显示图片资源
4、自动下载以.apk/.docx/.zip结尾的文件
5、形如http://xxx.com/a/b/ , 则查找b目录下是否有index.html,如果有就显示,如果没有就列出该目录下的所有文件及文件夹,并可以进一步访问。
6、形如http://xxx.com/a/b, 则作301重定向到http://xxx.com/a/b/ , 这样可以解决内部资源引用错位的问题。
引入需要用到的几个模块:
//http协议模块varhttp = require('http');//url解析模块varurl = require('url');//文件系统模块varfs = require("fs");//路径解析模块varpath = require("path");
创建服务并在指定的端口监听:
//创建一个服务varhttpServer = http.createServer(this.processRequest.bind(this));//在指定的端口监听服务httpServer.listen(port,function(){console.log("[HttpServer][Start]","runing at http://"+ip+":"+port+"/");console.timeEnd("[HttpServer][Start]");});
在创建服务的时候需要传递一个匿名函数processRequest 对请求进行处理,processRequest接收2个参数,分别是request和response, request对象中包含了请求的所有内容,response是用来设置响应头以及对客户端做出响应操作。
processRequest:function(request,response){varhasExt =true;varrequestUrl = request.url;varpathName = url.parse(requestUrl).pathname;//对请求的路径进行解码,防止中文乱码pathName = decodeURI(pathName);//如果路径中没有扩展名if(path.extname(pathName) ===''){//如果不是以/结尾的,加/并作301重定向if(pathName.charAt(pathName.length-1) !="/"){pathName +="/";varredirect ="http://"+request.headers.host + pathName;response.writeHead(301, {location:redirect});response.end();return;}//添加默认的访问页面,但这个页面不一定存在,后面会处理pathName +="index.html";hasExt =false;//标记默认页面是程序自动添加的}//获取资源文件的相对路径varfilePath = path.join("http/webroot",pathName);//获取对应文件的文档类型varcontentType =this.getContentType(filePath);//如果文件名存在fs.exists(filePath,function(exists){if(exists){response.writeHead(200, {"content-type":contentType});varstream = fs.createReadStream(filePath,{flags:"r",encoding:null});stream.on("error", function() {response.writeHead(500,{"content-type":"text/html"});response.end("<h1>500 Server Error</h1>");});//返回文件内容stream.pipe(response);}else{//文件名不存在的情况if(hasExt){//如果这个文件不是程序自动添加的,直接返回404response.writeHead(404, {"content-type":"text/html"});response.end("<h1>404 Not Found</h1>");}else{//如果文件是程序自动添加的且不存在,则表示用户希望访问的是该目录下的文件列表varhtml ="<head><meta charset='utf-8'></head>";try{//用户访问目录varfiledir = filePath.substring(0,filePath.lastIndexOf('\'));//获取用户访问路径下的文件列表varfiles = fs.readdirSync(filedir);//将访问路径下的所以文件一一列举出来,并添加超链接,以便用户进一步访问for(variinfiles){varfilename = files[i];html +="<div><a href='"+filename+"'>"+filename+"</a></div>";}}catch(e){html +="<h1>您访问的目录不存在</h1>"}response.writeHead(200, {"content-type":"text/html"});response.end(html);}}});}
请求处理函数中有几个重点需要说一下:
对于路径中有中文的,浏览器会自动进行编码(英文不变,中文会变),因此在接收到地址后,需要对地址进行解码,否则最后得到的路径和真实路径不相符,
当访问路径不是以具体的文件结尾,并且不是以/结尾,则需要通过重定向加上/,表示当前目录,否则当前路径下的静态资源会找不到
如果访问路径是目录,则列出该目录下所有文件及文件夹,并可以点击访问,为了让中文目录能正常显示,则还要在header中设置charset=utf-8
核心代码就这么多,大概140行左右,完整的代码已上传到github:https://github.com/git-onepixel/Node,
如果要运行demo,打开cmd切换到根目录,运行node start 即可。
③ 如何在node.js搭建服务器
准备
首先,需要安装nodejs,这个可以去官网下载,目前我本地安装的v0.12版本。
安装完成后可以通过命令行测试安装是否成功,输入:node -v,应该会显示当前安装node版本号。
本文中用到的模块,都是nodejs核心模块,不需要从外部下载,如果有需要,可以使用以下命令安装:npm install xxx。
开始
下一步,新建js文件,可以命名为server.js,代码如下:
var http = require('http');
var url = require('url');
var path = require('path');
var fs = require('fs');
var dir, arg = process.argv[2] || ''; // 命令行第三个参数,用来接收目录,可为空,相对当前server.js文件的目录名称
// 比如使用命令 node server debug,意思就是debug文件夹与server.js文件同级
// 且你想以debug文件夹启动web服务
http.createServer(function (req, res) {
var pathname = __dirname + url.parse(req.url).pathname;
dir = dir ? dir : pathname; // 记住dir(目录)
pathname = dir ? pathname.replace(dir, dir + arg + '/') : pathname; // 替换文件静态路径
if (path.extname(pathname) == "") {
pathname += "/";
}
if (pathname.charAt(pathname.length - 1) == "/") {
pathname += "index.html"; // 入口文件,此处默认index.html
}
fs.exists(pathname, function (exists) {
if (exists) {
switch (path.extname(pathname)) {
case ".html":
res.writeHead(200, {"Content-Type": "text/html"});
break;
case ".js":
res.writeHead(200, {"Content-Type": "text/javascript"});
break;
case ".css":
res.writeHead(200, {"Content-Type": "text/css"});
break;
case ".gif":
res.writeHead(200, {"Content-Type": "image/gif"});
break;
case ".jpg":
res.writeHead(200, {"Content-Type": "image/jpeg"});
break;
case ".png":
res.writeHead(200, {"Content-Type": "image/png"});
break;
default:
res.writeHead(200, {"Content-Type": "application/octet-stream"});
}
// res可以自己添加信息来简单交互 比如可以修改点header信息 或者修改返回的资源数据
fs.readFile(pathname, function (err, data) {
res.end(data);
});
}
else {
res.writeHead(404, {"Content-Type": "text/html"});
res.end("<h1>404 Not Found</h1>");
}
});
}).listen(8085, "127.0.0.5"); // 服务器端口
console.log("server running at http://127.0.0.5:8085/");
启动
当node安装完成及上述server.js文件也新建好之后。将其与你要访问的文件夹放在一起,可以放同层或者直接下层。比如,如果你要访问d:\test\debug文件夹。
你可以先将当前文件放入同层或者直接下,然后输入如下命令启动web服务:
先打开`cmd`,进入server文件所在目录,比如是`test`目录;
然后输入:`node server debug`(同层), 或者`node server`(子层),
此时会提示`server running at http://127.0.0.5:8085/`, 表示启动服务成功;
最后打开浏览器,进入:`127.0.0.5:8085`,即可访问此资源。
最后
简单解释下上面的代码。
首先最上面的require表示需要用到那几个模块,先引用一下;
arg表示输入的命令行的第三个参数,上面是做了手动截取;
createServer方法表示创建一个http服务,以函数为参数,本文代码中传入了一个匿名函数;
req,表示http request(请求)对象,其携带着来自客户端此次http请求的相关信息,例如请求method、请求query参数、请求header头信息等;
res,表示http response(返回)对象,用来给客户端返回请求资源用,可以手动添加信息,例如返回的数据、返回的头信息等、返回的code等;
fs,表示文件资源对象,具体可以访问nodejs官网的api;
path,表示资源路径对象,具体可以访问nodejs官网的api。
listen表示创建的服务监听,一旦访问了此端口,将进入此前的匿名函数回调中,将资源返回给客户端。
④ 服务器部署nodejs的几种方法
由于自身特性的原因。node程序必须保持开启才能访问网站,而当我们关闭SSH时这些进程都会被停止。有以下3种方法可以避免这个问题。
screen
Screen,虚拟终端管理器。可以在后台管理终端界面,防止SSH断开以后任务停止运行。
安装方法:
sudo apt-get screen(以ubuntu为例)
使用方法:
使用screen -S [任意id]命令进入一个名为id的终端,此时便可以随意执行操作
例如执行sudo apt-get upgrade,或者其它消耗时间比较长的工作,像编译内核等等。按ctrl+a后再按d保存虚拟终端,系统提示deatached即为保存成功
接下来可以断开SSH终端,虚拟终端仍会执行。访问已经创建好的终端
screen -ls列出已经创建的正在后台运行的终端
screen -r xxx进入终端
例如 screen -r terminal1彻底退出
screen -r进入终端后执行exit即可完全退出
PM2
pm2 是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着
安装方法
npm install -g pm2
使用方法
启动应用pm2 start -watch app.js
重启应用pm2 restart app.js
显示进程列表pm2 list
停止某应用pm2 stop app_name|app_id
停止所有应用pm2 stop all
小白方案
个人目前用的是宝塔linux面板,可以说是把Linux的各种操作都已比较简单的形式展现出来了,不需要什么Linux知识就能掌握宝塔官网了解一下
⑤ 如何在服务器上搭建nodejs
先确认下系统环境合不合要求
python -V(确认python版本大于2.6)
访问http://nodejs.org/download/下载需要的Node.js版本(wget
http://nodejs.org/dist/v0.10.26/node-v0.10.29.tar.gz )
解压 tar zxvf node-v0.10.26-linux-x64.tar.gz
进入目录 cd node-v0.10.26-linux-x64
./configure --prefix=/home/work/setups/node-v0.10.26
make
sudo make install
添加到系统环境 echo "export PATH=$PATH:/home/work/setups/node-v0.10.26/bin">>
~/.bash_profile
. ~/.bash_profile执行该文件更新$PATH变量
###安装Express
sudo npm install express
-gd g参数:把express安装到NodeJS的lib目录d参数:同时安装依赖模块包
sudo npm install forever -gd
(异常情况:
如果遇到npm 找不到的情况 确认sudo node -v是否找不到 找不到的话:需要added /usr/local/bin to secure_path in /etc/sudoers :
sudo visudo
把 Defaults secure_path =
/sbin:/bin:/usr/sbin:/usr/bin 这行 改为 Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin然后:x保存退出
如果遇到
npm ERR! Error: Hostname/IP doesn't match certificate's altnames
执行 npm config set strict-ssl false
如果遇到 npm ERR! registry error parsing json
npm cache clean
执行 npm config set registry http://registry.npmjs.eu/
)
###部署forever
$ npm install -g forever
启动
NODE_ENV=pro LANG='zh' /usr/local/bin/foreverstart-o
/home/work/log/node_out.log-e /home/work/log/node_err.log /home/work/webroot/index.js
NODE_ENV=pro 环境变量 pro为生产环境(程序中可以指定)
LANG 环境变量 指定默认语言
node_out.log 输出日志 注意路径别抄成我的了
node_err.log 错误日志
index.js 启动文件
⑥ 如何搭建nodejs服务器环境
1、node_moles只是放一些依赖包,具体数据库文件当然是放在mysql目录下了。
2、要在不开编辑器前提下,使系统可访问,你只要在控制台中定位到你系统的目录后,使用node命令来启动即可
⑦ 如何搭建node.js服务器环境 linux
一 打开centos,然后开始下载node.js包
curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
yum -y install nodejs
二 安装gcc环境
yum install gcc-c++ make
安装完成!
三 安装nodejs的npm,这是一个包程序工具,类似于vs里的nuget!
sudo yum install nodejs npm
到现在为止,我们的nodejs环境就算是安装成功,下面我们就可以开始node.js之路了!
下面添加环境变量(快捷方式,windows里的path指令)
//添加共享目录
export PATH=/usr/local/python/bin:/usr/local/node/bin:$PATH
//打印node的版本
node -v
添加测试项目并监听8080端口
#创建nodejs项目目录
mkdir -p /usr/local/nodejs/
#创建hello.js文件
vi /usr/local/nodejs/hello.js
内容如下:
var http = require("http");
http.createServer(function(request, response) {
response.writeHead(200, {
"Content-Type" : "text/plain"
});
response.write("Hello World");
response.end();
}).listen(8080); // 监听端口号
console.log("Hello World is print!");
#后台运行
node /usr/local/nodejs/hello.js &
#浏览器访问
http://192.168.2.2:8100/
直接访问浏览器即可!
⑧ 如何用命令行开启nodejs搭建web服务器
首先,需要安装nodejs,这个可以去官网下载,目前我本地安装的v0.12版本。
安装完成后可以通过命令行测试安装是否成功,输入:node -v,应该会显示当前安装node版本号。
本文中用到的模块,都是nodejs核心模块,不需要从外部下载,如果有需要,可以使用以下命令安装:npm install xxx。
开始
下一步,新建js文件,可以命名为server.js,代码如下:
var http = require('http');
var url = require('url');
var path = require('path');
var fs = require('fs');
var dir, arg = process.argv[2] || ''; // 命令行第三个参数,用来接收目录,可为空,相对当前server.js文件的目录名称
// 比如使用命令 node server debug,意思就是debug文件夹与server.js文件同级
// 且你想以debug文件夹启动web服务
http.createServer(function (req, res) {
var pathname = __dirname + url.parse(req.url).pathname;
⑨ 如何使用nodejs搭建服务器
方法/步骤
1如果电脑没有安装nodejs的同学可以先到node官方下载并安装好node程序。
安装好nodejs后验证一下是否安装成功!如果出现则表明node已经承装安装上去了!
2安装好node之后打开cmd 输入 npm install anywhere -g 安装anywhere ,然后等待直到出现以下界面。
3以上两个步骤都就绪以后,万事俱备,只欠东风啦!在cmd页面 找到你想搭建服务器的路径,然后再当前路径下输入: anywhere 8860
然后浏览器就自动打开本地访问网址,一个简单的node服务器就这样被我们搭建好啦!
http://jingyan..com/article/19020a0a02ff67529c28425f.html