国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

袋鼠云前端項目發布工具dtux-kangaroo

yacheng / 2388人閱讀

摘要:每家公司在前端項目發布體系可能不盡相同,本篇文章僅僅介紹袋鼠云的前端發布體系,希望能對大家能有所啟發。目前袋鼠云采用的是前后端分離的方式,但是開發中還是比較依賴后端的,接口數據還不是很完善。

前言

在目前的大趨勢下,前端和后端解耦已經是一個業界的趨勢。前端和后端一旦解耦之后,前端的項目和后端的項目便可以自己發布,互不影響。這樣極大地提高工作效率,免去了很多互相等待的時間。每家公司在前端項目發布體系可能不盡相同,本篇文章僅僅介紹袋鼠云的前端發布體系,希望能對大家能有所啟發。

項目地址: https://github.com/ruichengpi...

實現原理

首先說一下整個前端這邊的運行流程,一般瀏覽器請求我們大致分為兩條線資源請求接口請求。下面我們以這兩個線說一下整個流程:

1. 資源請求: 這邊我們Nginx服務器跟我們前端打包出來資源都是放在同一臺機器上。Nginx設置一下我們靜態資源的目錄,瀏覽器的資源請求都會從這個靜態資源目錄中獲取,我們本地往遠程機器推送前端資源也是在這個目錄下。

2. 接口請求: 瀏覽器的所有接口請求都會被我們遠程機器上的Nginx攔截,然后路徑規則匹配代理相應的接口服務上。

準備工作 安裝nginx

這邊以Centos為例為例:

yum install nginx
這里有個需要注意的是,我們要盡量保證nginx全局命令是可用,有不少公司nginx命令不是全局的,如何在對應的roo.config.js中做一下設置,后面我們會講到。
設置好相應的目錄

這里我們需要設定一下三個目錄:

前端資源存放目錄 例如:/root/app

前端項目nginx配置存放目錄 例如:/root/nginx

前端資源備份目錄 例如:/root/backup

配置nginx文件

設置一下nginx配置文件,一般來說是/etc/nginx/nginx.conf。當然根據每個公司不同情況找到對應的配置文件

...
http{
    include /root/nginx/*.conf;  
}
...

include /root/nginx/*.conf;

這句話表示/root/nginx下所有以.conf結尾的文件都會被加載進來,而/root/nginx是我們所設定的nginx配置文件存放目錄。
啟動Nginx
nginx -c /etc/nginx/nginx.conf  //啟動nginx,并確定前面配置是否正確

上面命令僅作參考,具體根據情況來定。

我們訪問資源的時候有些人會遇到nginx拋出403 Forbidden的情況,這是是因為我們nginx配置文件最上面的user設置的用戶權限不夠,可以改成user root來解決。

支持功能
以下四個功能均支持-c或者--config指定配置文件.如果未指定配置文件,則默認在項目根目錄下去roo.config.js作為配置文件。
roo backup

該命令用于備份我們的前端資源包,這樣有利于我們做版本的管理。當線上出現重大問題的時候,可以及時拿過來做版本回滾。

執行roo backup命令,如果設置了NODE_ENV=production則會在遠程機器上的backupDirectory里生成一個“production_YYYYMMDD”的前端資源包,若未設置則生成一個
test_YYYYMMDD”的前端資源包,其中YYYYMMDD為當天的年月日,當天上傳多次也只會生成一個包,后續上傳的將會覆蓋之前上傳的前端資源。

以下為必須配置項:

roo.config.js

module.exports={
  local:{
    resourceDirectory:"<本地前端資源所在目錄,該目錄下的內容將會全部上傳>"
  },
  origin:{
    host:"<遠程機器IP>",
    username: "<遠程機器用戶名>",
    password: "<遠程機器密碼>",
    backupDirectory:"<遠程機器備份前端資源的目錄>"
  }
}
roo nginx

該命令用于生成項目對應的nginx配置文件,并更新線上的nginx配置文件。執行roo nginx文件之后,會在roo.config.js中指定的local.nginxConfigFilePath生成對應的nginx配置文件,并更新遠程機器上的roo.config.js中指定的origin.nginxConfigFilePath的nginx配置文件,然后執行nginx的reload操作。

以下為必須配置項:

roo.config.js

module.exports={
  local:{
     nginxConfigTemplate:""
     nginxConfigFilePath:""
  },
  origin:{
    host:"<遠程機器IP>",
    username: "<遠程機器用戶名>",
    password: "<遠程機器密碼>",
    nginxConfigFilePath:"<遠程機器上該項目的nginx配置文件的路徑,此文件將會被nginx主文件include>"    
  },
//nginxConfig里的參數將用于生成本項目的nginx配置文件
  nginxConfig:{
    port:"<開放端口>",
    serverName:"<服務名稱>",
    publicPath:"<靜態資源目錄>",
    //locations將對于nginx里面的location
    locations:[
        {
            path:"<匹配路徑>",
            //對應location中的配置項
            configs:[
                {
                    key:"proxy_redirect",
                    value:"off"
                },
                {
                    key:"proxy_set_header",
                    value:"Host $host"
                },
                {
                    key:"proxy_pass",
                    value:"代理路徑"
                },
            ]
        }
    ]
  }
}

默認nginx配置文件模板

server {
  listen       {{port}};
  server_name  {{serverName}};
  location / {
    root        {{publicPath}};
    try_files $uri /index.html;
    location ~ .*.(ico|js|css|gif|jpg|jpeg|png|bmp|swf)$ {}
  }
  {{#each locations}}
  location {{this.path}} {
    {{#each this.configs}}
    {{this.key}} {{this.value}};
    {{/each}}
  }
  {{/each}}
}
roo port

該命令用于檢查遠程機器的端口占用情況。

-p 或者 --port | 會檢測該端口是否占用,若占用會顯示相關使用情況

roo port  // 會拉取遠程機器上所有已占用的端口情況

roo port -p 8000  //檢測8000端口是否占用,若占用顯示被使用情況

以下為必須配置項:

roo.config.js

module.exports={
    origin:{
        host:"<遠程機器IP>",
        username: "<遠程機器用戶名>",
        password: "<遠程機器密碼>"
    }
}
roo publish

該命令將roo.config.js文件中local.resourceDirectory指定的前端資源目錄內的資源上傳到origin.resourceDirectory目錄下。origin.resourceDirectory指定的目錄也會跟nginxConfig.publicPath指定的目錄相對應。

以下為必須配置項:

roo.config.js

module.exports={
    local:{
        resourceDirectory:"<本地前端資源所在目錄,該目錄下的內容將會全部上傳>"
    }    
    origin:{
        host:"<遠程機器IP>",
        username: "<遠程機器用戶名>",
        password: "<遠程機器密碼>",
        resourceDirectory:"<遠程機器存在前端資源的目錄,上傳的前端資源將會存在這里>",
        nginxConfigFilePath:"<遠程機器上該項目的nginx配置文件的路徑,此文件將會被nginx主文件include>"  
    }
}
roo.config.js配置參數說明
module.exports={
  local:{
    resourceDirectory:"<本地前端資源所在目錄,該目錄下的內容將會全部上傳>",
    nginxConfigFilePath:""
  },
  origin:{
    host:"<遠程機器IP>",
    username: "<遠程機器用戶名>",
    password: "<遠程機器密碼>",
    resourceDirectory:"<遠程機器存在前端資源的目錄,上傳的前端資源將會存在這里>",
    backupDirectory:"<遠程機器備份前端資源的目錄>"
    nginxConfigFilePath:"<遠程機器上該項目的nginx配置文件的路徑,此文件將會被nginx主文件include>"    
  },
 //nginxConfig里的參數將用于生成本項目的nginx配置文件
  nginxConfig:{
    port:"<開放端口>",
    serverName:"<服務名稱>",
    publicPath:"<靜態資源目錄>",
    //locations將對于nginx里面的location
    locations:[
        {
            path:"<匹配路徑>",
            //對應location中的配置項
            configs:[
                {
                    key:"proxy_redirect",
                    value:"off"
                },
                {
                    key:"proxy_set_header",
                    value:"Host $host"
                },
                {
                    key:"proxy_pass",
                    value:"代理路徑"
                },
            ]
        }
    ]
  }
}
展望 roo create

目前袋鼠云這邊的項目構建工具采用的是Yeoman的構建體系,可以滿足袋鼠云這邊對項目構建的需求。但是有點小小不足的地方,就是每次項目模板更新之后都要重新發布Yeoman的腳手架,靈活性相對較差。后面打算把項目的生成的工作交給dtux-kangaroo,并且所有項目模板均放在github上,每次生成項目都會從github重新拉,模板貢獻者只需要關注自己的github倉庫即可,只要將更新合并到master分支上,后續項目生成均會提到更新。當然在現有的Yeoman的腳手架改造也可以實現同樣的功能,但是本著工具精簡的原則,會將現有的Yeoman的腳手架遷到dtux-kangaroo并進行改造。

roo mock

目前袋鼠云采用的是前后端分離的方式,但是開發中還是比較依賴后端的,接口數據mock還不是很完善。后面計劃加入roo mock來解決數據mock問題,初步想法是借助后端的swagger來實現接口數據mock。

在dtux-kangaroo上基礎做一個前端資源發布平臺

dtux-kangaroo已經驗證了這套發布體系的可行性,也解決了如何與遠程機器的交互的問題。為前端資源發布平臺的搭建打下很好的基礎。后面計劃搭建這個前端資源發布平臺,提高前端資源發布的效率,減少對運維的依賴。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/108037.html

相關文章

  • 余額寶11.11:基于日志數據分析的高效運維

    摘要:接下來我們以余額寶為例,重點剖析天弘基金在日志數據分析領域是如何突破的此前,天弘基金一直使用開源的日志方案,研發和運維人員通過對日志數據進行處理,使用日志文件進行查詢檢索。 雙十一剛剛結束,其實最緊張的不是商鋪理貨,也不是網友緊盯大促商品準備秒殺,而是網購幕后的運維人員,他們最擔心:什么網絡中斷、應用卡頓、響應速度慢,服務器宕機……雙十一作為電商 IT 部門的頭等大事,大促前,運維人員就需要...

    wenshi11019 評論0 收藏0

發表評論

0條評論

yacheng

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<