Docker搭建个人博客--Halo和WordPress

1、Docker安装Halo与MySQL教程

用Docker安装个人博客的好处

Halo官方文档

0x00 创建 Docker 自定义桥接网络

docker network create halo-net

0x01 拉取 MySQL 镜像

docker pull mysql:8.0.27

0x02 创建 MySQL 数据目录

1
2
[root@yoon ~]# mkdir -p ~/.halo/mysql
[root@yoon ~]# rootdocker run --name halo-mysql -v ~/.halo/mysql:/var/lib/mysql -p 3307:33077 -e MYSQL_ROOT_PASSWORD=123456 --net halo-net --restart=unless-stopped -d mysql:8.0.27
1
2
3
4
5
释义
-e MYSQL_ROOT_PASSWORD=123455: 指定MySQL的登录密码为 123456
-v ~/.halo/mysql:/var/lib/mysql 命令: 将宿主机的目录 ~/.halo/mysql 挂载到容器内部的目录 /var/lib/mysql,默认情况下 MySQL 将向 ~/.halo/mysql 写入其数据文件。
--net halo-net: 将该容器加入到 halo-net 网络,连接到 halo-net 网络的任何其他容器都可以访问 halo-mysql容器上的所有端口。
-p 3307:33077 将docker的33077端口映射到主机的3307端口

0x03 进入 MySQL 容器中登录 MySQL 并创建 Halo 需要的数据库

  • (1) halo-mysql 为 MySQL 实例的容器名称

进入halo-mysql容器

docker exec -it halo-mysql /bin/bash

修改/etc/mysql/my.cnf

① 首先测试容器是否有vim或者vi命令

在图中可看到无vim包,apt-get换源下载vim,国内访问镜像站实在是太慢了,所以需要换源,但是因为无法编辑文件,所以需要绕一下。因为该源是不用GPG验证的,可能不安全,但因为docker容器没有验证GPG的工具所以只能先用这个源,最后再换回正式源。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#复制原文件备份
mv /etc/apt/sources.list /etc/apt/sources.list.bak

#修改sources.list
cat <<EOF >/etc/apt/sources.list
deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free
deb http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free
EOF

#更新apt
apt update

#安装vim命令
apt install vim

#还原sources.list文件
mv /etc/apt/sources.list.bak /etc/apt/sources.list

#修改mysql端口号
vim /etc/mysql/my.cnf

修改后的docker中mysql端口号为33077

重启mysql

docker restart halo-mysql

使用dcoker logs docker_name可以查看docker日志

  • (2) 登录 MySQL
1
mysql -u root -p
  • (3) 输入 MySQL 数据库密码
  • (4) 创建数据库
1
2
3
#查看端口号
show global variables like 'port';
create database halodb character set utf8mb4 collate utf8mb4_bin;

使用Navicat测试能否连接IP:3307的数据库

  • (5) 使用 exit退出MySQL 并退出容器

0x04 创建 Halo 工作目录

mkdir ~/.halo && cd ~/.halo

0x05 下载示例配置文件到工作目录

1
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml

0x06 编辑配置文件,配置数据库,其他配置请参考参考配置

vim application.yaml

你需要做如下几个步骤:

  • 注释 H2 database configuration.部分
  • 启用 MySQL database configuration.部分
  • 修改 datasource 下的 url 中的 ip 地址部分为容器名称并修改密码为您设定的 MySQL 密码

修改后的内容如下:

1
2
3
4
5
6
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://halo-mysql:3307/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: 123456

0x07 创建Halo容器实例

docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --net halo-net --restart=unless-stopped halohub/halo:1.5.1

0x08 打开 http://ip:端口号 即可看到安装引导界面

0x09 如果有域名,可以使用 Caddy 进行反向代理

1、安装caddy

caddy目前是不支持centos8的,所以我的服务器版本是centos 7.6

1
2
3
4
5
6
7
# 安装 Caddy 软件包,-y代表下载过程不询问
yum install caddy -y

# 下载 Halo 官方的 Caddy 配置模板
curl -o /etc/caddy/conf.d/Caddyfile.conf --create-dirs https://dl.halo.run/config/Caddyfile
# 使用 vim 编辑 Caddyfile
vim /etc/caddy/conf.d/Caddyfile.conf

Caddyfile.conf模板如下:

1
2
3
4
5
6
7
https://www.simple.com {
gzip
tls xxxx@xxx.xx
proxy / localhost:port {
transparent
}
}
  1. https://www.simple.com 改为自己的域名,即自己申请的域名。
  2. tls 后面的 xxxx@xxx.xx 改为自己的邮箱地址,这是用于自动申请 SSL 证书用的。需要注意的是,不需要你自己配置 SSL 证书,而且会自动帮你续签。
  3. localhost:port 请将 port 修改为 Halo 的运行端口,默认为 8090。

2、修改完成后启动Caddy服务

1
2
3
4
5
6
7
8
9
10
11
# 开启自启 Caddy 服务
systemctl enable caddy

# 启动 Caddy
service caddy start

# 停止运行 Caddy
service caddy stop

# 重启 Caddy
service caddy restart

到这里,关于 Caddy 反向代理的配置也就完成了,现在你可以访问一下自己的域名,并进行 Halo 的初始化了。
如果访问不了,可能是80号端口被占用了,查看一下80号端口使用情况。
要注意一点是博客地址应改为你的域名地址,否则会造成资源获取不成功。

直接用域名访问Halo即可。

Halo主题仓库

2、Wordpress安装

参考博客

1
2
3
4
5
6
7
8
# 先创建MySQL
[root@yoon ~] docker run --name halo-mysql -v ~/.halo/mysql:/var/lib/mysql -p 3307:33077 -e MYSQL_ROOT_PASSWORD=123456 --net halo-net --restart=unless-stopped -d mysql:8.0.27
# 进入到MySQL容器中
[root@yoon ~] docker exec -it halo-mysql /bin/bash
# 创建wordpress数据库
mysql> create database wordpress;
# 再创建wordpress,MySQL和wordpress在同一个网络内
[root@yoon ~] docker run --name wordpress -p 8000:80 --net halo-net --restart=unless-stopped -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=123456 -e WORDPRESS_DB_NAME=wordpress -d wordpress

输入IP:8000即可访问wordpress

3、oneinstack安装Nginx多域名配置

参考链接

------ 本文结束感谢您的阅读 ------
0%