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

2016-07-12 20:03:31 +08:00
 XadillaX

原文链接: https://xcoder.in/2016/07/09/lets-cnpm-base-deploy/

本章会介绍 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 。
4907 次点击
所在节点    Node.js
4 条回复
henryxie2093
2016-07-12 20:51:02 +08:00
死月大大 qwq
fudanglp
2016-07-12 20:57:52 +08:00
这个配色 真的舒服吗
XadillaX
2016-07-12 21:00:52 +08:00
@fudanglp 你需要 @livid
moxhuis
2016-08-04 16:25:14 +08:00
亮度调到最低看的,,简直瞎

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/292046

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX