阿拉丁和灯

Thoughts, stories and ideas.



Ghost简介和起步实践


Ghost是一个专注于内容发布的开源博客平台。其特点是:

  • 使用Markdown作为编辑和输入的语言
  • 后台使用Node.js
  • 使用sqlite3作为数据库
  • 使用Handlebar作为模板语言

Ghost的安装

可以有不同的方法来安装Ghost,包括:

Docker被证明是快速方便的跑服务端应用的方式。今天就用Docker Container跑起了Ghost,非常方便。

通过Docker Container方式安装和启动Ghost

步骤如下:

  1. 假设已经安装了Docker,并已启动Docker服务。如果没有,运行以下命令进行安装和启动(以CentOS Linux为示例)
    yum install docker
    docker -d &

  2. 运行docker命令跑docker container
    docker run --name some-ghost -p 8080:2368 -d ghost
    ghost的默认端口是2368,container跑起来的时候映射到host上的8080。
    以上的命令实际上是到Docker registry服务器上去取tag叫ghost的image,然后用这个Image跑起一个container。Image的详情页面是: https://registry.hub.docker.com/_/ghost/

  3. 访问http://localhost:8080 ,就可以看到blog页面了,要访问管理后台,用http://localhost:8080/ghost

需要注意的是,用Docker container的方式启动之后,Ghost的启动配置是开发模式,其端口是2368,安装位置是/var/lib/ghost,不同于前面下载zip包然后安装的方式中的/var/www/ghost。并且theme的目录是/var/lib/ghost/themes,也不同于zip包安装方式中的/var/www/ghost/content/themes

安装Theme

Ghost本身奉行极简主义,要实现更丰富的页面功能,需要用到theme。我们可以在前面安装好的ghost上添加自己的主题。

  1. 下载主题
    这个网站列出了很多的http://www.allghostthemes.com,其中的BiosVision和Futura是免费的和收费的里面不错的。GhostChina网站使用的貌似就是Futura主题。可以下载BiosVision主题,下载后得到一个zip包。
  2. 安装主题
    /var/lib/ghost/themes目录下包含默认主题casper,将前面下载得到的BiosVision.zip解压缩到这个目录下,然后重启Ghost,再访问http://localhost.cn:8080/ghost ,Settings里面就可以选择这个主题了。具体步骤如下
    复制文件到Docker container:
    docker run --name some-ghost -v /root/themes:/mnt/ghost-themes -p 8080:2368 -d ghost
    docker exec -it some-ghost bash
    cp -r /mnt/ghost-themes/BiosVision /var/lib/ghost/themes
    重启ghost
    docker stop some-ghost
    docker start some-ghost
  3. 定制主题
    vi /root/BiosVision/sidebar.hbs
    docker exec -it some-ghost bash
    cp /mnt/themes/sidebar.hbs /var/lib/ghost/themes/BiosVision/
    cp /var/lib/ghost/themes/BiosVision/sidebar.hbs /var/lib/ghost/themes/BiosVision/partials/sidebar.hbs
    exit
    docker restart some-ghost

关联域名

申请域名,wuyijun.cn,然后在主机上使用nginx做反向服务器,将wuyijun.cn的域名关联到ghost container的端口8080。Nginx可以支持将发送到不同域名的请求转发给不同的端口。具体步骤如下:

  1. 安装nginx
    yum install nginx
  2. 编辑nginx配置文件/etc/nginx/nginx.conf
    ...
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  *.xdguoyuan.cn;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        proxy_pass         http://127.0.0.1:8069;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
    server {
        listen       80;
        listen       [::]:80;
        server_name  *.wuyijun.cn;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        proxy_pass         http://127.0.0.1:8080;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
    ...

配置好之后重启Nginx

service nginx restart

(参考 http://www.cyberciti.biz/faq/nginx-linux-restart/)

升级

  1. 备份内容
    • 登录到Ghost管理后台备份内容(目前仅能备份文字)和主题(Theme)
    • 用docker cp命令复制images目录
  2. 升级容器
    • 用docker pull命令更新ghost image
    • 用docker rename命令将原先的ghost容器改名
    • 用docker run命令启动一个新的ghost容器,名字用之前的名字
  3. 恢复内容
    • 登录到Ghost管理后台恢复主题,恢复文章内容
    • 用docker cp命令恢复images目录
    • 用docker restart命令重新启动Ghost容器

总结

Ghost很好,专注,简洁。用Docker方式运行Ghost服务非常方便。值得大家尝试。

参考资料

  1. 如何制作Ghost主题
    http://docs.ghost.org/zh/themes
  2. Hacking ghost theme
    https://www.timofejew.com/hacking-ghost-themes/
  3. GhostChina
    http://www.ghostchina.com
  4. AllGhostThems.com
    http://allghostthemes.com
  5. Exploring Docker container's file system
    http://stackoverflow.com/questions/20813486/exploring-docker-containers-file-system
  6. Copy files from docker host to container
    http://stackoverflow.com
  7. Docker command line reference
    https://docs.docker.com/reference/commandline/cli/
  8. How to restart Ghost
    https://www.a2hosting.com/kb/installable-applications/optimization-and-configuration/ghost1/restarting-ghost
  9. How to change ghost post excerpt length
    https://www.ghostforbeginners.com/how-to-change-post-excerpt-length/
  10. Ghost theme structure
    https://www.ghostforbeginners.com/ghost-theme-structure/
  11. How to install ghost on CentOS
    https://www.howtoinstallghost.com/how-to-install-ghost-on-centos-server-6-4/
  12. How Nginx processes a request
    http://nginx.org/en/docs/http/request_processing.html


View or Post Comments