公司項目NODEJS實踐0.1[ ubuntu,nodejs,nginx...]

1、前言

前端如何獨立用nodeJs實現一個簡單的註冊、登陸功能,是否是隻用nodejs+sql就能夠了?實際上是能夠實現,但離實際應用還有距離,那要怎麼作纔是實際可用的。javascript

網上有不少nodeJs的示例,包括和 sql / nginx … 等周邊技術結合demo,但一般都是作爲入門演示或解決某一問題,少有站在項目實際完整應用角度,給出一個總體的解決方案。一些前端朋友和我討論nodejs時,也多表現出對服務端的欠缺,雖然知道nodejs很好,但難以實際應用。css

我在這塊作了些研究,也在公司項目中有應用,在此和你們分享下,如何用nodejs實現一個實際可用的項目,須要操做的步驟及相關的技術應用。如今還沒想好作怎樣的一個demo,就隨想隨作,若有意義的需求咱們也能夠一塊兒實現下,如有欠缺,也歡迎共同討論。html

第一次作,咱們就先實現下最經常使用的註冊和登陸。前端

技術點:java

一、用戶註冊站點,須要輸入用戶名、密碼、郵箱,驗證有效性。[ nodejs / express / validate / md5 / node-dev / requirejs ]

二、發送驗證郵件,用戶經過郵箱驗證後,註冊成功。[ mongodb / mailer ]

三、用戶登陸,能夠訪問須要登陸權限的頁面[ redis / 權限控制 ]

四、本項目在linux上開發 及 發佈部署 [ git / nginx / ubuntu / aliyun / pm2 ]

五、考慮到先後端分離的須要,咱們也將分別搭建前臺服務(接收頁面請求)、後臺服務(數據存儲) [ 項目架構 ]

⋅⋅*因涉及到的技術點較多,在本項目中每一種技術如nginx只對使用到的部分作講解,其它部分後面用到再講,按部就班,基礎較弱者也好逐步接受。node

⋅⋅*本節,咱們將實現unbuntu、nodejs、nginx的安裝及初步使用,搭建一個可訪問的服務linux

2、linux環境

本次開發將linux上開發,建議前端開發者嘗試使用linux系統,其能拓展技術面,在提高開發、發佈效率等方面也有好處,初次使用linux會有些障礙,不過如今linux也有類win7的漂亮桌面環境,操做大體類似,在命令不熟時也能夠正常使用,堅持用兩週,是能夠適應的。nginx

選擇系統上建議安裝適合我的開發者的ubuntu。git

建議安裝雙系統,虛擬機太弱,徹底安裝ubuntu,使用又不便,有些軟件如PS是不支持linux的。web

win7下安裝ubuntu 的雙系統,WIN7安裝ubutntu 步驟參見 http://www.upopen.cn/article/info?id=559291b3f0e6e0665b000001

安裝成功後,咱們就開始提升B格之旅,接下來會對用到的linux操做作簡單解釋,具體的ubuntu教程能夠參考 http://www.upopen.cn/article/info?id=55938b7ff0e6e0665b000003

3、安裝nodeJs

快捷鍵 Ctrl + Alt + T 打開shell終端,

一、打開Nodejs站點 https://nodejs.org/download/,下載linux下對應的.gz文件。也能夠拷貝下載地址後,

在shell裏執行 wget https://nodejs.org/dist/v0.12.5/node-v0.12.5-linux-x64.tar.gz

解釋:wget :下載後面路徑指定的文件

二、下載後默認在Downloads文件裏,咱們將壓縮文件放Soft/node 目錄裏以便分類管理

shell執行 mkdir Soft // mkdir: 建立Soft文件夾

執行 cd Downloads //cd: 進入到 Downloads 下載文件目錄

執行 cp node-v0.12.5-linux-x64.tar.gz /home/cc/Soft
//cp: 複製 node..gz到Soft目錄下,注意cc是你的主機名,可經過pwd查看

執行cd //進入我的根目錄

執行cd Soft/node

執行 tar -zxvf node-v0.12.5-linux-x64.tar.gz //tar -zxvf 解壓

執行 mv node-v0.12.5-linux-x64.tar.gz node //mv : 修改文件夾名爲node

執行sudo vi /etc/profile //打開環境變量配置文件

在最後寫入

javascriptexport PATH="/home/cc/Soft/node/bin:$PATH"
export NODE_PATH="/home/cc/Soft/node/lib/node_modules"

// 環境變量地址參見 node的 pwd

配置成功後重啓

做用:重啓後,可執行node -v查看是否安裝成功。

解釋:本部涉及到ubuntu的基本命令操做,都有簡單的解釋

4、建立項目目錄並安裝express等框架包

目錄結構

root:項目根目錄
⋅⋅web:前端服務
⋅⋅
static:靜態服務
⋅⋅*server:後端服務

一、執行 mkdir -p root/web

做用:建立目錄,全部項目都在root下,前端服務在web。建立成功後進入web文件夾 執行cd root/web

二、執行touch package.json

做用:建立 package.json文件,維護nodejs項目的依賴文件

解釋:touch :建立文件

四、執行 vi package.json

做用:用系統的VI編輯器打開 package.json文件。用vi做大量的編輯工做是不適合的,咱們仍是用常規的編輯器,在桌面打開文件系統,進入咱們建立的root/web目錄,使用系統默認的gedit編輯器打開package.json

五、經過gedit在package.json寫入

javascript{
⋅⋅"name": "myCoolNodejs ",
⋅⋅"version": "0.0.1",
⋅⋅"private": true,
⋅⋅"scripts": {
⋅⋅⋅"start": "node app.js"
⋅⋅},
⋅⋅"dependencies": { //主要是這兩處,設置引入模塊,後面還會用到其它模塊,另行添加
⋅⋅⋅"express": "*",
⋅⋅⋅"ejs": "*"
⋅⋅}
}

六、執行npm install

做用:下載package.json中dependencies 定義的引入模塊

注意:有時限制於網絡等因素npm install會安裝不成功,可使用淘寶的npm鏡像,執行 npm install -g cnpm --registry=https://registry.npm.taobao.org,安裝cnpm,執行cnpm install 。使用同npm。

七、經過桌面打開 web文件夾,建立app.js,並寫入基本配置

javascript/**
        * 引入依賴模塊
        */
        var express    = require( 'express' ),
        http              = require( 'http' ),
        path             = require( 'path' );

        var app        = express(),
        server     = http.Server( app );

        /**
        * 設置
        */
        app.set( 'port', process.env.PORT || 3000 ); //服務啓動端口
        app.set( 'views', __dirname + '/views' ); //視圖文件
        app.set( 'view engine', 'ejs' ); //頁面引擎
        app.use( '/', express.static( path.join( __dirname, 'assets' ))); //靜態文件路徑

        app.get( '/', function( req, res ){
                res.render( 'index.ejs' ); //請求跳轉到 index.ejs文件
        })
        server.listen( app.get( 'port' ), function(){ //監聽服務端口
                console.log( 'root server listening on port ' + app.get( 'port' ));
        } );

        server.on( 'close', function(){
                console.log( 'close' );    
        } );

八、web目錄下建立views文件夾,裏面再建立index.ejs文件做爲首頁

九、打開index.ejs文件,並寫入

javascript<!DOCTYPE html>
        <html>
        <head>
        <title>個人nodejs項目</title>
        </head>
        <body>
            <h1>個人nodejs項目</h1>
            <img src="/public/imgs/logo.png" /> <!-- 引用圖片,是爲測試後面配置靜態服務器-->
        </body>
        </html>

做用:ejs語法同html,優點在於其能夠引用一些命令,如接收服務服務端定義的數據、include模板等

十、在web目錄下建立文件夾 assets/public/imgs,拷入logo.png 圖片

十一、shell到web目錄,執行 node app.js,在瀏覽器打開 127.0.0.1:3000,便可看到咱們在index.ejs裏設置的內容,如圖

十二、在root在建立 statc文件夾,做爲靜態服務資源,將目錄web/assets/下的文件,複製到static裏,下面nginx將設置靜態文件代理到static服務器

5、安裝nginx

一、shell執行sudo apt-get install nginx

做用:安裝nginx服務器,nginx的使用可參見http://www.upopen.cn/article/info?id=559254e8b269230039000003

二、執行sudo vi /etc/nginx/sites-enabled/default

做用:因配置文件須要編輯的命令較少,咱們嘗試經過vi 編輯 nginx的配置文件。vi命令操做參見http://www.upopen.cn/article/list?kind=ubuntu

在server裏增長
javascriptlocation  ~ \.(png|jpg|css|js|woff|ttf|less|gif)$ {
            root /home/jgc/root/static/;
            #配置以上面結尾的文件都指向到 /home/cc/root/static。注意/cc/修改成你的計算機名
        }
        location / {
            proxy_pass http://mynodejs.com;
            #其它請求轉向到 http://mynodejs.com; 該名稱能夠自定義
        }
在server外面新增
javascriptupstream mynodejs.com { //此處名稱與上面proxy_pass名稱一致
            server 127.0.0.1:3000;
        #建立集羣,爲分攤服務器壓力,能夠建立多個服務器,作負載均衡,若是咱們將web複製一份爲web1,啓動端口改成3001,將其啓動後,此處能夠再增長一條配置
            server 127.0.0.1: 3001
            # 這樣訪問即可隨機指向3000 及 3001服務,分攤訪問壓力、下降服務宕機風險
        }

三、在shell 執行 sudo /etc/init.d/nginx start

做用:啓動nginx服務

四、此時訪問127.0.0.1也打開了和 3000同樣的頁面,不一樣在於其靜態資源是從static文件夾獲取的,能夠經過刪除web中的assets文件測試。咱們後續靜態文件都在statc裏編輯,發佈時static和web放在不一樣的服務器上,即實現了資源分離,爲CDN作準備,

五、執行sudo vi /etc/hosts

做用:打開本地host映射文件,新增一條 127.0.0.1 www.mynodejs.com。保存後,瀏覽器訪問 www.mynodejs.com。

6、總結

本節咱們使用、開發了以下功能

一、ubuntu的安裝和使用

二、nodejs的安裝 及 模塊安裝

三、nodejs文件的簡單配置和啓動,項目目錄的劃分

四、nginx安裝、簡單配置 及 啓動 [ 反向代理及集羣 ]

若是你本來只是一個單純寫html/css/js的前端開發員,相信這節是能夠學到至關多的新知識,下節,咱們將主要在nodejs及 mongo這一塊,並按實際項目使用建立項目架構。

有不明或錯誤,歡迎加羣討論,謝謝。

個人技術新Q羣:435485569

上一篇:先後端分離項目實踐分析

下一篇:公司項目NODEJS實踐0.2[ express, ajax.. ]

相關文章
相關標籤/搜索