Docker环境下部署Ghost开源内容管理系统

简介: 【5月更文挑战第9天】Docker环境下部署Ghost开源内容管理系统

一、Ghost介绍

1.1 Ghost简介

Ghost是一款用于博客、出版物和内容网站的免费且开源的CMS(内容管理系统),它是完全基于JavaScript编写的。Ghost的主要特点是简单易用、高度可扩展、精美的设计和优秀的性能。

1.2 Ghost特点

  • 简单易用:Ghost的用户界面非常简单和直观,因此非常易于使用。它提供了一个简单的写作体验,让您专注于写作。

  • 可扩展:Ghost提供了一个强大的API,使得开发者可以轻松地扩展其功能,并将其与其他应用程序集成。

  • 设计优美:Ghost的设计非常美观和优雅,它为您提供了多种主题和自定义选项来满足您的需求。

  • 性能优越:Ghost的性能非常好,因为它是基于Node.js构建的,使用了非阻塞I/O,可以处理大量的请求和并发连接。

1.3 Ghost使用场景

Ghost适用于各种类型的博客、出版物和内容网站,包括但不限于以下场景。

  • 个人博客:Ghost提供简单易用的界面,使个人博主能够轻松创建和管理自己的博客,并分享自己的想法、故事和经验。

  • 新闻网站:Ghost的高度可扩展性使其成为构建新闻网站的理想选择。它具有良好的性能,可以处理大量的文章和高流量的访问。

  • 音乐/艺术家网站:Ghost的精美设计和优秀的性能使其非常适合用于展示音乐家、艺术家和其他创意人才的作品和信息。

  • 企业博客:许多企业都拥有自己的博客来发布公司新闻、产品更新、行业见解等内容。Ghost提供了一个灵活且易于定制的平台,可以满足企业博客的需求。

  • 教育网站:Ghost的简单易用性使其成为创建教育博客或课程网站的理想选择。教师可以使用Ghost发布课程材料、学生作业和其他相关内容。

    二、本地环境介绍

    2.1 本地环境规划

    本次实践为个人测试环境,操作系统版本为centos7.6。

hostname IP地址 操作系统版本 Docker版本
jeven 192.168.3.166 centos 7.6 20.10.17

2.2 本次实践介绍

1.本次实践部署环境为个人测试环境,生产环境请谨慎使用;
2.在Docker环境下成功部署Ghost开源内容管理系统。

三、本地环境检查

3.1 检查Docker服务状态

检查Docker服务是否正常运行,确保Docker正常运行。

