电信天翼云搭建Halo博客

电信天翼云搭建Halo个人博客

1.购买服务器

学生党错过双十一各大云厂商搞活动,想在趁着年末各大云厂商搞活动租个一年的服务器,浏览阿里云、腾讯云、百度智能云、华为云、七牛云、天翼云等各大网站后,发现电信天翼云年末搞活动,于是决定入手一波天翼云服务器。

天翼云地址

电信天翼云搭建Halo博客

天翼云主机配置图:

电信天翼云搭建Halo博客

从活动页面看活动力度还是挺大的,本着租台服务器既能满足搭建博客、大数据组件和符合预算的要求就选择了4核8G的服务器。谁能想着一时冲动带宽想都没想就选择1M带宽,实际中1Mbit带宽实际速度128KB/S,Bit不是Byte。可谓是主机空有一身本领无奈舞台太小,带宽太小完全限制了主机的性能。事后也是后悔不已,尝试升级带宽无奈升级带宽费用远远高于搞活动中带宽的费用。活动中每多1Mbit带宽也就多20元,要真正发挥主机的性能应该至少5Mbit以上。

电信天翼云搭建Halo博客

买完服务器支付完后,就是拿到主机的IP和密码远程登陆了。天翼云的操作不太人性化,找服务器都花了半天。它需要根据你买的服务器所属的不同区域切换到对应的区域才能看到对应的服务器,对于这个多余的设计不太清楚天翼云背后设计的逻辑是什么,这个对用户来说实在太麻烦了。而且每次找服务器都需要重新切换到对应的区,不是说你每次重新登陆后它会默认为你经常使用服务器的区。比如我买的服务器属于南京3区,每次登陆后切换到控制台,这个服务器的区总是默认为兰州2,说实话我很怀疑设计这控制台的哥们老家是不兰州的。总的来说,这个设计真的很麻烦。问过客户经理,回答是怕统一操作页面导致客户主机太多续费或者开通开错。希望之后改过来吧!

电信天翼云搭建Halo博客

电信天翼云搭建Halo博客

控制台界面主机信息:

电信天翼云搭建Halo博客

首次登陆可以点击右下角更多,然后点击重置密码。注意的是搞活动的主机天翼云官方是不同意退订的,不过可以考虑变配。拿到公网IP后,就可以使用远程登陆工具ssh登陆,比如Xshell7、向日葵、MobaXterm等工具登陆。MobaXterm是一款集万千于一身的免费全能型终端神器,功能十分强大,内置SFTP、VNC、FTP、FTP等功能。用过之后真的香。

电信天翼云搭建Halo博客

2.安装Docker、从Docker安装Halo、MySQL

Docker的安装教程可参考官方教程:docker官方Ubuntu安装教程

2.1安装Halo

Halo是一款由Java开发的现代化的博客/CMS系统,博客满足基本的博客功能,并且能够安装不同的主题。搭建个人博客有许多种办法,比如选择镜像的时候直接选择WordPress镜像、利用GitHub搭建Hexo博客。个人搭建的初衷就是为了学习Springboot项目。安装教程官方有非常详细的文档,这里主要还是搬运一些过程,并且也记录一些碰到的坑。

2.1.1创建halo工作目录
mkdir ~/.halo && cd ~/.halo
2.1.2下载示例文件并配置工作目录
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
2.1.3编辑并且配置application.yaml

因为官方配置文件种默认使用的是H2数据库,而本次使用的是MySQL8.0数据库,因而需要对yaml文件进行更改,将Spring的数据源配置成为MySQL.

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://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&autoReconnect=true&failOverReadOnly=false&maxReconnects=10
    username: root
    password: 你的密码

  # 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

2.1.4查询和拉去最新的halo版本
docker search halo

查询halo结果结果:

电信天翼云搭建Halo博客

拉去halo版本结果:

运行之时最小版本为halo:1.4.13,写博客当天已经更新到1.4.14。

docker pull halohub/halo:1.4.13

安装成功后结果如下图所示:

电信天翼云搭建Halo博客

2.2安装MySQL8.0

2.2.1 docker拉去MySQL

官方默认的MySQL需要5.7+以上版本

docker pull MySQL:8.0
2.2.2在本地创建MySQL的映射目录
mkdir -p /root/mysql/data /root/mysql/logs /root/mysql/conf
2.2.3创建MySQL的配置文件
touch my.cnf
2.2.4创建容器,将数据、日志、配置文件、端口映射到本地
docker run -p 3306:3306 --name mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/logs -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=你的密码 -d mysql:8.0
2.2.5运行MySQL
docker start mysql

查看运行结果:

docker ps 

电信天翼云搭建Halo博客

2.2.6进入MySQL创建表

进入MySQLbash指令

docker exect -it mysql /bin/bash

输入密码进入MySQL:

mysql -uroot -p123456

按照官方文档配置文件创建表

create database halodb character set utf8mb4 collate utf8mb4_bin;

3.从控制台配置安全组协议

Halo博客的默认端口是8090,要从外部访问需要控制台配置安全组协议,打开Ipv4、Ipv6的8090端口,不然外界无法访问。

从控制台进入云主机的配置页面:

电信天翼云搭建Halo博客

安全组协议配置:

电信天翼云搭建Halo博客

注意点:没有备案的话,默认是无法访问服务器的80、8080、443端口

4.安装Halo

4.1从docker启动halo
docker start halo
4.2镜像执行结果
docke ps -a 

执行结果:

电信天翼云搭建Halo博客

通过http://IP:8090访问结果显示:服务器拒绝访问

4.3解决办法

4.3.1疑问
  1. 安全组协议配置不对

    重新配置安全组协议

  2. halo的配置文件不对

    仔细检查application.yaml配置文件

  3. 防火墙设置不对

    启动防火墙,允许访问端口8090

  4. 服务器有问题(可能性少)

4.3.2检查spring.log日志

log出错情况:

电信天翼云搭建Halo博客

基本确认主要是连接不上数据库所造成的问题,于是按照报错的百度。

对于此类错误主要解决办法可参考一下连接:

  1. 通过参数配置增大连接超时时间wait_timeout的值
  2. 设置超时连接

按照以上方法问题依然没有解决。

尝试办法:

于是想会不会是因为数据库时间和docker内时间不同步造成了。然后按照网上方法修改数据库内部和Docker内部的时间为一致。重新启动Halo问题已让没有解决,还是报错。

和同学讨论得知可能是因为MySQL和Halo同时部署在Docker种,两个容器相互隔离,有可能Halo镜像本身就带MySQL数据库,因而Halo博客应用种设置的数据库连接IP地址设置为127.0.0.1:3306可能无法映射到实际主机的数据库,因而无法连接上数据库。但是从官方文档中得知Halo本身数据是不带有MySQL数据库的,这个需要自己另外安装。基于这个假设将application.yaml中的数据地址改为主机的IP地址,同时去天翼云控制台配置安全组协议打开3306端口。同时防火墙中允许访问3306端口(这样可能会有安全风险)。重新启动halo应用…

docker restart halo

spring.log运行日志如下:

电信天翼云搭建Halo博客

打开http://ip:8090直接进入安装界面,按照引导填写网站相关信息,然后进入后台管理页面。

前台页面:

电信天翼云搭建Halo博客

后台页面:

进入后台页面可以根据自己设置相关的博客主题,同时发布自己的博客文章,博客支持markdown文件导入。

电信天翼云搭建Halo博客

博客搭建成功!!!

4.4不足之处

Picgo+gitee做图床对于大图片支持还不是太好!!!

年末,备案过于复杂,准备等春节过后再去备案!!!

结束

对于文中出现的不足之处,还请大佬指正!!!

前台页面:

[外链图片转存中…(img-CjckBeYW-1638793430307)]

后台页面:

进入后台页面可以根据自己设置相关的博客主题,同时发布自己的博客文章,博客支持markdown文件导入。

[外链图片转存中…(img-2vhGCz5o-1638793430308)]

博客搭建成功!!!

4.4不足之处

Picgo+gitee做图床对于大图片支持还不是太好!!!

年末,备案过于复杂,准备等春节过后再去备案!!!

结束

对于文中出现的不足之处,还请大佬指正!!!

上一篇:JavaScript高级程序设计45.pdf


下一篇:【愚公系列】2021年11月 攻防世界-进阶题-MISC-059(halo)