无法连接到本地服务器中用Nodejs问题,怎么解决
搭建nodejs服务器步骤:
1安装nodejs服务(从官网下载安装),node相当于apache服务器
2在自己定义的目录下新建服务器文件如 serverjs
例如,我在E:\PhpProject\html5\websocket下创建了serverjs文件
var http = require('http');//引入http模块//开启服务,监听8888端口//端口号最好为6000以上var server = httpcreateServer(function(req,res){
/
req用来接受客户端数据
res用来向客户端发送服务器数据
/
consolelog('有客户端连接');//创建连接成功显示在后台
//一参是http请求状态,200连接成功
//连接成功后向客户端写入头信息
reswriteHeader(200,{ 'content-type' : 'text/html;charset="utf-8"'
});
reswrite('这是正文部分');//显示给客户端
resend();
})listen(8888);
consolelog('服务器开启成功');123456789101112131415161718192021222324
3在cmd控制台中cd切换进serverjs所在的目录,然后执行node serverjs命令
当控制台显示”服务器开启成功”则说明node服务器已经建立
4在浏览器中访问服务器
在浏览器中输入
localhost:8888 , 浏览器显示“这是正文部分”。
查看cmd控制台,显示 “有客户端连接”
可在多个浏览器窗口中进行以上操作,每个浏览器窗口均会对应一次“有客户端连接”
以上步骤完成,node服务搭建完毕。下面是如何通过搭建的node服务访问本地站点的 text/html文本文件
访问本地站点文件
1在自定义的目录下创建node服务文件server2js
var http = require('http');var fs = require('fs');//引入文件读取模块var documentRoot = 'E:/PhpProject/html5/websocket/www';//需要访问的文件的存放目录var server= httpcreateServer(function(req,res){
var url = requrl;
//客户端输入的url,例如如果输入localhost:8888/indexhtml
//那么这里的url == /indexhtml
var file = documentRoot + url;
consolelog(url); //E:/PhpProject/html5/websocket/www/indexhtml
fsreadFile( file , function(err,data){
/
一参为文件路径
二参为回调函数
回调函数的一参为读取错误返回的信息,返回空就没有错误
二参为读取成功返回的文本内容
/
if(err){
reswriteHeader(404,{ 'content-type' : 'text/html;charset="utf-8"'
});
reswrite('<h1>404错误</h1><p>你要找的页面不存在</p>');
resend();
}else{
reswriteHeader(200,{ 'content-type' : 'text/html;charset="utf-8"'
});
reswrite(data);//将indexhtml显示在客户端
resend();
}
});
})listen(8888);
consolelog('服务器开启成功');12345678910111213141516171819202122232425262728293031323334353637383940414243444546
2创建indexhtml文件
如果要访问indexhtml文件,当然你得先有这个文件,不然服务器读取失败,返回40412
3在cmd控制台cd切换到 server2js的目录下执行node server2js命令
开启服务器
4在浏览器输入localhost:8888/indexhtml访问 该文件
如果要直接在 命令提示符里面直接 执行 nodejs 命令 需要配环境变量
计算机>属性>高级系统设置>属性》>环境变量
在administrators 的用户变量 添加 PATH=D:\nodejs 变量值 是你nodejs 的安装路径 ,如果已经存在变量名PATH 直接加在原来变量值的后面 一分后隔开
在系统变量名 下 添加变量名 NODE_PATH=D:\nodejs\node_modules
在你的任意目录输入命令: npm install pm2 -g
1找到全局环境PATH路径
输入命令: echo $PATH
回车后: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
你的路径和我的可能不一样,但没关系,你可以选择任何一个以:隔开的路径做为系统环境路径,我通常会选 /usr/local/bin
2:找到pm2的安装路径
在上面输入 npm install pm2 -g 全局安装时
/usr/sbin/nodejs/bin/pm2 -> /usr/sbin/nodejs/lib/node_modules/pm2/bin/pm2
/usr/sbin/nodejs/bin/pm2 是安装路径(你的可能和我的不一样)
3好了都找到了,
就重要的一步要开始了,睁大你的双眼。
命令为: ln -s /usr/sbin/nodejs/bin/pm2 /usr/local/bin/ (注意空格)
格式: ln -s 空格 pm2安装路径 空格 系统环境路径
OK,搞定,接下来验证一把…
[root@iZmwyb7v60px1zZ ~]# pm2 list
回车
$ pm2 start appjs # 启动appjs应用程序
$ pm2 start appjs –name=”api” # 启动应用程序并命名为 “api”
$ pm2 start appjs –watch # 当文件变化时自动重启应用
$ pm2 start scriptsh # 启动 bash 脚本
$ pm2 list # 列表 PM2 启动的所有的应用程序
$ pm2 monit # 显示每个应用程序的CPU和内存占用情况
$ pm2 show [app-name] # 显示应用程序的所有信息
$ pm2 logs # 显示所有应用程序的日志
$ pm2 logs [app-name] # 显示指定应用程序的日志
$ pm2 stop all # 停止所有的应用程序
$ pm2 stop 0 # 停止 id为 0的指定应用程序
$ pm2 restart all # 重启所有应用
$ pm2 reload all # 重启 cluster mode下的所有应用
$ pm2 gracefulReload all # Graceful reload all apps in cluster mode
$ pm2 delete all # 关闭并删除所有应用
$ pm2 delete 0 # 删除指定应用 id 0
$ pm2 scale api 10 # 把名字叫api的应用扩展到10个实例
$ pm2 reset [app-name] # 重置重启数量
$ pm2 startup # 创建开机自启动命令
$ pm2 save # 保存当前应用列表
$ pm2 resurrect # 重新加载保存的应用列表
$ pm2 update # Save processes, kill PM2 and restore processes
$ pm2 generate # Generate a sample json configuration file
nodejs 是有windows实现版本的,请到它的官网nodeorg下载。有两种 exe和msi都可以使用。下载后安装和正常软件安装一样。使用方法:
在开始菜单打开,选择 Nodejs command prompt ,它自动帮你加入了环境变量,直接可以使用 node 和npm命令。
node命令: node (空格)js程序,请用绝对地址。其他参数可以用node -h查看,有详细的解释
npm命令:npm是node安装第三方模块的命令,使用非常简单npm install 模块名即可。其他参数可以可以使用npm -h 查看
这里npm的模块都必须在npmorg上注册使用。
另外在提供一个中文社区 cnodejsorg不错的中文社区。也提供中文文档。
还有一点关于平台选择,其实并不是linux好,node的核心事件驱动机制在linux使用的是模拟的libev+libeio库模拟的,而windows则本身就提供了系统调用,性能据测试过的人数据是windows占大优势的。当然这并不影响你在windows和linux使用nodejs,他是完全跨平台的!
顺带提供一个新手快速入门:
1、新建一个文件,命名为 firstjs
2、文件里面写入:
1
2
3
4
5
6
7
var http = require('http');
httpcreateServer(function (request, response) {
responsewriteHead(200, {'Content-Type': 'text/plain'});
responseend('Hello World\n');})listen(8124);
consolelog('Server running at localhost');
3、在命令狂输入 运行后,在“小黑框”会显示:Server running at localhost,这时候在输入localhost:8124 即可显示Hello World。这样就搭建起一个简单的web服务器了。
去网上下载nodemsi安装文件包,里面包含了nodejs和npm;
双击nodemsi就行了,选择安装路径和npm;
在node的安装的根目录,也就是nodejs文件夹下新建两个名字为node_cache、node_global文件夹
设置环境变量:变量名:NODE_PATH
值:D:\Program Files\nodejs\node_global\node_modules
注意:因为我是把nodejs安装在D:\Program Files\目录下,所以环境变量就这样设置的;
随便找个项目文件夹,再里面新建一个service文件夹
注意:此路径不能有中文
再在里面新建一个UTF-8编码的js文件、文件名字随便起、我的文件叫testjs
在js文件里面增加入下代码
启动nodejs服务,window键+R,输入cmd然后回车
在黑窗口中输入node G:\nodejs\service\testjs
注意:结尾不用加分号;
使用Nodejs搭建Web服务器是学习Nodejs比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块、文件系统、url解析模块、路径解析模块、以及301重定向问题,下面我们就简单讲一下如何来搭建一个简单的Web服务器。
作为一个Web服务器应具备以下几个功能:
1、能显示以html/htm结尾的Web页面
2、能直接打开以js/css/json/text结尾的文件内容
3、显示资源
4、自动下载以apk/docx/zip结尾的文件
5、形如http://xxxcom/a/b/ , 则查找b目录下是否有indexhtml,如果有就显示,如果没有就列出该目录下的所有文件及文件夹,并可以进一步访问。
6、形如http://xxxcom/a/b, 则作301重定向到http://xxxcom/a/b/ , 这样可以解决内部资源引用错位的问题。
引入需要用到的几个模块:
创建服务并在指定的端口监听:
在创建服务的时候需要传递一个匿名函数processRequest 对请求进行处理,processRequest接收2个参数,分别是request和response, request对象中包含了请求的所有内容,request是用来设置响应头以及对客户端做出响应操作。
请求处理函数中有几个重点需要说一下:
对于路径中有中文的,浏览器会自动进行编码(英文不变,中文会变),因此在接收到地址后,需要对地址进行解码,否则最后得到的路径和真实路径不相符,
当访问路径不是以具体的文件结尾,并且不是以/结尾,则需要通过重定向加上/,表示当前目录,否则当前路径下的静态资源会找不到
如果访问路径是目录,则列出该目录下所有文件及文件夹,并可以点击访问,为了让中文目录能正常显示,则还要在header中设置charset=utf-8
核心代码就这么多,大概140行左右,完整的代码已上传到Git:https://githubcom/git-onepixel/Node
如果要运行demo,打开cmd切换到根目录,运行node start即可。
NPM start 需要在packagejson中定义,运行命令需要在nodejs环境下运行。
E:\workSpace\nodejs\helloworld>npm start
> helloworld@000 start E:\workSpace\nodejs\helloworld
> node /bin/www
GET / 304 564566 ms - -
GET /stylesheets/stylecss 304 2819 ms - -
如何利用NPM包管理工具中的命令操作:
1、第一步,查看npm有关的命令,可以使用npm h,如下图所示:
2、第二步,查看对包的控制权限,可以使用npm access,如下图所示:
3、第三步,如果添加用户相关信息,可以使用npm add-user,如下图所示:
4、第四步,查看api帮助文档,使用命令npm apihelp,如下图所示:
5、第五步,查看作者或创建人,使用npm author命令,如下图所示:
6、第六步,查看npm安装的可执行文件路径,使用npm bin命令,如下图所示:
0条评论