作者: Jerry
連結: https://butterfly.js.org/posts/dc584b87/#Page-Front-matter
來源: Butterfly
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
前言
最近在阿里云上买了一台轻量服务器,初衷是用来做爬虫的,但是试了几天拿到的数据效果不太理想,资源闲置也是浪费干脆搭一个自己的Blog 来做记录和分享。
这篇文档就这么诞生了,主要是记录一下折腾Ghost 博客系统的过程。
安装Docker
本文使用的环境是CentOS 8.2(个人习惯使用RHEL 的系统,和Ghost 官方推荐的Ubuntu 在安装程序和创建用户的部分有一点点不一样而已。)
推荐使用一个用户账号进行下列操作,但是涉及到很多权限的修改。如果对Linux 不熟悉可以直接使用root 账号完成下列操作。
安装依赖
sudo yum install -y yum-utils
|
配置阿里云的镜像仓库
yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
|
更新yum 源
安装Docker 程序
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
yum install docker -y
警告:/var/cache/dnf/docker-ce-stable-ab4061364e2cf0db/packages/containerd.io-1.4.9-3.1.el8.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID 621e9f35: NOKEY Docker CE Stable - x86_64 21 kB/s | 1.6 kB 00:00 导入 GPG 公钥 0x621E9F35: Userid: "Docker Release (CE rpm) <[email protected]>" 指纹: 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 来自: https://mirrors.aliyun.com/docker-ce/linux/centos/gpg 确定吗?[y/N]: y
|
启动Docker
systemctl start docker
systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2021-09-24 20:46:19 CST; 51s ago
systemctl enable docker
|
配置阿里云Docker镜像加速
在阿里云控制台找到容器镜像服务,选择最下面的镜像加速器,获取加速器地址。注意每个用户的加速器地址不一致,需要自行去该页面获取。
在服务器上,复制上图中右下角红框中的代码,执行。完成后使用systemctl daemon-reload
和systemctl restart docker
重启docker 服务。
使用Docker-Compose 启动Ghost
安装Docker-Compose
可根据官方文档进行安装:https://docs.docker.com/compose/install/#alternative-install-options
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose -v
|
环境准备
建立永久的Ghost 和Mariadb 数据存储目录
mkdir /home/ray/ghost_data /home/ray/mariadb_data
|
创建独立的Docker 网络
docker network create ghost-network
|
使用compose 启动docker
在用户根目录创建文件docker-compose.yml
vim ~/docker-compose.yml
version: '2' services:
mariadb: image: mariadb:10.6.4 volumes: - '/home/ray/mariadb_data:/var/lib/mysql' environment: - ALLOW_EMPTY_PASSWORD=no - MARIADB_ROOT_PASSWORD=xxxxxx - MARIADB_USER=xxxxxx - MARIADB_PASSWORD=xxxxxx - MARIADB_DATABASE=ghost_database - MARIADB_MASTER_HOST=mariadb networks: - ghost-network ghost: image: ghost:4.15.0 ports: - '3301:2368' volumes: - '/home/ray/ghost_data:/var/lib/ghost/content' depends_on: - mariadb environment: - url=http://47.107.106.229:3301 - ALLOW_EMPTY_PASSWORD=no - GHOST_DATABASE_HOST=mariadb - GHOST_DATABASE_PORT_NUMBER=3306 - GHOST_DATABASE_NAME=ghost_database - GHOST_DATABASE_USER=root - GHOST_DATABASE_PASSWORD=xxxxxx - mail__transport=SMTP - mail__options__host=stmp.qq.com - mail__options__port=587 - [email protected] - mail__options__auth__pass=xxxxxxxxxxxxxx - [email protected] networks: - ghost-network
networks: ghost-network: external: true
|
使用docker-compose up
拉起服务,第一次拉起会比较慢,因为需要从docker hub 先下载配置中用到的mariadb 和ghost 的docker 镜像。
配置阿里云防火墙
在阿里云的控制台,添加规则放通TCP 3301 端口。
大功告成
然后通过浏览器访问http://47.107.106.229:3301 即可访问博客的主页。
通过http://47.107.106.229:3301/ghost 访问Ghost 控制台。
关于第一次使用注册账号的问题
我测试过将docker 0 的网络配置中的ipv4.dns
设置为外网的DNS 尝试去解析smtp.qq.com
尝试了几次都显示失败了。显示无法认证不确定是smtp 账号认证的问题还是dns 的问题。
不过在发送邮件之后遇到报错,直接刷新页面,然后使用刚刚填写的账号密码也可以直接进入ghost 的管理页面。
最后在GitHub上找到一个case ,大意是说docker-compose 的方式需要额外加入network_mode: network_mode: bridge
可以解决问题。但因为博客更换为Hexo 搭建,并没有做进一步尝试。