怎么用nodejs搭建http服务器
1Nodejs安装包及源码下载地址为:https://nodejsorg/en/download/
Git下载地址为:https://git-scmcom/download/win。
2按照安装提示操作即可,选择安装路径、npm。
3环境变量默认C:\Users\Administrator\AppData\Roaming\npm\node_modules。
创建新的变量
创建方法:我的电脑>属性》高级系统设置》环境变量》,创建名NODE_PATH,值为nodejs的当前安装目录。
命令行工具是运行在当前计算机用户下的,所以开头总是C:/Users/XXX/Desktop>,而不会跟你的nodejs安装的位置有关。
安装node后,在cmd里有两种模式,开发模式和命令行模式,要进入开发模式直接输入node回车即可,此时可以输入代码,比如require ("express"),如果直接在命令行模式下输入require类的语句是会报错的,提示'require'不是内部或外部命令,也不是可运行的程序或批处理文件。从开发模式退出可用exit命令也可以用快捷捷,ctrl+D或两次ctrl+C
4创建应用
我们先创建一个项目目录,目录可自己定义,本案例的目录为 e:/node/serve。
由于我们要搭建的是服务器,所以我把第一个文件命名为serverjs。
在serverjs里面输入以下代码:
const http = require('http');//实例化“http”
const hostname = '127001';
const port = 3000;
const server = httpcreateServer((req, res) => {
resstatusCode = 200; //状态值200:OK
ressetHeader('Content-Type', 'text/plain'); //内容类型:text/plain
resend('Hello World\n'); //响应结果“hello world”
});
serverlisten(port, hostname, () => { //实现监听
consolelog(`Server running at http://${hostname}:${port}/`);
});
5应用执行
打开git命令行,输入cd e:/node/serve/
之后输入node servicejs
停止方法:
1首先,不能共享完毕之后,都通过Ctrl+C来关闭NodeJS服务器。
2其次,如果仅仅能向客户端提供d:\ilinkit_logopng文件的下载,是没有意义的,共享哪个文件,应该可以通过传入的参数来指定。我们首先来实现退出功能,如果客户端向服务器提交了http://localhost:8000/exit的请求,我们就执行服务器的退出操作。
代码如下:
1 var http = require( 'http' );
2 var fs = require('fs');
3 var url = require( 'url' );
4 (空行)
5 var file_path = "D:\\ilinkit_logopng" ;
6 var file_stream ;
7 var buffer_box = [] ;
8 var file_length = 0 ;
9 (空行)
10 var file_name = file_pathsubstr( file_pathlastIndexOf('\\')+1 );
关键的代码解析如下:
第33行,我们通过request对象获取客户端请求的主机及端口内容。
第46行~第50行,我们判断客户端提交的请求信息,如果是http://localhost:8000/exit,则调用serverclose()关闭服务器。为什么要判断是不是localhost提交的请求?因为我们希望仅仅在服务器本地提交的请求才能关闭NodeJS服务器。
验证方式如下:
1 启动服务器:打开命令行,进入js脚本所在的位置,执行:node h_ilinkit_1js。
2 打开浏览器,输入:http://localhost:8000,显示如下:
说明当前服务器启动正常。
3 打开浏览器,输入:http://localhost:8000/exit。
提示NodeJS服务器已经关闭,我们把浏览器关闭之后,发现服务器已经正常退出,如下所示。
这样,我们就没必要每次为了退出服务器,都去按Ctrl + C了。
使用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即可。
一,相同点
1,都调用了createServer方法。
2,当客户端接入时都会执行一个回调函数。
二,不同之处
1,回调函数的中对象的类型。net服务器中,是个连接(connect)对象,而在HTTP服务器中,则是请求和响应对象。
2,原因:
1,http服务器是更高层的API,提供了控制和HTTP协议相关的一些功能。
2,浏览器在访问站点时不会只用一个连接,很多主流的浏览器为了更快的加载网站内容,能够像同一个主机打开八个不同的连接,并发送请求。Node为了不让我们担心是请求还是连接,为我们提供了请求和响应的抽象。因此,即使你能通过reqconnection属性获得TCP连接对象,但大多数情况下你还是在与请求和响应的抽象打交道。
1安装nodejs服务(从官网下载安装),node相当于apache服务器
2在自己定义的目录下新建服务器文件如 serverjs
例如,我在E:\PhpProject\html5\websocket下创建了serverjs文件
var http = require('http');//引入http模块
//开启服务,监听8888端口
//端口号最好为6000以上
var server = httpcreateServer(function(req,res){
consolelog('有客户端连接');//创建连接成功显示在后台
node服务器开机自启动
是指要开机自动执行node appjs吗?
那就需要把它注册一个windows service,然后设置这个服务为开机自动启动。
方法1 直接使用nssm工具,或者它的nodejs包装程序Winser。
方法2 直接使用nodejs程序,如windows-service或者node-windows。
目前网上已有 pm2-zabbix 工具可以实现Zabbix对Node/greatcare/pm2-zabbixgit 3Zabbix Web管理后台导入模板文件 pm2-zabbix/install/zabbix-server/pm2-zabbixtemplatexml 4Nodejs服务器添加服务,根据服务器操作系统版本选择,并修改服务运行用户和使用PM2启动的Nodejs用户一致 RHEL/CentOS 7系列: cp pm2-zabbix/install/init/systemd/pm2-zabbixservice /usr/lib/systemd/system/ 修改目标文件 pm2-zabbixservice 文件内容 User项: User=root RHEL/CentOS 6或5系列: cp pm2-zabbix/install/init/sysv/pm2-zabbix /etc/initd/ 修改目标文件 pm2-zabbix 文件内容 DAEMON_USER项: DAEMON_USER=root 5新建软连接,根据自己服务器修改软连接指向的真实文件路径 mkdir -p /etc/zabbix ln -s /App/zabbix/etc/zabbix_agentdconf /etc/zabbix/zabbix_agentdconf ln -s /App/zabbix/bin/zabbix_sender /usr/bin/zabbix_sender ln -s `which node` /usr/bin/node ln -s `which pm2-zabbix` /usr/local/bin/pm2-zabbix 6启动 pm2-zabbix 服务 RHEL/CentOS 7系列: systemctl start pm2-zabbix RHEL/CentOS 6或5系列: service start pm2-zabbix 7修改Zabbix Agent配置文件 zabbix_agentdconf,添加包含其它配置 Include=/App/zabbix/etc/zabbix_agentdconfd/conf 8拷贝Zabbix Agent配置 cp pm2-zabbix/install/zabbix-agent/pm2-zabbixconf /App/zabbix/etc/zabbix_agentdconfd/pm2conf 9修改配置 pm2conf 内容 sudo -u 用户和第4步一致,同事修改 pm2-zabbix 路径 UserParameter=pm2processes,sudo -u root /usr/local/bin/pm2-zabbix --discover 10服务器终端执行程序 visudo 添加sudo配置 zabbix ALL=(ALL:ALL) NOPASSWD: /usr/local/bin/pm2-zabbix Defaults:zabbix !requiretty 11重启Nodejs服务器Zabbix Agent服务 /etc/initd/zabbix_agentd restart 12Zabbix Web管理后台设置Nodejs服务器添加链接 Template App PM2 模板 PM2守护进程CPU使用率 PM2守护进程内存占用 PM2管理的Node进程实例CPU使用率 PM2管理的Node进程实例内存占用 以上所述是小编给大家介绍的Zabbix添加Nodejs监控的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
0条评论