基于nodejs的开源CMS博客搭建-keystone篇

如今前端搭建一个CMS有不少选择,能够用php,不过据说php立刻也考虑使用vue了。基于php的有wordpress,typora等,都是很成熟的cms。
其它的还有静态博客,如hexo,jekyll,敲一敲命令,就能够部署到github或者阿里云上面。php

固然咱们能够选择node来做为咱们开发的动力,这里又有不少开源的基于node的CMS能够选择了css

1 node的框架

express
koa
thinkjs 360开发的node框架,有点相似thinkphp 能够直接写async和awaite 支持ts
sails.js
阿里的egg
hapi前端

今天咱们要讲的是keystone,仓库在这里 https://github.com/keystonejs/keystonevue

官网在这里 http://keystonejs.com/node

2 好看的demo

http://www.sydjs.com/
http://makeandbuild.com/nginx

3 安装

  1. 首先安装node和mongodbgit

  2. 安装keystone-generaotr
    npm install -g generator-keystonegithub

  3. 安装yeoman
    npm install -g yeomanweb

  4. 建立新目录
    mkdir test
    cd testredis

  5. 生成
    yo keystone

  6. 启动
    node keystone
    打开浏览器的3000端口你就能够看到你的项目了

4 目录结构

|--lib
|  定制的库和代码
|--models
|  程序的数据库模型
|--public
|  公开的静态文件 (css、js、images等)
|--routes
|  |--api
|  |  程序的api控制器
|  |--views
|  |  程序的视图控制器
|  |--index.js
|  |  初始化程序的路由和视图
|  |--middleware.js
|  |  为路由定制的中间件
|--templates
|  |--includes
|  |  通用的 .jade 组件放这里
|  |--layouts
|  |  基础 .jade 布局放这里
|  |--mixins
|  |  通用的 .jade mixins放这里
|  |--views
|  |  程序的视图模板
|--updates
|  数据组装和迁移脚本
|--package.json
|  给npm的项目配置
|--web.js
|  启动程序的主脚本

5 设置参数

若是你学过express 那么这些参数都很简单

有3种方式配置keystone的参数

  1. keystone.init( object )
  2. keystone.set(key, object)
  3. 在.env环境中配置 仅有部分配置项支持

env参数 影响缓存已编译模板
views 放程序视图模板的路径

5.1 设置模板引擎

'views': 'templates/views',
    'view engine': '.hbs',
    'custom engine': handlebars.create({
        layoutsDir: 'templates/views/layouts',
        partialsDir: 'templates/views/partials',
        defaultLayout: 'default',
        helpers: new require('./templates/views/helpers')(),
        extname: '.hbs',
    }).engine,

5.2 mongodb的设置

若是你的Mongodb在阿里云上或者在其余主机上,须要自定义,由于默认是localhost
MONGO_URI=mongodb://your-server/database-name

5.3 https服务器参数

能够选用nginx或者node提供的https服务器
若是选择keystone提供额,须要设置下面的参数
ssl
ssl key 指向SSL秘钥的路径
ssl cert 指向ssl证书的路径
ssl port 启动ssl服务器的端口,默认为3001

5.4 配置文件.env不要上传到你的代码仓库

mongo process.env.MONGO_URI || "mongodb://localhost/your-db"

5.5 配置管理界面参数 - 富文本编辑器

wysiwyg 所见即所得

keystone.set('wysiwyg additional options', {
    external_plugins: {
        'image':'http://bhaltair.oss-cn-shanghai.aliyuncs.com/tinyMCE/plugins/image/plugin.min.js'
    },
    selector: "textarea",  // change this value according to your HTML
    plugin: 'textpattern',
    textpattern_patterns: [
        {start: '*', end: '*', format: 'italic'},
        {start: '**', end: '**', format: 'bold'},
        {start: '#', format: 'h1'},
        {start: '##', format: 'h2'},
        {start: '###', format: 'h3'},
        {start: '####', format: 'h4'},
        {start: '#####', format: 'h5'},
        {start: '######', format: 'h6'},
        {start: '1. ', cmd: 'InsertOrderedList'},
        {start: '* ', cmd: 'InsertUnorderedList'},
        {start: '- ', cmd: 'InsertUnorderedList'}
    ]   
    
})

5.6 用户认证参数

cookie secret 浏览器cookies的加密秘钥,最好设为一个长长的随机字符串
session store 默认存在内存中,你能够设置为mongo 或者conncet-redis

6 使用pm2部署你的本地应用的远程服务器

设置你的云服务器和github的ssl登陆 设置你本地主机到你的云服务器的ssl登陆 配置pm2的.echosystem.config.js pm2 deploy

相关文章
相关标签/搜索