艾克斯の编码者

一个伪宅级别的码畜。

跟我一起部署和定制 CNPM——基础部署

大纲
  1. 1. 准备
  2. 2. 开始部署
    1. 2.1. 克隆 CNPM
      1. 2.1.1. Windows 用户
      2. 2.1.2. 非 Git 用户
    2. 2.2. 安装依赖
    3. 2.3. 修改配置文件
      1. 2.3.1. 配置字段参考
      2. 2.3.2. 一个可能的配置
      3. 2.3.3. 官方 NFS 插件
    4. 2.4. 初始化数据库
    5. 2.5. 启动服务
      1. 2.5.1. 简单启动
      2. 2.5.2. 官方脚本启动
    6. 2.6. 小结

本章会介绍 CNPM 的基础部署方法。

该文章所对应的 cnpm 目标版本为 v2.12.2,上下浮动一些兼容的版本问题也都不是特别大。

准备

想要部署 CNPM,你需要做以下的一些准备。

  1. 部署的宿体,如服务器、云主机、自己的电脑等;
  2. 数据库,支持 MySQL、PostgreSQL、MariaDB,如果使用 SQLite 则无需准备;
  3. Git 客户端(推荐)。

开始部署

克隆 CNPM

首先在本地选择一个目录,比如我将它选择在 /usr/app,然后预想 CNPM 的目录为 /usr/app/cnpm,那么需要在终端 $ cd /usr/app

接下去执行 Git 指令将 CNPM 克隆到相应目录。

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

Windows 用户

Windows 用户也可以用类似 CygwinMinGWPowershell 甚至直接是 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 文件,并且写入如下的骨架:

'use strict';

module.exports = {
};

在这里面输入你需要的键值对。

这里将会列举一些常用的配置项,其余的一些配置项请自行参考 config/index.js 文件。

配置字段参考

一个可能的配置

下面给出一个样例配置:

module.exports = {
enableCluster: true,
database: {
db: "snpm",
username: "username",
password: "password",

dialect: "mysql",
host: "127.0.0.1",
port: 3306
},
enablePrivate: false,
admins: {
xadillax: "i@2333.moe"
},
syncModel: "exist",
nfs: require('upyun-cnpm').create({
bucket: "your bucket",
oprator: "your id",
password: "your secret"
}),
scopes: [ '@cheniu', '@souche', '@souche-f2e' ],
badgeSubject: 'snpm',
privatePackages: [ 'snpm' ]
};

上面的配置包文件系统层用的是 upyun-cnpm 插件,需要在 CNPM 源码根目录执行

$ npm install --save -d upyun-cnpm

这个时候你的 package.json 就有更改与源 Repo 不一致了,如果是 Git 克隆的用户在以后升级更新系统的时候稍稍注意一下可能的冲突即可。

官方 NFS 插件

下面给出几个官方的 NFS 插件:

以后官方如果有一些新的插件进来,这里可能不会更新了,请自行去 NFS Storage Wrappers 获取最新的 NFS 插件们。

初始化数据库

如果你使用的是 SQLite 的话,数据库是自动就好了的,可以忽略该步。

其它数据库需要自行导入初始数据库结构。

初始数据库脚本在 docs/db.sql 里面,你可以用一些 GUI 工具将数据导入,也可以直接进入命令行导入。

比如你用的是 MySQL,就可以在本机操作 MySQL。

$ mysql -u yourname -p
mysql> use cnpmjs;
mysql> source docs/db.sql

启动服务

搞好配置之后就可以直接启动服务了。

简单启动

最简单的办法也是我现在正在用的方法就是直接用 node 执行一下入口文件就好了。

$ node dispatch.js

其实我是在 tmux 里面执行上面的指令的。

官方脚本启动

官方的其它一些指令,比如你可以用 NPM 的 script 来运行。

$ npm run start

在 CNPM 里面,npm script 还有下面几种指令

  • npm run dev:调试模式启动;
  • npm run test:跑测试;
  • npm run start:启动 CNPM;
  • npm run status:查看 CNPM 启动状态;
  • npm run stop:停止 CNPM。

小结

本文介绍了一些 CNPM 基础的部署方法,基本上能达到最小可用状态。

如果想要进阶定制一些 CNPM 的功能,请期待后续吧。ξ( ✿>◡❛)

以及一些写得不好和不对的地方,请多多指正哦。