A. 如何用nodejs搭建web伺服器
創建一個記事本將下面的代碼復制進去 保存為.js
var http = require('http');//引入響應頭
http.createServer(function (request, response) {
//參數一是與請求相關的對象
//參數二是與響應有關的對象
// 發送 HTTP 頭部
// HTTP 狀態值: 200 : OK
// 內容類型: text/plain
response.writeHead(200, {'Content-Type': 'text/plain'});
// 發送響應數據 "Hello World"
response.end('Hello World ');
}).listen(8888);//監聽埠
// 終端列印如下信息
console.log('Server running at http://127.0.0.1:8888/');
以下以我的電腦上的路徑為准 我是將app.js 保存在E:NODE這個文件夾下面
接下來就是運行了打開cmd
第一步:E:
第二步:cd NODE //CD是 命令行改變目錄的命令
第三步:node app.js
這個是運行效果接下來訪問localhost:8888就可以看到hollo word
建議多看一些node的模塊 比如 express和session mysql之類的模塊
B. 如何用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是用來設置響應頭以及對客戶端做出響應操作。
請求處理函數中有幾個重點需要說一下:
對於路徑中有中文的,瀏覽器會自動進行編碼(英文不變,中文會變),因此在接收到地址後,需要對地址進行解碼,否則最後得到的路徑和真實路徑不相符,
當訪問路徑不是以具體的文件結尾,並且不是以/結尾,則需要通過重定向加上/,表示當前目錄,否則當前路徑下的靜態資源會找不到
如果訪問路徑是目錄,則列出該目錄下所有文件及文件夾,並可以點擊訪問,為了讓中文目錄能正常顯示,則還要在header中設置charset=utf-8
核心代碼就這么多,大概140行左右,完整的代碼已上傳到github:https://github.com/git-onepixel/Node,
如果要運行demo,打開cmd切換到根目錄,運行node start 即可。
C. nodejs 如何部署到伺服器上
兩點:第一是否是線上服務,第二是否需要守護進程;
第一點,如果是線上服務,毫無疑問回需要一個守護進答程來保證,發生意外導致進程退出後,能重新啟動,提供服務;當然就需要pm2等守護進程來啟動,使用方法請自行參照github;第二點,是否需要守護進程,如果不需要,那麼直接node啟動即可;如果需要,也不必擔心pm2啟動進程後並不會搶占伺服器資源,如果你的server有很大的需求,毋庸置疑需要更多的內存和cpu,如果沒有很大需求,pm2會基於linux的資源調度策略,並不會搶占;
D. nodejs搭建web伺服器就是這么簡單!
Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境。 Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。Node.js 的包管理器 npm,是全球最大的開源庫生態系統。(nodejs官網上的介紹),正如官網上介紹的那樣,nodejs確實很牛!怎麼個牛法?看看下面的代碼就知道了。
//引入http模塊
var http = require("http");
//設置主機名
var hostName = 飗.0.0.1'
//設置埠
var port = 8080;
//創建服務
var server = http.createServer(function(req,res){
res.setHeader('Content-Type','text/plain');
res.end("hello nodejs");
});
server.listen(port,hostName,function(){
console.log(`伺服器運行在http://${hostName}:${port}`);
});
短短幾行代碼就把一個簡單的web伺服器搭建完成了,為了驗證效果,我們在瀏覽器請求,結果如下
運行成功!
到此為止,一個web伺服器就建立成功了! 沒錯就是這么簡單,然後我們就可以寫個html界面愉快的玩耍了,哈哈哈!果斷的寫了一個html頁面來請求一下我們的web伺服器。
代碼簡單,點擊p獲取數據並將伺服器返回的數據展示。好了,我們運行一下demo.html文件,我擦來!居然出現了……
很明顯,通過jquery請求不到數據,這是因為跨域請求的原因。我們的web伺服器並不支持跨域請求,所以報錯了。解決方式:在伺服器的響應頭文件里加上如下代碼:
再次重啟伺服器,運行demo.html,顯示結果很是令人欣喜!
通常請求伺服器都會拼接參數的,最常用的就是get請求,post請求。很明顯,我們現在的代碼還不能支持。express框架很好的封裝了nodejs的http模塊,使我們用起來非常的簡單。
引入express :$ cnpm install express –save
使用方式變化不大,通過express()方法開啟服務,然後在通過get方法來設置匹配參數的路由,通過在回調函數的req中可以獲取請求參數和地址。post請求也是類似,不過有不同的是,post請求在獲取參數的時候要引入body-parser 中間件,用於處理 JSON, Raw, Text 和 URL 編碼的數據。
運行結果:
完整的get以及post請求就是以上了。下一篇文章會結果fs文件模塊介紹http是如何返迴文件的,敬請期待!!
學習從來不是一個人的事情,要有個相互監督的夥伴,想要學習或交流前端問題的小夥伴可以私信「學習」小明加群獲取2019web前端最新入門資料,一起學習,一起成長!
E. 如何在伺服器上搭建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 啟動文件
F. nodejs寫文件時磁碟大小不夠怎麼辦
除了留出足夠空間這應該沒什麼辦法吧,畢竟是硬體問題,程序在不能寫入的時候會終止,也不建議進行換一個盤繼續寫(這會影響數據的完整性),如果確定,可以改下代碼,讓它在存儲滿了之後換個地方繼續寫,也可以事先判斷文件大小,進行分割,再分別存入不同地方。