Ghost开发相关问题
时间:2022-07-23
本文章向大家介绍Ghost开发相关问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.介绍
Ghost是一个由NodeJS开发的CMS博客系统
2.官网
3.遇到的问题
问题1:如何编写自己的主页?
当我们不想直接进入网站就是那些博客文章的时候,但是他直接index.hbs就是文章列表,如果删了不就看不到文章列表了
解决:
使用home.hbs覆盖首页,进行个性化页面编写。官方文档有解释,
image.png
问题2:如何自定义页面和路由?
比如我首页自定义了页面,但是我需要一个文章列表,页面怎么配置呢
解决:
这个问题确实很坑,看看官方怎么说的
image.png
他意思是如果你要一个about
页面,那么你就新建一个page-about.hbs
的文件,这个文件默认就是访问/about/
路径的页面
但是我特么还是不行,最后看到了issue上的说法
image.png
意思就是,你需要在文章发表的地方新建一个文章,标题可以为about
,然后可以看到路径就自动是about
image.png
还有个关键点,就是选中这个选项,把文章当成页面,这样他就会被使用page-about.hbs
渲染
问题3:服务器部署的问题
提前需要吧nodejs,mysql,nginx等安好 使用官方的ghost-cli工具,坑太多,各种有事node版本问题,nvm问题,操作系统问题,,,都是扯淡
解决:
其实直接把官方的安装包拿下来用即可
image.png
$ wget https://github.com/TryGhost/Ghost/releases/download/1.23.0/Ghost-1.23.0.zip
$ yum -y install unzip
$ mkdir ghost
$ cd ghost
$ unzip Ghost-1.23.0.zip
$ npm install
然后打断一下,需要配置一下mysql数据库(注意新建个数据库,这里填你新建的数据库名称),还有url,由于是生产环境,所以直接改生产环境的配置文件,当然生产环境也可以用sqlite,自己搞去
$ vim current/core/server/config/env/config.production.js
{
"url": "http://你的地址啊",
"database": {
"client": "mysql",
"connection": {
"host" : "127.0.0.1",
"user" : "root",
"password" : "",
"database" : "ghost" // 注意新建个数据库,这里填你新建的数据库名称
}
},
"paths": {
"contentPath": "content/"
},
"logging": {
"level": "info",
"rotation": {
"enabled": true
},
"transports": ["file", "stdout"]
}
}
接下来是同步数据库,我们需要先安个全局工具
$ npm install -g knex-migrator
然后开始同步,注意设置为生产环境!
$ NODE_ENV=production knex-migrator init
同步完成,最后就是pm2部署
$ npm install -g pm2
$ NODE_ENV=production pm2 start index.js
访问http://ip:2368即可 访问http:ip:2368/ghost进入管理后台
参考资料:
- springmvc学习笔记--mybatis--使用插件自动生成实体和mapper
- velocity的一些用法
- String.split()用法以及特殊分隔符注意,ps:|
- Mybatis在idea中错误:Invalid bound statement (not found)
- java字符编码和oracle乱码
- ehcache报错
- java继承覆盖与向上转型,权限
- java变量的加载顺序
- java类的初始化和对象的创建顺序
- 附近的人位置距离计算方法
- java中复制对象通过反射或序列化
- Java String.split()用法小结
- java线程(2)--同步和锁
- java设计模式(三)--抽象工厂模式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 我参与了两个接近100k+star的开源项目!聊聊开源项目贡献指南
- 最新更新 | Kafka - 2.6.0版本发布新特性说明
- 利用Libra进行机器学习和深度学习
- I2C总线架构 之 总线驱动
- 一文讲透“布隆过滤器”
- 基于PySpark的流媒体用户流失预测
- 盘一盘 Python 特别篇 21 - 分箱之 qcut
- 挖洞经验 | 以SSRF获取Zimbra邮件服务的用户明文凭据
- Office文件追踪方案探索
- 如何全方位地给 SQL Server 做测试
- 下下下一代防火墙关键技术漫谈
- Mysql事务隔离级别
- ent orm笔记1---快速尝鲜
- UsoDllLoader:一款功能强大的武器化特权文件写入工具
- 宇智波程序笔记10-为什么你使用的 Spring Security OAuth 过期了