当前位置:首页 » 云服务器 » 搭建nodejs服务器

搭建nodejs服务器

发布时间: 2022-05-24 20:00:09

① 如何搭建简单的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

热点内容
超内核源码 发布:2025-02-13 02:12:54 浏览:443
趣粉脚本 发布:2025-02-13 02:11:23 浏览:951
压缩的茶叶怎么弄开 发布:2025-02-13 02:11:16 浏览:738
n1ftp服务器 发布:2025-02-13 02:10:39 浏览:347
没有卡没有密码怎么办啊 发布:2025-02-13 01:51:53 浏览:460
linux2个ftp服务器 发布:2025-02-13 01:44:31 浏览:14
戴尔r730网络配置后如何保存 发布:2025-02-13 01:38:27 浏览:344
php用什么编译 发布:2025-02-13 01:37:12 浏览:703
手机缓存的文件路径是在哪 发布:2025-02-13 01:34:58 浏览:563
oppo手机密码哪里设置 发布:2025-02-13 01:30:38 浏览:683