前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Web开发】docker+halo搭建个人博客

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

作者头像
zstar
发布2022-09-16 10:01:11
6820
发布2022-09-16 10:01:11
举报
文章被收录于专栏:往期博文

契源

最近“白嫖”了一个月的腾讯云云服务器,想来闲着不如用它来试试搭建一个个人博客主页,博客框架我选用halo。

腾讯云配置

腾讯云服务器配置账号密码等步骤不必多说,系统我选用的Ubuntu Server 20.04 LTS 64位这个系统,配置完成后使用FinalShell成功连接即可。

初始配置

首先进入到系统,进行初始配置,先重置管理员密码,切换到管理员身份

代码语言:javascript
复制
# 重置管理员密码
su password
# 切换管理员身份
su 

之后开启bbr

代码语言:javascript
复制
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf && echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf && sysctl -p 

软件列表升级以及预装软件

代码语言:javascript
复制
apt update && apt upgrade -y &&apt install vim sudo tmux ufw git curl wget zip net-tools -y

安装docker

一键安装docker:

代码语言:javascript
复制
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!

输出finish,即安装成功

为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥:

代码语言:javascript
复制
curl -fsSL <https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg> | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

向 sources.list 中添加 Docker 软件源:

代码语言:javascript
复制
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

docker安装mysql

创建 Docker 自定义桥接网络

代码语言:javascript
复制
docker network create halo-mysql-nginx-net 

拉取 MySQL 镜像

代码语言:javascript
复制
docker pull mysql:8.0.27

创建文件夹

代码语言:javascript
复制
mkdir -p ~/.halo/mysql

启动 MySQL 实例 xxxxxxxxx为自己设置的密码

代码语言:javascript
复制
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

这条命令解释

代码语言:javascript
复制
--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版本

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

代码语言:javascript
复制
docker exec -it halo-mysql /bin/bash

登录 MySQL

代码语言:javascript
复制
mysql -u root -p

输入之前设置的密码xxxxxx

创建数据库

代码语言:javascript
复制
create database halodb character set utf8mb4 collate utf8mb4_bin;

输入 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包上传到当前目录,执行

代码语言:javascript
复制
rpm -ivh wget-1.14-18.el7_6.1.x86_64.rpm

下面开始安装halo

创建 Halo 工作目录

代码语言:javascript
复制
mkdir -p ~/.halo/halo && cd ~/.halo/halo

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

代码语言:javascript
复制
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml

编辑配置文件

代码语言:javascript
复制
vim application.yaml

默认配置文件使用的是H2 database数据库,这里需要把H2 database注释掉,并修改下面的mysql路径,完整配置文件内容,对照修改:

代码语言:javascript
复制
# 修改后的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

启用halo

代码语言:javascript
复制
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

命令解释:

代码语言:javascript
复制
-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版本

注:截至发文目前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命令,顺便贴在这里留存。

代码语言:javascript
复制
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】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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 契源
  • 腾讯云配置
  • 初始配置
  • 安装docker
  • docker安装mysql
  • docker安装halo
  • 更换主题
  • 预览我的博客
  • 附录:常用docker命令
  • 参考
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档