【Web开发】docker+halo搭建个人博客
契源
最近“白嫖”了一个月的腾讯云云服务器,想来闲着不如用它来试试搭建一个个人博客主页,博客框架我选用halo。
腾讯云配置
腾讯云服务器配置账号密码等步骤不必多说,系统我选用的Ubuntu Server 20.04 LTS 64位
这个系统,配置完成后使用FinalShell
成功连接即可。
初始配置
首先进入到系统,进行初始配置,先重置管理员密码,切换到管理员身份
# 重置管理员密码
su password
# 切换管理员身份
su
- 1
- 2
- 3
- 4
之后开启bbr
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf && echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf && sysctl -p
- 1
软件列表升级以及预装软件
apt update && apt upgrade -y &&apt install vim sudo tmux ufw git curl wget zip net-tools -y
- 1
安装docker
一键安装docker:
sudo apt-get update && sudo apt-get install ca-certificates curl gnupg lsb-release -y && curl -fsSL https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/ \
$(lsb_release -cs) stable " | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null && sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io -y && sudo systemctl enable docker && sudo systemctl start docker && sudo docker run hello-world && docker rm -f $(docker ps -aq) && docker rmi -f $(docker images -aq) && echo > /root/.bash_history && echo finish!
- 1
- 2
- 3
输出finish,即安装成功
为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥:
curl -fsSL <https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg> | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 1
向 sources.list 中添加 Docker 软件源:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] <https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/> $(lsb_release -cs) stable " | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 1
docker安装mysql
创建 Docker 自定义桥接网络
docker network create halo-mysql-nginx-net
- 1
拉取 MySQL 镜像
docker pull mysql:8.0.27
- 1
创建文件夹
mkdir -p ~/.halo/mysql
- 1
启动 MySQL 实例 xxxxxxxxx为自己设置的密码
docker run --name halo-mysql -v ~/.halo/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxxxxxxx --net halo-mysql-nginx-net --restart=unless-stopped -d mysql:8.0.27
- 1
这条命令解释
--name halo-mysql # 设置容器名字
-v ~/.halo/mysql:/var/lib/mysql # 卷挂载。 本地地址:容器内部地址
-e MYSQL_ROOT_PASSWORD=xxxxxxxx # 设置mysql密码
--net halo-mysql-nginx-net # 挂载网络
--restart=unless-stopped # 除非手动停止否则自动重启
-d # 后台运行
mysql:8.0.27 # mysql版本
- 1
- 2
- 3
- 4
- 5
- 6
- 7
进入 MySQL 容器中登录 MySQL 并创建 Halo 需要的数据库
docker exec -it halo-mysql /bin/bash
- 1
登录 MySQL
mysql -u root -p
- 1
输入之前设置的密码xxxxxx
创建数据库
create database halodb character set utf8mb4 collate utf8mb4_bin;
- 1
输入 exit 或 quit 退出mysql
docker安装halo
首先需要下载wget工具,我这使用rpm安装wget。
自行下载wget的RPM包:http://mirrors.163.com/centos/7/os/x86_64/Packages/wget-1.14-18.el7_6.1.x86_64.rpm
将wget的RPM包上传到当前目录,执行
rpm -ivh wget-1.14-18.el7_6.1.x86_64.rpm
- 1
下面开始安装halo
创建 Halo 工作目录
mkdir -p ~/.halo/halo && cd ~/.halo/halo
- 1
下载示例配置文件到工作目录
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
- 1
编辑配置文件
vim application.yaml
- 1
默认配置文件使用的是H2 database数据库,这里需要把H2 database注释掉,并修改下面的mysql路径,完整配置文件内容,对照修改:
# 修改后的application.yaml文件内容如下:
server:
port: 8090
# Response data gzip.
compression:
enabled: false
spring:
datasource:
# H2 database configuration.
#driver-class-name: org.h2.Driver
#url: jdbc:h2:file:~/.halo/db/halo
#username: admin
#password: 123456
# MySQL database configuration.
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://halo-mysql:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: xxxxxxxx
# H2 database console configuration.
h2:
console:
settings:
web-allow-others: false
path: /h2-console
enabled: false
halo:
# Your admin client path is https://your-domain/{admin-path}
admin-path: admin
# memory or level
cache: memory
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
启用halo
docker run -it -d --name halo -p 8090:8090 -v ~/.halo/halo:/root/.halo --net halo-mysql-nginx-net --restart=unless-stopped halohub/halo:1.5.4
- 1
命令解释:
-it -d # 运行方式
--name halo # 设置容器名字
-p 8090:8090 # 端口设置
-v ~/.halo/halo:/root/.halo # 卷挂载。 本地地址:容器内部地址
--net halo-mysql-nginx-net # 挂载网络
--restart=unless-stopped # 除非手动停止否则自动重启
halohub/halo:1.5.4 # halo版本
- 1
- 2
- 3
- 4
- 5
- 6
- 7
注:截至发文目前halo的最新版本为1.5.4,可以根据官方文档[1]修改为最新版,建议使用最新版,否则后面有的主题可能会不适配。
进行完这步操作后,在浏览器输入服务器ip:8090
就能够看到halo的安装向导了。
更换主题
输入ip:8090/admin
可以进入到管理后台,在外观->主题这里可以安装别人制作的主题,点击安装,上传zip压缩包即可。
我所使用的主题是雪开发的这款:
仓库地址:https://github.com/xzhuz/halo-theme-xue
预览我的博客
因为我只是玩玩,所以后续没配置域名和备案。
可以点击下面的链接进行浏览(没多久估计就挂了 ):
http://175.27.210.17:8090/
附录:常用docker命令
因为平时docker用的不多,看别人[4]整理了一份docker命令,顺便贴在这里留存。
docker version 查看版本信息
docker info 显示统信息,包括镜像和容器数
docker --help 帮助命令
docker images 查看镜像 (docker images -a 含中间镜像层)
docker rmi -f 镜像ID 删除单个镜像
docker rm 容器ID 删除单个容器
docker pull 镜像名:版本号 拉取镜像
docker run -it REPOSITORY /bin/bash 启动镜像
--name="容器新名字": 为容器指定一个名称;
-d: 后台运行容器,并返回容器ID,也即启动守护式容器;
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-P: 随机端口映射;
-p: 指定端口映射;
docker ps 查看正在运行容器
docker ps -a 查看所有容器
docker start 容器ID或者容器名 启动容器
docker restart 容器ID或者容器名 重启容器
docker stop 容器ID或者容器名 停止容器
docker kill 容器ID或者容器名 强制停止容器
docker kill $(docker ps -a -q) 停用全部运行中的容器
docker rm $(docker ps -aq) 删除全部容器
docker rmi `docker images -q` 删除所有镜像
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
参考
【1】halo官方文档:https://docs.halo.run/getting-started/upgrade
【2】https://blog.csdn.net/mustvvvics/article/details/123365981
【3】https://blog.csdn.net/desertworm/article/details/116742118
【4】https://dhjdd.cn/archives/420.html
文章来源: zstar.blog.csdn.net,作者:zstar-_,版权归原作者所有,如需转载,请联系作者。
原文链接:zstar.blog.csdn.net/article/details/125946908
- 点赞
- 收藏
- 关注作者
评论(0)