zoukankan      html  css  js  c++  java
  • 基于nodejs的开源CMS博客搭建-keystone篇

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

    当然我们可以选择node来作为我们开发的动力,这里又有很多开源的基于node的CMS可以选择了

    1 node的框架

    express
    koa
    thinkjs 360开发的node框架,有点类似thinkphp 可以直接写async和awaite 支持ts
    sails.js
    阿里的egg
    hapi

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

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

    2 好看的demo

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

    3 安装

    1. 首先安装node和mongodb

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

    3. 安装yeoman
      npm install -g yeoman

    4. 创建新目录
      mkdir test
      cd test

    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

  • 相关阅读:
    算法——(转)动态规划入门
    iOS学习——(转)多线程
    iOS崩溃日志ips文件解析
    iOS学习——核心动画
    iOS学习——核心动画之Layer基础
    iOS学习——Quartz2D学习之UIKit绘制
    iOS学习——Quartz2D学习之DrawRect
    iOS模拟器使用
    (转)浅谈Session与Cookie的区别与联系
    Android Studio 受不了了
  • 原文地址:https://www.cnblogs.com/bhaltair/p/6939634.html
Copyright © 2011-2022 走看看