在騰訊雲(windows)上搭建node.js服務器


1:安裝Node.js

使用MSI文件,並按照提示安裝node.js,默認情況下,安裝程序將 Node.js 發行到 C:\Program Files\nodejs. 但這里我們需要修改安裝路徑到:D:\yiibai_worksp\nodejs,並將 D:\yiibai_worksp\nodejs 目錄添加到Window系統的PATH環境變量中。重新啟動打開命令提示符,以使更改生效。

第一步:雙擊下載的  “node-v0.12.7-x64.msi" 文件,出現提示安裝界面:

第二步:選擇安裝目錄,這里安裝在目錄 D:\yiibai_worksp\nodejs 中,如下圖:

第三步:選擇安裝的模塊和功能,這里全部安裝,並添加到系統環境變量,如下圖所示:

最后一步:安裝完成!

驗證安裝:執行文件

創建一個js文件名為test.js 在 D:\>yiibai_worksp\nodejs.

File: test.js

console.log("Hello World")

現在運行test.js看到的結果:

D:\yiibai_worksp\nodejs> 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 + '\r\n');
 49         // 所有的請求頭
 50         for (var h in request.headers) {
 51             response.write(h + ':' + request.headers[h] + '\r\n');
 52         }
 53         response.write('\r\n');// 使用額外的空白行來結束頭
 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就可以訪問到自己的內容了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM