CNPM 的基礎部署方法介紹

來源:互聯網
上載者:User

標籤:windows   伺服器   資料庫   用戶端   文章   

該文章所對應的 cnpm版本為 v2.12.2,上下浮動一些相容的版本問題也都不是特別大。

想要部署 CNPM,你需要做以下的一些準備。

部署的宿體,如伺服器、雲主機、自己的電腦等;

資料庫,支援 MySQL、PostgreSQL、MariaDB,如果使用 SQLite 則無需準備;

Git 用戶端(推薦)。

下面兄弟連教育(www.lampbrother.net)就來指導大家開始部署複製 CNPM

首先在本地選擇一個目錄,比如我將它選擇在 /usr/app,然後預想 CNPM 的目錄為 /usr/app/cnpm,那麼需要在終端 $ cd /usr/app。

接下去執行 Git 指令將 CNPM 複製到相應目錄。

$ git clone https://github.com/cnpm/cnpmjs.org.git

Windows 使用者

Windows 使用者也可以用類似 Cygwin、MinGW、Powershell 甚至直接是 Command 等來運行 Git。

當然也可以直接下載一些 GUI 工具來複製,如 SourceTree。

非 Git 使用者

跑到 CNPM 的 Release 頁面,選擇相應的版本下載,比如這裡會選擇 v2.12.2 版。

下載完畢後將檔案夾解壓到相應目錄即可。

安裝依賴

安裝依賴其實就是一個 npm install,不過 CNPM 把該指令已經寫到 Makefile 裡面了,所以直接執行下面的命令就好了。

$ make install

當然萬一你是 Windows 使用者或者不會 make,那麼還是要用 npm install。

$ npm install --build-from-source --registry=https://registry.npm.taobao.org --disturl=https://npm.taobao.org/mirrors/node

修改設定檔

建立一份 config/config.js 檔案,並且寫入如下的骨架:

JavaScript

‘use strict‘;

module.exports = {  

};

在這裡面輸入你需要的索引值對。

這裡將會列舉一些常用的配置項,其餘的一些配置項請自行參考 config/index.js 檔案。

配置欄位參考

enableCluster:是否啟用 cluster-worker 模式啟動服務,預設 false,生產環節推薦為 true;

registryPort:API 專用的 registry 服務連接埠,預設 7001;

webPort:Web 服務連接埠,預設 7002;

bindingHost:監聽綁定的 Host,預設為 127.0.0.1,如果外面架了一層本地的Nginx 反向 Proxy或者 Apache 反向 Proxy的話推薦不用改;

sessionSecret:session 用的鹽;

logdir:日誌目錄;

uploadDir:臨時上傳檔案目錄;

viewCache:視圖模板緩衝是否開啟,預設為 false;

enableCompress:是否開啟 gzip 壓縮,預設為 false;

admins:管理員們,這是一個 JSON Object,對應各鍵名為各管理員的使用者名稱,索引值為其郵箱,預設為 { fengmk2: ‘[email protected]‘, admin: ‘[email protected]‘, dead_horse: ‘[email protected]‘ };

logoURL:Logo 地址,不過對於我這個已經把 CNPM 前端改得面目全非的人來說已經忽略了這個配置了;

adBanner:廣告 Banner 的地址;

customReadmeFile:實際上我們看到的 cnpmjs.org 首頁中間一大堆冗長的介紹是一個 Markdown 檔案轉化而成的,你可以設定該項來自行替換這個檔案;

customFooter:自訂頁尾模板;

npmClientName:預設為 cnpm,如果你有自己開發或者 fork 的 npm 用戶端的話請改成自己的 CLI 命令,這個應該會在一些頁面的說明處替換成你所寫的;

backupFilePrefix:備份目錄;

database:資料庫相關配置,為一個對象,預設如果不配置將會是一個 ~/.cnpmjs.org/data.sqlite 的 SQLite;

db:資料的庫名;

username:資料庫使用者名稱;

password:資料庫密碼;

dialect:資料庫適配器,可選 "mysql"、"sqlite"、"postgres"、"mariadb",預設為 "sqlite";

hsot:資料庫地址;

port:資料庫連接埠;

pool:資料庫連接池相關配置,為一個對象;

maxConnections:最大串連數,預設為 10;

minConnections:最小串連數,預設為 0;

maxIdleTime:單條連結最大空閑時間,預設為 30000 毫秒;

storege:僅對 SQLite 配置有效,資料庫地址,預設為 ~/.cnpmjs/data.sqlite;

nfs:包檔案系統處理對象,為一個 Node.js 對象,預設是 fs-cnpm 這個包,並且配置在 ~/.cnpmjs/nfs 目錄下,也就是說預設所有同步的包都會被放在這個目錄下;開發人員可以使用別的一些檔案系統外掛程式(如上傳到又拍雲等),又或者自己去按介面開發一個邏輯層,這些都是後話了;

registryHost:暫時還未試過,我猜是用於 Web 頁面顯示用的,預設為r.cnpmjs.org;

enablePrivate:是否開啟私人模式,預設為 false;

如果是私人模式則只有管理員能發布包,其它人只能從來源站點同步包;

如果是非私人模式則所有登入使用者都能發布包;

scopes:非管理員發布包的時候只能用以 scopes 裡面列舉的命名空間為首碼來發布,如果沒設定則無法發布,也就是說這是一個必填項,預設為 [ ‘@cnpm‘, ‘@cnpmtest‘, ‘@cnpm-test‘ ],據蘇千大大解釋是為了便於管理以及讓公司的員工自覺按需發布;更多關於 NPM scope 的說明請參見 npm-scope;

privatePackages:就如該配置項的注釋所述,出於曆史包袱的原因,有些已經存在的私人包(可能之前是用 Git 的方式安裝的)並沒有以命名空間的形式來命名,而這種包本來是無法上傳到 CNPM 的,這個配置項數組就是用來加這些例外白名單的,預設為一個空數組;

sourceNpmRegistry:更新源 NPM 的 registry 地址,預設為 https://registry.npm.taobao.org;

sourceNpmRegistryIsCNpm:源 registry 是否為 CNPM,預設為 true,如果你使用的源是官方 NPM 源,請將其設為 false;

syncByInstall:如果安裝包的時候發現包不存在,則嘗試從更新源同步,預設為 true;

syncModel:更新模式(不過我覺得是個 typo),有下面幾種模式可以選擇,預設為 "none";

"none":永不同步,只管理私人使用者上傳的包,其它源包會直接從來源站點擷取;

"exist":定時同步已經存在於資料庫的包;

"all":定時同步所有來源站點的包;

syncInterval:同步間隔,預設為 "10m" 即十分鐘;

syncDevDependencies:是否同步每個包裡面的 devDependencies 包們,預設為 false;

badgeSubject:包的 badge 顯示的名字,預設為 cnpm;

userService:使用者驗證介面,預設為 null,即無使用者相關功能也就是無法有使用者去上傳包,該部分需要自己實現介面功能並配置,如與公司的 Gitlab 相對接,這也是後話了;

alwaysAuth:是否始終需要使用者驗證,即便是 $ cnpm install 等命令;

httpProxy:Proxy 位址設定,用於你在牆內來源站點在牆外的情況。


CNPM 的基礎部署方法介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.