大家好,如果您还对node搭建服务器不太了解,没有关系,今天就由本站为大家分享node搭建服务器的知识,包括如何用nodejs搭建web服务器的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

一、如何用命令行开启nodejs搭建web服务器

首先,需要安装nodejs,这个可以去官网,目前我本地安装的v0.12版本。

安装完成后可以通过命令行测试安装是否成功,输入:node-v,应该会显示当前安装node版本号。

本文中用到的模块,都是nodejs核心模块,不需要从外部,如果有需要,可以使用以下命令安装:npm install xxx。

开始

下一步,新建js文件,可以命名为server.js,代码如下:

var = require('');

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服务

.createServer(function(req, res){

var pathname= __dirname+ url.parse(req.url).pathname;

二、nodejs云服务器搭建(nodejs写服务器)

使用云服务器搭建专属*客

首先,推荐一个免费的云服务器提供商,三丰云,有了云服务器,我们使用帆模ssh连接云服务器。

下面我们进入构建*客的第一步:安装Git和NodeJs,网上一堆教程,这里就不在赘述了。

第二步,安装Hexo:

npminstall-ghexo

?初始化Hexo:

cd/work/Hexo

hexoinit

第团岩三步,获取*客塌轿御主题:

gitclohemes/even

参考:

怎么在阿里云服务器里使用nodejs环境

首次登录云服务器,要先进行用户设置。

用户设置

首先用passwd命令修改超级管理员root密码。

1

$passwd

根据提示连续输入两次密码,很简单吧。

接着,要新建一个普通的管理账号并设置密码,用于日常的系统管理。

1

2

$useradduser1

$passwduser1

将用户添加进管理组,以便于统一管理管理员的权限。

1

$usermod-a-Gwheeluser1

设穗野置新用户的sudo权限。

1

$visudo

执行visudo命令实际上编辑的是/etc/sudoers文件。找到rootALL=(ALL:ALL)ALL这行,并下面添加一行

1

user1ALL=(ALL:ALL)ALL

保存退出,以后就可用用sudo命令执行管理操作了。

修改主机名

每台服务器都有自己的名字,一般web服务器会用网站的域名来做主机名。[用户名@主机名~]$

1

2

$hostname""

$vi/etc/sysconfig/work

HOSTNAME=

保存,并退出编辑,下次等登入服务器就能看到修改的主机名字了。

SSH配置

将ssh的端口22改掉,另外,禁止root通过ssh登录服务器,并允许新建的普通管理员登录。

1

$vi/etc/ssh/sshd_config

找到#Port22,去掉#并将22修改为1025到65536之间的没被用到的端口号。找到下面一行,并去掉注释符。

1

#PermitRootLoginyes

在配誉搏置文件里添加

1

AllowUsersuser1

保存后,退出文件编辑。重启sshd

1

$servicesshdrestart

下次登录,就要用新设定的端口号登录了。

1

$sshuser1@ip-pport

挂载数据盘

为数据盘建立*分区和普通分区,并挂载到系统。首先查看查看数据盘

1

$fdisk-l

确认数据盘为/dev/xvdb接着,对数据盘进行分区操作,

1

$fdisk-S56/dev/xvdb

输入m可以查看帮助。这里键入n新建第一个扩展分区,接着输入p建立立基本分区,输入要建立的分区号1,起始簇保持默认,结束簇的位置输入+2G(一般扩展分区的大小为内存的两倍)。然后,重复上面的步骤,将剩下的分为数据盘,注意庆族祥第二个分区的分区号为2。

格式化分区

1

2

$mkswap/dev/xvdb1

$mkfs.ext4/dev/xvdb2

启用swap分区

1

$swapon/dev/xvdb1

将数据盘的第二个分区,挂载到新建的/data目录。

1

$mkdir/data

修改fstab文件,保证重启系统后自动挂载。

1

$vi/etc/fstab

添加

1

2

/dev/xvdb1swapswapdefaults00

/dev/xvdb2/dataext4defaults00

保存文件,并退出编辑,下次启动系统就能自动挂载数据盘了。

执行挂载命令,可以立即看到挂载的硬盘。

1

$mount-a

软件安装NginxMongoNode

我习惯于多个node进程共享80端口,用nginx反向代理到不同的node服务上去。安装nginx。新建yum仓库配置文件。

1

$vi/etc/yum.repos.d/nginx.repo

内容如下:

1

2

3

4

5

[nginx]

name=nginxrepo

baseurl=

gpgcheck=0

enabled=1

保存文件,并退出编辑。

执行.

1

$yuminstallnginx

安装mongodb

1

$vi/etc/yum.repos.d/mongodb.repo

文件内容

1

2

3

4

5

[mongodb]

name=MongoDBRepository

baseurl=

gpgcheck=0

enabled=1

保存文件,并退出编辑。

执行

1

$yuminstallmongodb-

安装Node和NPM

1

$sudoyuminstallnodejsnpm

至此,服务器环境就搭建好了。

如何在服务器上搭建nodejs

先确认下系统环境合不合要求

Python-V(确认python版本大于2.6)

访问需要的Node.js版本(wget

解压tarzxvfnode-v0.10.26-linux-x64.tar.gz

进入目录cdnode-v0.10.26-linux-x64

./configure--prefix=/home/work/setups/node-v0.10.26

make

sudomakeinstall

添加到系键知迅统环境echo"exportPATH=$PATH:/home/work/setups/node-v0.10.26/bin"猛没

~/.bash_profile

.~/.bash_profile执行该文件更新$PATH变量

###安装Express

sudonpminstallexpress

-gdg参数:把express安装到NodeJS的lib目录d参数:同时安装依赖模块包

sudonpminstallforever-gd

(异常情况:

如果遇到npm找不到的情况确认sudonode-v是否找不到找不到的话:需要added/usr/local/bintosecure_pathin/etc/sudoers:

sudovisudo

把Defaultssecure_path=

/sbin:/bin:/usr/sbin:/usr/bin这行改为Defaultssecure_path=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin然后:x保存退出

如果遇到

npmERR!Error:Hostname/IPdoesn'tmatchcertificate'saltnames

执稿此行npmconfigsetstrict-sslfalse

如果遇到npmERR!registryerrorparsingjson

npmcacheclean

执行npmconfigsetregistry

)

###部署forever

$npminstall-gforever

启动

NODE_ENV=proLANG='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搭建web服务器?

首先,需要安装nodejs,这个可以去官网,目前我本地安装的v0.12版本。

安装完成后可以通过命令行测试安装是否成功,输入:node-v,应该会显示当前安装node版本号。

本文中用到的模块,都是nodejs核心模块,不需要从外部,如果有需要,可以使用以下命令安装:npminstallxxx。

开始

下一步,新建js文件,可以命名为server.js,代码如下:

var=require('');

varurl=require('url');

varpath=require('path');

varfs=require('fs');

vardir,arg=process.argv[2]||'';//命芦裂袭令行第三个参数,用来接收目录,可为空,相对当前server.js文件的目录名称

//比如使用命令nodeserverdebug,意思就是debug文件夹与server.js文件同级

//且你想以debug文件夹启动web服务

.createServer(function(req,res){

varpathname=__dirname+url.parse(req.url).pathname;

[linux运维]?1、最新node.js二进制源码安装包(29MB),V8.2.1更新于2017年7月20日?

wget?-c?

wget是一个Linux文件的工具,centos自带。

wget?-c?是断点续传方式,后面的URL就是提供文件的

默认获取的文件在/root目录下,命令pwd显示当前目录源带.

??2、安装必要的编译软件?吖米yum?install?g?g-c++?yum?=?Yellow?dog?Updater,?Modified。改良黄狗更新器,centos自带智能包管理器。?中途询问,输入y:在线安装?d:只不安装?N:不不安装

Is?this?ok?[y/d/N]?:y

??3、解压源码tar?-zxvf?node-v8.2.1.tar.gz当前目录/root/就会多一个node-v8.2.1的文件夹-z:透过gzip的支持进行压缩/解压缩:此时文件名最好为*.tar.gz-x:解压缩的功能-v:在压缩/解压缩的过程中,将正在处理文件名显示出来

f?filename:-f后面要立刻接被处理的文件名.

??4、编译node源码包?1)进入到node源码包解压目录?cd?node-v8.2.1指定NodeJS安装位置./configure?--prefix=/usr/local/node?不指定prefix,则可执行文件默认放在/usr?/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc。其它的资源文件放在/usr?/local/share。你要卸载这个程序,要么在原来的make目录下用一次make?uninstall(前提是make文件指定过uninstall),要么去上述目录里面把相关的文件一个个手工删掉。?执行安装文件,足足等了40多分钟

make??make?install

??4、添加环境变量???创建并打开新文件?不存在node.sh文件?[root@localhost?node-v8.1.3]#?vim?/etc/profile.d/node.sh??输入node安装位置的bin目录所在位置?export?PATH=$PATH:/usr/local/node/binESC?输入:wq?提示:?命令输入错了vim-bash:?rt:?mand?not?found-bash:?vim:?mand?not?found[解决]i.?那么如何安装?vim?呢?输入rpm?-qa|grep?vim?命令,?陪兄如果?vim?已经正确安装,会返回下面的三行代码:root@server1?[~]#?rpm?-qa|grep?vimvim-enhanced-7.0.109-7.el5vim-minimal-7.0.109-7.el5vim-mon-7.0.109-7.el5?如果少了其中的某一条,比如?vim-enhanced?的,就用命令?yum?-y?install?vim-enhanced?来安装:yum?-y?install?vim-enhanced?如果上面的三条一条都没有返回,?可以用?yum?-y?install?vim*?命令yum?-y?install?vim*

??使用su?root?source?/etc/profile.d/node.sh?=.?/etc/profile.d/node.sh?[不间断运行nodejs服务]?npm?install?forever?-g?forever?start?.js

nodejs搭建web服务器就是这么简单!

Node.js是一个基于ChromeV8引擎的J*aScript运行环境。Node.js使用了一个事件驱动、非阻塞式I/O的模型,使其轻量又高效。Node.js的包管理器npm,是全球最大的开源库生态系统。(nodejs官网上的介绍),正如官网上介绍的那样,nodejs确实很牛!怎么个牛法?看看下面的代码就知道了。

//引入模块

var=require("");

//设置主机名

varhostName='127.0.0.1';

//设置端口

varport=8080;

//创建服务

varserver=.createServer(function(req,res){

res.setHeader('Content-Type','text/plain');

res.end("hellonodejs");

});

server.listen(port,hostName,function(){

console.log(`服务器运行在{hostName}:${port}`);

});

短短几行代码就把一个简单的web服务器搭建完成了,为了验证效果,我们在浏览器请求,结果如下

运行成功!

到此为止,一个web服务器就建立成功了!没错就是这么简单,然后我们就可以写个html界桥散面愉快的玩耍了,哈哈哈!果断的写了一个html页面来请求一下我们的web服务器。

代码简单,p获取数据并将服务器返回的数据展示。好了,我们运行一下demo.html文件,我擦来!居然出现了……

很明显,通过jquery请求不到数据,这是因为跨域请求的原因。我们的web服务器并不支持跨域请求,所以报错了。解决方式:在服务器的响应头文件里加上如下代码:

再次重启服务器,运行demo.html,显示结果很是令人欣喜!

通常请求服务器都会拼接参数的,最常用的就是get请求,post请求。很明显,我们现在的代码还不能支持。express框架很好的封装了nodejs的模块,使我们用起来非常的简单。

node搭建服务器 如何用nodejs搭建web服务器

引入express:$pminstallexpress–s*e

使用方式变化不大,通过express()方法开启服务,然后在通过get方法来设置匹配参数的路由,通过在回调函数的req中可以获取请求参数和。post请求也是类似,不过有不同的是,post请求在获取参数的时候要引入body-parser中间件,用于处理JSON,Raw,Text和URL编码的数据。

运行结果:

完整的get以及post请求就是以上了。下一篇文章会结果fs文件敏雀氏模块介绍是如何返回文件的,敬请期待!!

学习从来不是一个人的事情,要有个相互监督的伙伴,想要学习或交流前端问题的小伙伴可以私信“学习”小明加群获取2019web前端最新入门资料,一岁亮起学习,一起成长!

三、如何用nodejs搭建web服务器

使用Node.js搭建Web服务器是学习Node.js比较全面的入门教程,因为实现Web服务器需要用到几个比较重要的模块:模块、文件系统、url解析模块、路径解析模块、以及301重定向技术等,下面我们就一起来学习如何搭建一个简单的Web服务器。

作为一个Web服务器应具备以下几个功能:

1、能显示以.html/.htm结尾的Web页面

2、能打开以.js/.css/.json/.text结尾的文件内容

3、显示图片资源

4、自动以.apk/.docx/.zip结尾的文件

5、形如,则查找b目录下是否有index.html,如果有就显示,如果没有就列出该目录下的所有文件及文件夹,并可以进一步访问。

6、形如,则作301重定向到,这样可以解决内部资源引用错位的问题。

引入需要用到的几个模块:

//协议模块var= require('');//url解析模块varurl= require('url');//文件系统模块varfs= require("fs");//路径解析模块varpath= require("path");

创建服务并在指定的端口监听:

//创建一个服务varServer= .createServer(this.processRequest.bind(this));//在指定的端口监听服务Server.listen(port,function(){console.log("[HttpServer][Start]","runing at );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="://"+request.headers.host+ pathName;response.writeHead(301,{location:redirect});response.end();return;}//添加默认的访问页面,但这个页面不一定存在,后面会处理pathName+="index.html";hasExt=false;//标记默认页面是程序自动添加的}//获取资源文件的相对路径varfilePath= path.join("/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:,

如果要运行demo,打开cmd切换到根目录,运行node start即可。