一些前言:

很早我就想搭个blog,N年前的标准答案是wordpress,撇开代码不谈,外观实在太落后了(来自外貌协会的一票否决),也轻微折腾了一下fork了一些基于laravel的博客、想着基于自己熟悉的框架也比较方便,甚至想着不如自己用go或者java全新写一个一切尽在掌握,均不了了之。

后来我“痛定思痛”想了下,我只是想要个美观的、功能满足需求的的博客系统,至于自定义做一些开发这种事,如果是可以动鼠标和敲命令解决的问题、我是绝对懒得写代码的。

于是我重新考察了一下流行的博客系统,Hexo/Ghost/Vuepress,最后我决定用Ghost,简单理由如下:

  • 默认就比较符合审美的简约风格(黑白),也可以自己换主题
  • 支持移动端良好访问
  • 支持markdown写法(用过md、这辈子都不想用doc)
  • 支持文章评论(通过插件或者gitalk)
  • 后台管理,可以选择接入数据库,也可以纯文档部署
  • 资料和开发工具支撑比较完善

那,决定了就安装部署呗,生产环境官方给的例子是ubuntu的安装,但我tx云用的是centos7,考虑了下我觉得不如用docker好了,毕竟docker现在来看早就是大势所趋,docker可以很好解决各种不同环境下的服务部署问题,docker既是技术力也是生产力、多学学也不亏。

下面正式开始安装部署教程:

1、更新yum

$ yum update

2、删除可能存在的旧版本

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

3、安装 yum-utils 组件,获取稳定的docker安装包。

$ sudo yum install -y yum-utils

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

注意:
有些安装教程会用下边的命令安装yum-utils,但个人发现centos7已经默认就启用了device-mapper和安装了lvm2,所以没必要安装那两个依赖,低版本的centos可能才需要。

#  preinstall utils 
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

4、安装docker

$ sudo yum install docker-ce docker-ce-cli containerd.io

5、安装docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

墙的关系这里很难下,我是直接本地下载了再scp传上服务器。

6、赋予docker-compose执行权限

sudo chmod +x /usr/local/bin/docker-compose

7、启动docker、给当前用户赋权

# start deamon and enable auto start when power on
sudo systemctl start docker
sudo systemctl enable docker

# add current user 
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo systemctl restart docker

8、配置ghost的docker-compose.yml

vim docker-compose.yml

version: '3.1'
services:
  ghost:
    image: ghost:3.36-alpine
    restart: always
    container_name: ghost
    ports:
      - 2368:2368
    depends_on:
      - mysql
    links:
      - mysql
    environment:
      database__client: mysql
      database__connection__host: mysql
      database__connection__user: root
      database__connection__password: xxxxyyyy
      database__connection__database: ghost
      url: https://www.dbaren.com
    volumes:
      - ./ghost-data:/var/lib/ghost/content
    network_mode: bridge
  mysql:
    image: mysql:5.7
    restart: always
    container_name: mysql
    volumes:
      - ./mysql-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: xxxxyyyy
    network_mode: bridge

启动:

$ docker-compose up -d

9、安装配置nginx代理2368端口

$ yum install nginx

$ sudo touch /etc/nginx/conf.d/blog.conf

server {
    listen 80;
    server_name www.dbaren.com;
    client_max_body_size 50M;
    access_log  /var/log/nginx/dbaren.com.access.log  main;
    error_log /var/log/nginx/dbaren.com.error.log     warn;

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   X-Forwarded-Proto https;
        proxy_connect_timeout   30;
        proxy_read_timeout      30;
        proxy_send_timeout      30;
        proxy_pass http://127.0.0.1:2368;
    }
}

10、配置highlight.js优化代码显示

Code injection -> Site Header

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.1/styles/darcula.min.css" integrity="sha512-0+Gq7jQLhuoMdL8EednGo8delKMhKim1t3XrvVGTqbJPfyv5f4HUJ0DTEN+3E+aM4RGEEfmVJOiomnP9olm4iw==" crossorigin="anonymous" />

我这里用的高亮主题是darcula,可以按自己需要的选的:highlight.js

Site footer

<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.1/highlight.min.js" integrity="sha512-U12+KlhI3X2EY7U4NJZ+O0wujKcaMQZHABtaiZtE8UrPiK1O3Y4cjBe0mMFyyBptdaf+eh45hqNdsayeLQcneg==" crossorigin="anonymous"></script>
<script >hljs.initHighlightingOnLoad();</script>

参考资料:

官方的安装文档

不折腾了, 决定使用Ghost写博客