Centos下通过docker搭建ghost博客
一些前言:
很早我就想搭个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>
参考资料: