zoukankan      html  css  js  c++  java
  • 在腾讯云(windows)上搭建node.js服务器

    1:安装Node.js

    使用MSI文件,并按照提示安装node.js,默认情况下,安装程序将 Node.js 发行到 C:Program Files odejs. 但这里我们需要修改安装路径到:D:yiibai_worksp odejs,并将 D:yiibai_worksp odejs 目录添加到Window系统的PATH环境变量中。重新启动打开命令提示符,以使更改生效。

    第一步:双击下载的  “node-v0.12.7-x64.msi" 文件,出现提示安装界面:

    第二步:选择安装目录,这里安装在目录 D:yiibai_worksp odejs 中,如下图:

    第三步:选择安装的模块和功能,这里全部安装,并添加到系统环境变量,如下图所示:

    最后一步:安装完成!

    验证安装:执行文件

    创建一个js文件名为test.js 在 D:>yiibai_worksp odejs.

    File: test.js

    console.log("Hello World")

    现在运行test.js看到的结果:

    D:yiibai_worksp
    odejs> node test.js
    

    验证输出结果:

    [小贴士]①:腾讯云系统默认文件后缀名是隐藏的,导致test.js可能实际上是test.js.txt;注意改掉,很关键!

        ②一些基本的Shell操作:1:cd..回退 2:cd hehe进入文件夹 3:node xx.js 启动文件

    ②搭建HTTP服务

    下面是个http.js文件,node这个文件就可以启动监听

      1 // 这是一个简单的Node HTTP服务器,能处理当前目录的文件
      2 // 并能实现两种特殊的URL用于测试
      3 // 用HTTP://localhost:8000或http://127.0.0.1:8000连接这个服务器
      4 
      5 // 首先加载所有需要用到的模块
      6 var http = require('http');        // Http服务器API
      7 var fs = require('fs');            // 用于处理本地文件
      8 var server = new http.Server();    // 创建新的HTTP服务器
      9 server.listen(8000);            // 监听端口8000
     10 
     11 // 使用on方法注册时间处理
     12 server.on('request', function(request, response) { // 当有request请求的时候触发处理函数
     13     console.log('request');
     14     // 解析请求的URL
     15     var url = require('url').parse(request.url);
     16     // 特殊URL会让服务器在发送响应前先等待
     17     switch(url.pathname) {    
     18     case ''||'/' : // 模拟欢迎页,nodejs是高效流处理的方案,也可以通过配置文件来配置
     19         fs.readFile('./index.html', function(err, content){
     20             if(err) {
     21                 response.writeHead(404, { 'Content-Type':'text/plain; charset="UTF-8"' });
     22                 response.write(err.message);
     23                 response.end();
     24             } else {
     25                 response.writeHead(200, { 'Content-Type' : 'text/html; charset=UTF-8' });
     26                 response.write(content);
     27                 response.end();
     28             }
     29         });
     30         break;
     31     case '/test/delay':// 此处用于模拟缓慢的网络连接
     32         // 使用查询字符串来获取延迟时长,或者2000毫秒
     33         var delay = parseInt(url.query) || 2000;
     34         // 设置响应状态和头
     35         response.writeHead(200, {'Content-type':'text/plain; charset=UTF-8'});
     36         // 立即开始编写响应主体
     37         response.write('Sleeping for' + delay + ' milliseconds...');
     38         // 在之后调用的另一个函数中完成响应
     39         setTimeout(function(){
     40             response.write('done.');
     41             response.end();
     42         }, delay);
     43         break;
     44     case '/test/mirror':// 如果请求是test/mirror,则原文返回它
     45         // 响应状态和头
     46         response.writeHead(200, {'Content-type':'text/plain; charset=UTF-8'});
     47         // 用请求的内容开始编写响应主体
     48         response.write(request.mothod + ' ' + request.url + ' HTTP/' + request.httpVersion + '
    ');
     49         // 所有的请求头
     50         for (var h in request.headers) {
     51             response.write(h + ':' + request.headers[h] + '
    ');
     52         }
     53         response.write('
    ');// 使用额外的空白行来结束头
     54         // 在这些事件处理程序函数中完成响应
     55         // 当请求主体的数据块完成时,把其写入响应中
     56         request.on('data', function(chunk) { response.write(chunk); });
     57         // 当请求结束时,响应也完成
     58         request.on('end', function(chunk){ response.end(); });
     59         break;
     60     case '/json' : // 模拟JSON数据返回
     61         // 响应状态和头
     62         response.writeHead(200, {'Content-type':'application/json; charset=UTF-8'});
     63         response.write(JSON.stringify({test:'success'}));
     64         response.end();
     65         break;
     66     default:// 处理来自本地目录的文件
     67         var filename = url.pathname.substring(1);    // 去掉前导'/'
     68         var type = getType(filename.substring(filename.lastIndexOf('.')+1));
     69         // 异步读取文件,并将内容作为单独的数据模块传给回调函数
     70         // 对于确实很大的文件,使用流API fs.createReadStream()更好
     71         fs.readFile(filename, function(err, content){
     72             if(err) {
     73                 response.writeHead(404, { 'Content-Type':'text/plain; charset="UTF-8"' });
     74                 response.write(err.message);
     75                 response.end();
     76             } else {
     77                 response.writeHead(200, { 'Content-Type' : type });
     78                 response.write(content);
     79                 response.end();
     80             }
     81         });
     82         break;
     83     } 
     84     
     85 });
     86 function getType(endTag){
     87     var type=null;
     88     switch(endTag){
     89     case 'html' :
     90     case 'htm' :
     91         type = 'text/html; charset=UTF-8';
     92         break;
     93     case 'js' : 
     94         type = 'application/javascript; charset="UTF-8"';
     95         break;
     96     case 'css' :
     97         type = 'text/css; charset="UTF-8"';
     98         break;
     99     case 'txt' :
    100         type = 'text/plain; charset="UTF-8"';
    101         break;
    102     case 'manifest' :
    103         type = 'text/cache-manifest; charset="UTF-8"';
    104         break;
    105     default :
    106         type = 'application/octet-stream';
    107         break;
    108     }
    109     return type;
    110 }

    ③域名解析和IP绑定---腾讯云好像会自己绑好,但是域名实名认证后才可以生效。我这个认证了半个月- -

    ④以上步骤做完之后服务器就搭建完成了,监视的端口是8000,比如你的域名是www.hehe.com,那么你需要访问www.hehe.com:8000就可以访问到自己的内容了

  • 相关阅读:
    Ackerman 函数奇怪的函数
    HDU2871 Memory Control 线段树区间合并
    HDU3667 Hotel 线段树 经典空间合并
    图论
    HDU3016 Man Down 线段树
    HDU1878 欧拉回路 判定是否存在欧拉回路
    从今开始
    如何打开注册表编辑器
    ASP.NET中TextBox控件设置ReadOnly="true"后台取不到值
    学习笔记(2011年5月到9月)
  • 原文地址:https://www.cnblogs.com/cndotabestdota/p/5694629.html
Copyright © 2011-2022 走看看