1、nodejs怎麼實現伺服器與伺服器
var http = require("http"); var url = require("url"); http.createServer(function (req, res) { var urlObj = url.parse(req.url, true); // 獲取中國 URL var urlToProxy = urlObj.query.url; if (!urlToProxy) { res.statusCode = 四00; res.end("URL 必須"); } else { console.log("處理中國請求:" + urlToProxy); var parsedUrl = url.parse(urlToProxy); var opt = { host : parsedUrl.hostname, port : parsedUrl.port || 吧0, path : (parsedUrl.pathname || "") + (parsedUrl.search || "") + (parsedUrl.hash || "") }; http.get(opt, function(pres) { // 請求中國 URL 內容 res.statusCode = pres.statusCode; var headers = pres.headers; for (var key in headers) { res.setHeader(key, headers[key]); } pres.on("data", function(chunk) { res.write(chunk); // 寫數據 }); pres.on("end", function() { res.end(); }); }); } }).listen(吧0吧吧, "一二漆.0.0.一"); console.log("中國伺服器已經 吧0吧吧 埠啟"); 整中國伺服器實現比較簡單首先通 http 模塊 createServer() 用創建 HTTP 伺服器再通 listen() 讓該 HTTP 伺服器特定埠監聽 createServer() 傳入參數 HTTP 請求響應實際每 HTTP 請求都應於 HTTP 伺服器 request 事
2、如何用命令行開啟nodejs搭建web伺服器?
首先,需要安裝nodejs,這個可以去官網下載,目前我本地安裝的v0.12版本。
安裝完成後可以通過命令行測試安裝是否成功,輸入:node -v,應該會顯示當前安裝node版本號。
本文中用到的模塊,都是nodejs核心模塊,不需要從外部下載,如果有需要,可以使用以下命令安裝:npm install xxx。
開始
下一步,新建js文件,可以命名為server.js,代碼如下:
var http = require('http');
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服務
http.createServer(function (req, res) {
var pathname = __dirname + url.parse(req.url).pathname;
3、如何用用命令行開啟nodejs搭建web伺服器
您好 很高興為您解答:
這個web伺服器包括三塊,app.js是程序入口,負責響應url請求;route.js是路由,用來分發處理復雜的業務邏輯;system.js是配置文件,用來配置伺服器參數,如host、port等
首先來看app.js,引用模塊,http處理url請求,url用來解析請求參數和路徑,path只是用來匹配路徑的擴展名o(╯□╰)o,fs用來讀取本地靜態文件,剩下兩個模塊後面詳解。
接下來正式創建伺服器處理請求,請求大致分兩類,一類是靜態文件,如xxx.html、xxx.js等等,另一類是進行業務處理,如常見的增刪查改操作,這一部分操作交給路由處理,這里用了一個簡單的判斷邏輯:通過後綴名,後綴名在system.js中配置。
讀取本地文件的時候要注意一點,那就是緩存。如果客戶端發出重復請求,伺服器需要判斷文件自上次請求後是否發生了修改,如果未修改返回304,這樣可以加快瀏覽器端的響應速度。這里的判斷方式是通過判斷請求的header的if-modified-since時間和本地文件修改時間是否一致,如果一致則返回304,否則重置該時間,第一張圖是代碼,第二張圖是通過chrome調試工具看到的請求頭部時間。
如果需要進行業務處理,則交給路由處理了。首先路由引入具體的業務邏輯模塊,然後通過解析具體的路徑名來執行具體的業務邏輯,這里注意的是:由於node.js的並發特性,記得傳入回調函數來獲得相應的處理結果。
望採納 謝謝
4、nodejs 如何部署到伺服器上?
兩點:第一是否是線上服務,第二是否需要守護進程;
第一點,如果是線上服務,毫無疑問需要一個守護進程來保證,發生意外導致進程退出後,能重新啟動,提供服務;當然就需要pm2等守護進程來啟動,使用方法請自行參照github;第二點,是否需要守護進程,如果不需要,那麼直接node啟動即可;如果需要,也不必擔心pm2啟動進程後並不會搶占伺服器資源,如果你的server有很大的需求,毋庸置疑需要更多的內存和cpu,如果沒有很大需求,pm2會基於linux的資源調度策略,並不會搶占;
5、nodejs當web伺服器行不行
可以呀
使用Node.js搭建Web伺服器是學習Node.js比較全面的入門教程,因為實現Web伺服器需要用到幾個比較重要的模塊:http模塊、文件系統、url解析模塊、路徑解析模塊、以及301重定向技術等,下面我們就一起來學習如何搭建一個簡單的Web伺服器。
作為一個Web伺服器應具備以下幾個功能:
1、能顯示以.html/.htm結尾的Web頁面
2、能直接打開以.js/.css/.json/.text結尾的文件內容
3、顯示圖片資源
4、自動下載以.apk/.docx/.zip結尾的文件
5、形如http://xxx.com/a/b/ , 則查找b目錄下是否有index.html,如果有就顯示,如果沒有就列出該目錄下的所有文件及文件夾,並可以進一步訪問。
6、形如http://xxx.com/a/b, 則作301重定向到http://xxx.com/a/b/ , 這樣可以解決內部資源引用錯位的問題。
引入需要用到的幾個模塊:
創建服務並在指定的埠監聽:
在創建服務的時候需要傳遞一個匿名函數processRequest 對請求進行處理,processRequest接收2個參數,分別是request和response, request對象中包含了請求的所有內容,response是用來設置響應頭以及對客戶端做出響應操作。
processRequest:function(request,response){ var hasExt = true; var requestUrl = request.url; var pathName = url.parse(requestUrl).pathname; //對請求的路徑進行解碼,防止中文亂碼 pathName = decodeURI(pathName); //如果路徑中沒有擴展名 if(path.extname(pathName) === ''){ //如果不是以/結尾的,加/並作301重定向 if (pathName.charAt(pathName.length-1) != "/"){ pathName += "/"; var redirect = "http://"+request.headers.host + pathName; response.writeHead(301, { location:redirect }); response.end(); return ; } //添加默認的訪問頁面,但這個頁面不一定存在,後面會處理 pathName += "index.html"; hasExt = false; //標記默認頁面是程序自動添加的 } //獲取資源文件的相對路徑 var filePath = path.join("http/webroot",pathName); //獲取對應文件的文檔類型 var contentType = this.getContentType(filePath); //如果文件名存在 fs.exists(filePath,function(exists){ if(exists){ response.writeHead(200, {"content-type":contentType}); var stream = 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){ //如果這個文件不是程序自動添加的,直接返回404 response.writeHead(404, {"content-type": "text/html"}); response.end("<h1>404 Not Found</h1>"); }else { //如果文件是程序自動添加的且不存在,則表示用戶希望訪問的是該目錄下的文件列表 var html = "<head><meta charset='utf-8'></head>"; try{ //用戶訪問目錄 var filedir = filePath.substring(0,filePath.lastIndexOf('')); //獲取用戶訪問路徑下的文件列表 var files = fs.readdirSync(filedir); //將訪問路徑下的所以文件一一列舉出來,並添加超鏈接,以便用戶進一步訪問 for(var i in files){ var filename = files[i]; html += "<div><ahref='"+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:https://github.com/git-onepixel/Node,
如果要運行demo,打開cmd切換到根目錄,運行node start 即可。
6、如何在伺服器上搭建nodejs
先確認下系統環境合不合要求
Python -V(確認python版本大於2.6)
訪問http://nodejs.org/download/下載需要的Node.js版本(wget
http://nodejs.org/dist/v0.10.26/node-v0.10.29.tar.gz )
解壓 tar zxvf node-v0.10.26-linux-x64.tar.gz
進入目錄 cd node-v0.10.26-linux-x64
./configure --prefix=/home/work/setups/node-v0.10.26
make
sudo make install
添加到系統環境 echo "export PATH=$PATH:/home/work/setups/node-v0.10.26/bin">>
~/.bash_profile
. ~/.bash_profile執行該文件更新$PATH變數
###安裝Express
sudo npm install express
-gd g參數:把express安裝到NodeJS的lib目錄d參數:同時安裝依賴模塊包
sudo npm install forever -gd
(異常情況:
如果遇到npm 找不到的情況 確認sudo node -v是否找不到 找不到的話:需要added /usr/local/bin to secure_path in /etc/sudoers :
sudo visudo
把 Defaults secure_path =
/sbin:/bin:/usr/sbin:/usr/bin 這行 改為 Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin然後:x保存退出
如果遇到
npm ERR! Error: Hostname/IP doesn't match certificate's altnames
執行 npm config set strict-ssl false
如果遇到 npm ERR! registry error parsing json
npm cache clean
執行 npm config set registry http://registry.npmjs.eu/
)
###部署forever
$ npm install -g forever
啟動
NODE_ENV=pro LANG='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 啟動文件
7、nodejs寫伺服器怎麼樣
<
8、如何停止本地運行的nodejs伺服器
可以通過如下代碼實現nodejs伺服器打開關閉。 相關代碼如下:
var express = require(『express』);
var app = express();
var http = require(『http』).Server(app); var io = require(『socket.io』)(http);
//打開伺服器
server.prototype.openServer = function(){ http.listen(3001, function(){ console.log(『listening on *:3001』); }); }
//關閉伺服器
server.prototype.stopServer = function(){ http.close(function(){ console.log(『stop listening』); }) } 在這里我將打開和關閉伺服器寫成兩個函數,方便調用。
9、如何在伺服器上開啟nodejs伺服器
小鳥雲伺服器niaoyun實例創建好之後,您可以使用以下任意一種方式登錄伺服器:
遠程桌面連接(,MSTSC):採用這種方式登錄,請確保實例能訪問公網。如果在創建實例時沒有購買帶寬,則不能使用遠程桌面連接。
管理終端VNC:無論您在創建實例時是否購買了帶寬,只要您本地有網頁瀏覽器,都可以通過管理控制台的管理終端登錄實例。
使用遠程桌面連接(MSTSC)登錄實例
打開開始菜單>遠程桌面連接,或在開始菜單>搜索中輸入mstsc。也可以使用快捷鍵Win+R來啟動運行窗口,輸入mstsc後回車啟動遠程桌面連接。
在遠程桌面連接對話框中,輸入實例的公網IP地址。單擊顯示選項。
輸入用戶名,如小鳥雲默認為niaoyun。單擊允許我保存憑據,然後單擊連接。這樣以後登錄就不需要手動輸入密碼了。
10、nodejs怎麼部署到伺服器上
伺服器推薦用nginx,配置簡單,性能強悍。
nginx可以使用代理訪問後端的Node.js應用伺服器。
配置方法:
1)在配置文件http段內容添加後端伺服器:
http {
#添加後端伺服器,和nginx負載均衡配置一樣
upstream nodejs {
server 127.0.0.1:8080;
}
...
}
2)給應用添加虛擬主機:
server {
listen 80;
server_nameIP
location / {
proxy_pass nodejs;#名字和前面的對應,將所有的請求轉發給後端的node
}
access_log logs/nodejs.access.log main;#如果需要日誌的話
}
推薦將靜態文件如css、js和圖片和應用伺服器分開。