[root@jeven ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2023-06-11 19:08:26 CST; 7h ago
     Docs: https://docs.docker.com
 Main PID: 11727 (dockerd)
    Tasks: 10
   Memory: 133.4M

3.2 检查Docker版本

检查Docker版本

[root@jeven ~]# docker -v 
Docker version 20.10.17, build 100c701

3.3 检查docker compose 版本

检查Docker compose版本,确保2.0以上版本。

[root@jeven ~]# docker compose version
Docker Compose version v2.6.0

四、下载Ghost镜像

在docker hub下载Ghost镜像,版本为latest。

[root@jeven ~]# docker pull    ghost
Using default tag: latest
latest: Pulling from library/ghost
72a69066d2fe: Already exists 
24892ef5fd86: Pull complete 
b352cb85f08b: Pull complete 
d184ccfb32cc: Pull complete 
a1aa0950435d: Pull complete 
6af76194e172: Pull complete 
6ecb9543cf3f: Pull complete 
f5dc5f4a448f: Pull complete 
c5c6987f6d28: Pull complete 
Digest: sha256:8123a7eabc533746cfa7302c71b780e763ee292f92c10f44e12d08baa0b489f9
Status: Downloaded newer image for ghost:latest
docker.io/library/ghost:latest

五、部署Ghost开源内容管理系统

5.1 创建数据目录

  • 创建数据目录
mkdir -p /data/ghost

5.2 创建Ghost容器

  • 使用docker-cli快速创建Ghost容器
docker run -d \
   --restart always \
   --name ghost \
   -p 2368:2368 \
   -v /data/ghost:/var/lib/ghost/content \
   -e NODE_ENV=development \
   -e url=http://192.168.3.166:2368 \
   ghost

在这里插入图片描述

  • 目录授权
chmod -R 777 /data/ghost/
  • 重启ghost容器
 docker restart ghost

5.3 检查Ghost容器状态

检查Ghost容器状态,确保容器正常启动。

[root@jeven ghost]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS          PORTS                                       NAMES
d9c108ddbd3c   ghost     "docker-entrypoint.s…"   About a minute ago   Up 26 seconds   0.0.0.0:2368->2368/tcp, :::2368->2368/tcp   ghost

5.4 检查Ghost容器运行日志

查Ghost容器运行日志,检查有无报错,确保Ghost服务正常启动。

[root@jeven ghost]#  docker logs ghost 
[2023-06-11 18:43:17] INFO Ghost is running in development...
[2023-06-11 18:43:17] INFO Listening on: 0.0.0.0:2368
[2023-06-11 18:43:17] INFO Url configured as: http://192.168.3.166:2368/
[2023-06-11 18:43:17] INFO Ctrl+C to shut down
[2023-06-11 18:43:17] INFO Ghost server started in 0.264s
[2023-06-11 18:43:17] WARN Database state requires initialisation.
[2023-06-11 18:43:17] INFO Creating table: posts
[2023-06-11 18:43:17] INFO Creating table: posts_meta
[2023-06-11 18:43:17] INFO Creating table: users
[2023-06-11 18:43:17] INFO Creating table: oauth
[2023-06-11 18:43:17] INFO Creating table: posts_authors
[2023-06-11 18:43:17] INFO Creating table: roles
[2023-06-11 18:43:17] INFO Creating table: roles_users
[2023-06-11 18:43:17] INFO Creating table: permissions
[2023-06-11 18:43:17] INFO Creating table: permissions_users
[2023-06-11 18:43:17] INFO Creating table: permissions_roles
[2023-06-11 18:43:17] INFO Creating table: settings
[2023-06-11 18:43:17] INFO Creating table: tags
[2023-06-11 18:43:17] INFO Creating table: posts_tags
[2023-06-11 18:43:17] INFO Creating table: invites
[2023-06-11 18:43:17] INFO Creating table: brute
[2023-06-11 18:43:17] INFO Creating table: sessions
[2023-06-11 18:43:17] INFO Creating table: integrations
[2023-06-11 18:43:17] INFO Creating table: webhooks
[2023-06-11 18:43:17] INFO Creating table: api_keys
[2023-06-11 18:43:17] INFO Creating table: mobiledoc_revisions
[2023-06-11 18:43:17] INFO Creating table: members
[2023-06-11 18:43:17] INFO Creating table: products
[2023-06-11 18:43:17] INFO Creating table: offers
[2023-06-11 18:43:17] INFO Creating table: benefits
[2023-06-11 18:43:17] INFO Creating table: products_benefits
[2023-06-11 18:43:17] INFO Creating table: members_products
[2023-06-11 18:43:17] INFO Creating table: members_payment_events
[2023-06-11 18:43:17] INFO Creating table: members_login_events
[2023-06-11 18:43:17] INFO Creating table: members_email_change_events
[2023-06-11 18:43:17] INFO Creating table: members_status_events
[2023-06-11 18:43:17] INFO Creating table: members_product_events
[2023-06-11 18:43:17] INFO Creating table: members_paid_subscription_events
[2023-06-11 18:43:17] INFO Creating table: labels
[2023-06-11 18:43:17] INFO Creating table: members_labels
[2023-06-11 18:43:17] INFO Creating table: members_stripe_customers
[2023-06-11 18:43:17] INFO Creating table: members_stripe_customers_subscriptions
[2023-06-11 18:43:17] INFO Creating table: offer_redemptions
[2023-06-11 18:43:17] INFO Creating table: members_subscribe_events
[2023-06-11 18:43:17] INFO Creating table: stripe_products
[2023-06-11 18:43:17] INFO Creating table: stripe_prices
[2023-06-11 18:43:17] INFO Creating table: actions
[2023-06-11 18:43:17] INFO Creating table: emails
[2023-06-11 18:43:17] INFO Creating table: email_batches
[2023-06-11 18:43:17] INFO Creating table: email_recipients
[2023-06-11 18:43:17] INFO Creating table: tokens
[2023-06-11 18:43:17] INFO Creating table: snippets
[2023-06-11 18:43:17] INFO Creating table: temp_member_analytic_events
[2023-06-11 18:43:17] INFO Creating table: custom_theme_settings
[2023-06-11 18:43:17] INFO Model: Product
[2023-06-11 18:43:17] INFO Model: Tag
[2023-06-11 18:43:17] INFO Model: Role
[2023-06-11 18:43:17] INFO Model: Permission
[2023-06-11 18:43:18] INFO Model: User
[2023-06-11 18:43:41] INFO Model: Post
[2023-06-11 18:43:41] INFO Model: Integration
[2023-06-11 18:43:42] INFO Relation: Role to Permission
[2023-06-11 18:43:42] INFO Relation: Post to Tag
[2023-06-11 18:43:42] INFO Relation: User to Role
[2023-06-11 18:43:42] INFO Database is in a ready state.
[2023-06-11 18:43:42] INFO Ghost database ready in 25.315s
[2023-06-11 18:43:43] INFO Ghost booted in 26.941s
[2023-06-11 18:43:43] INFO Adding offloaded job to the queue
[2023-06-11 18:43:43] INFO Scheduling job update-check at 9 33 8 * * *. Next run on: Mon Jun 12 2023 08:33:09 GMT+0000 (Coordinated Universal Time)
[2023-06-11 18:43:44] INFO Ghost URL Service Ready in 27.199s
[2023-06-11 18:44:44] WARN Ghost is shutting down
[2023-06-11 18:44:44] WARN Ghost has shut down
[2023-06-11 18:44:44] WARN Ghost was running for a minute
[2023-06-11 18:44:45] INFO Ghost is running in development...
[2023-06-11 18:44:45] INFO Listening on: 0.0.0.0:2368
[2023-06-11 18:44:45] INFO Url configured as: http://192.168.3.166:2368/
[2023-06-11 18:44:45] INFO Ctrl+C to shut down
[2023-06-11 18:44:45] INFO Ghost server started in 0.25s
[2023-06-11 18:44:45] INFO Database is in a ready state.
[2023-06-11 18:44:45] INFO Ghost database ready in 0.392s
[2023-06-11 18:44:46] INFO Ghost booted in 1.71s
[2023-06-11 18:44:46] INFO Adding offloaded job to the queue
[2023-06-11 18:44:46] INFO Scheduling job update-check at 3 38 15 * * *. Next run on: Mon Jun 12 2023 15:38:03 GMT+0000 (Coordinated Universal Time)
[2023-06-11 18:44:47] INFO Ghost URL Service Ready in 2.014s

六、注册Ghost账号

6.1 访问Ghost首页

访问地址:http://192.168.3.166:2368/,将IP替换为自己服务器IP地址,如果无法访问到该页面,注意自己服务器的防火墙是否关闭或者放行相关端口,使用云服务器则还需要设置安全组规则。

在这里插入图片描述

6.2 进入账号注册页面

访问地址: http://192.168.3.166:2368/ghost

在这里插入图片描述

6.3 填写账号信息

Site title: myweb
Full name: admin
Email address: admin@qq.com
Password: 自定义。

在这里插入图片描述
在这里插入图片描述

6.4 进入Ghost后台管理页面

>

在这里插入图片描述

七、发布网站内容

7.1 进入内容编辑页面

按如下操作,进入内容编辑页面。

在这里插入图片描述

7.2 编辑网站内容

编辑网站内容,选择pulish。

在这里插入图片描述

7.3 查看网站内容

访问地址: http://192.168.3.166:2368/,查看新增网页内容

在这里插入图片描述

在这里插入图片描述

相关文章
|
14天前
|
Linux iOS开发 Docker
MyEMS开源系统安装之Linux/macOS上的DOcker
本指南详细介绍了如何在Linux/macOS上使用Docker部署MyEMS系统。主要内容包括:前置条件(如安装Docker、npm和MySQL),以及分步骤部署各个组件(如myems-api、myems-admin、myems-modbus-tcp等)。每个步骤涵盖源代码复制、环境配置、镜像构建、容器运行及日志管理等操作,并提供了多平台构建的支持。最后,指南还说明了默认端口和登录凭据,帮助用户快速启动并访问MyEMS的管理界面和Web界面。
43 1
|
1月前
|
消息中间件 数据可视化 Kafka
docker arm架构部署kafka要点
本内容介绍了基于 Docker 的容器化解决方案,包含以下部分: 1. **Docker 容器管理**:通过 Portainer 可视化管理工具实现对主节点和代理节点的统一管理。 2. **Kafka 可视化工具**:部署 Kafka-UI 以图形化方式监控和管理 Kafka 集群,支持动态配置功能, 3. **Kafka 安装与配置**:基于 Bitnami Kafka 镜像,提供完整的 Kafka 集群配置示例,涵盖 KRaft 模式、性能调优参数及数据持久化设置,适用于高可用生产环境。 以上方案适合 ARM64 架构,为用户提供了一站式的容器化管理和消息队列解决方案。
100 10
|
1月前
|
算法 Shell 定位技术
在Docker环境下搭建openvslam/orb_slam3的步骤和问题总结
总的来说,搭建openvslam或orb_slam3的过程需要一些耐心和技术知识,但只要你遵循上述步骤,并且在遇到问题时进行适当的调试,你应该能够成功搭建并运行openvslam或orb_slam3。
81 11
|
2月前
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
162 28
|
2月前
|
Ubuntu 安全 Docker
Ubuntu下部署及操作Docker技巧
以上就是在Ubuntu下部署及操作Docker的具体步骤。但这只是冰山一角,Docker的魅力远不仅如此。你可以将其视为存放各种工具的小箱子,随时随地取用,极大地提升工作效率。你也可以私人订制,适应不同的开发环境,就像一个拥有各种口味冰淇淋的冰箱,满足各种各样的需求。好了,现在你已经掌握了基本的Docker运用技巧,快去尝试使用吧!记住,沉浸在探索中,你会找到无尽的乐趣和满满的收获。
172 23
|
2月前
|
Ubuntu 关系型数据库 MySQL
在Ubuntu系统的Docker上安装MySQL的方法
以上的步骤就是在Ubuntu系统的Docker上安装MySQL的详细方法,希望对你有所帮助!
288 12
|
2月前
|
存储 SQL 关系型数据库
docker部署n9e开源版本7.4.0
n9e开源版本7.4.0
151 0
|
Web App开发 测试技术 API
使用PHP搭建Web版Docker管理系统实践
版权声明:作者:汤青松 https://blog.csdn.net/u013431141/article/details/81612523 一、背景 团队中使用容器比较频繁,但并不是所有人都可以登陆服务器去执行命令,但是又需要用到docker,所以有一个需求通过web来管理docker,而其他语言并不怎么熟悉,后期维护成本比较高,所以笔者采用PHP来管理容器。
1956 0
|
30天前
|
开发者 Docker 容器
获取Docker基础使用方法:让容器化变得轻松。
对于Docker的初学者来说,了解这些基础知识点就足够了。实践是最好的老师,越是动手操作,对Docker的理解会越深。祝阅读这篇文章的开发者们一切顺利,愿你在Docker的海洋中航行顺利!
84 17
|
1月前
|
关系型数据库 MySQL Docker