写在开头:本文是一篇纯新手向的建站教程,学习、记录与分享。希望大家在网络上,玩得开心。
毕业前完成毕业设计的时候,领了一个七个月云服务器,本来想着正好可以把毕业设计部署上去,但是后面临近毕业事情有多又杂,加上执行力不够无限搁置一转眼就到毕业。参加工作后,因为负责的新项目还在启动阶段所以比较闲,想到好好的资源放在那里闲置着很是可惜,就想着搭个网站玩一下,顺便在过程中看看能不能完善一下技术栈。就想着也去搭一个博客,把自己的学习路线整理起来,形成自己的知识沉淀,同时梳理一下自己的技术体系框架,看看是否能形成比较系统的知识。
之前在学习一些技术的时候,一个很关照我的哥把他的博客发给我学习,了解到了Halo,感觉风格很清爽很简洁,个人非常喜欢,所以这次一下子就想到了它。另外Halo是基于java和spring boot与我自身的技术栈也十分匹配,所以就决定是它了。
项目仓库:
Github仓库: https://github.com/halo-dev/halo/
Gitee仓库:https://gitee.com/halo-dev/halo
官方网站: https://halo.run/
1、在云平台安全组中打开相关端口,其中8090为Halo端口必须打开,其他根据个人情况选择。
Halo安装搭建个人分为两种方式分别为Docker容器和手动安装。
使用 jar 包运行的方式需要用户自行构建 jar 包。这里我们先安装docker,目前 Halo 的默认及推荐安装方式也为 Docker 容器运行,。
1.我们通过远程访问工具连接到服务器系统后,首先对yum进行一下升级,确保 yum 包更新到最新。
yum -y update
末尾出现complete!字样即为成功。
2.安装必要的软件包
其中yum-util 提供yum-config-manager功能,device-mapper-persistent-data和lvm2是device mapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3.配置yum源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.安装docker
* 命令参考:可以以下命令**查看**仓库中所有docker版本,并选择特定版本安装*
yum list docker-ce --showduplicates | sort -r
sudo yum install docker-ce-17.12.0.ce #安装特定版本
安装
sudo yum install -y docker-ce docker-ce-cli containerd.io
启动
systemctl enable docker --now
配置加速
新建 daemon.json 文件并配置
这里额外添加了docker的生产环境核心配置cgroup
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
测试
docker version
安装好docker后,我们需要创建项目目录,并去拉取官方的项目docker环境镜像。
Halo:考虑到部分用户的需要,可能需要自定义比如端口等设置项,我们提供了公共的配置文件,并且该配置文件是完全独立于安装包的。当然,你也可以使用安装包内的默认配置文件,但是安装包内的配置文件是不可修改的。请注意:配置文件的路径为~/.halo/application.yaml。
1、创建 halo目录
mkdir ~/.halo && cd ~/.halo
2、下载配置文件到 halo目录
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
3、配置
这一步一般来说使用默认即可,不需要进行改动。
vim ~/.halo/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://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
# username: root
# password: 123456
# 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 (#建议使用level,将数据缓存到磁盘,重启不会清空缓存)
cache: memory
以上,可不对配置文件进行更改,按默认运行即可。
1、拉取Halo 镜像
如果最新版本不是1.5.2,可以将1.5.2替换成latest,latest代表最新的镜像版本,docker pull halohub/halo:latest
docker pull halohub/halo:1.5.2
2、创建容器并启动
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.5.2
至此,完成以上操作我们即可访问 http://ip:8090
即可进入 Halo 的安装引导页面了。
之前有了解过到这个技术但一直没有接触到,这次是第一次接触,去学习了一下,记录一些自己的理解。
Docker 包括三个基本概念:
● 镜像(Image):Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。个人理解为python的虚拟环境
● 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。运行镜像的地方
● 仓库(Repository):仓库(Repository)类似Git的远程仓库,集中存放镜像文件。类比maven仓库
Halo官方把开发环境复制出来变成镜像上传到docker官方的镜像仓库,提供给开发者使用,避免繁琐的配置后不能运行的尴尬情况。
//检索镜像
docker search 关键字
//拉取镜像
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
参考: https://www.yuque.com/leader755/blog/azuze1
未完成:docker compose
也是很早之前就听说过的工具,不知道是干嘛的,这次一起了解了。
官方介绍:
使用宝塔前: 手工输入命令安装各类软件,操作起来费时费力并且容易出错,而且需要记住很多Linux的命令,非常复杂。
使用宝塔后: 2分钟装好面板,一键管理服务器,鼠标点几下就能替代以前的复杂繁多命令,操作简单,看一眼就会使用。
从上述官方描述不难看出,此产品聚焦于解决服务器操作繁琐的情景。使用宝塔面板,可以在可视界面中为服务器安装应用、同步文件、定期执行代码、管理服务,非常方便。
个人理解为通过安装一款软件,为Linux的黑窗口提供一个可视化界面,方便后续在Linux系统上的环境搭建与配置、软件部署与维护等等操作。通过点拖拉拽代替各种命令,确实是在很大程度下降低了新手入门的门槛,很友好、方便的工具,下一次期待尝试。另外在了解域名配置过程中发现宝塔面板可以很方便快速的给同一个站点配置多个域名,下次研究。
后续计划继续深入Nginx反向代理、halo插件及源码解读、本地部署以及修改为其他数据库等等。