【Web开发】docker+halo搭建个人博客

举报
zstar 发表于 2022/08/05 23:35:43 2022/08/05
【摘要】 契源 最近“白嫖”了一个月的腾讯云云服务器,想来闲着不如用它来试试搭建一个个人博客主页,博客框架我选用halo。 腾讯云配置 腾讯云服务器配置账号密码等步骤不必多说,系统我选用的Ubuntu Ser...

契源

最近“白嫖”了一个月的腾讯云云服务器,想来闲着不如用它来试试搭建一个个人博客主页,博客框架我选用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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。