如何从零开始使用halo创建一个属于自己的博客(未完)
🎉如何从零开始使用halo创建一个属于自己的博客
对于一个运行于网络的网站来说,有两个必须的要素
一个是网络,一个是主机
我们将从主机开始讲起,一步一步使用halo系统构建自己的博客
🎍首先你需要一个服务器
在2022年,服务器对于个人来说是非常容易获得的
从服务器的“地理位置”来分
我们可以将其分为云端机以及物理机
云端
我们称云端上的服务器为云服务器
对搭建博客而言,我们使用的云服务器主要为ECS和轻量应用服务器
ECS 与 轻量应用服务器的介绍
云服务器ECS(Elastic Compute Service)和轻量应用服务器是一种性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)(即 基础设施即服务,与之对应的还有paas,saas)级别云计算服务。相关介绍
ECS 与 轻量应用服务器的区别
ECS对于用户来说,其好处是可以随时变更配置以适配随时增加减少的性能需求
而轻度应用服务器则没有这个优点,大部分云服务商的轻度应用服务器的配置在购买时即固定,没有给予用户足够大的配置弹性空间
与之对应的,轻度应用服务器一般具有较大的初始带宽
价格方面,同配置(除带宽)ECS和轻度应用服务器在有促销活动时价格基本一致,请按需购买
线下
我们称用户在线下自行维护的服务器为(家用)物理服务器(废话)
其特点是
- 配置通常较高
- 电费通常较高
- 网费通常较高
- 维护成本通常较高
以及
- 购买后长期成本较低
- 学习成本较低
对于搭建博客来说,我非常不建议新手选择自行在家搭建物理服务器,问题太多了(咕
⛳然后 你需要进行一些前置设置
我将前置设置分为了几个重点,分别是
- 系统的选择
- 如何连接服务器
- 基础软件的安装
- 管理软件的安装
- 网络和防火墙的配置
- 配置运行环境
系统的选择
在现代服务器中,主要使用的系统分为两个系列
其一为debian系,该系主要包括debian,ubuntu server
其二为Redhat系,该系主要包括centos(截止2022/6/5已停止维护),openEuler(华为开发,欧拉系统)
这两个系列对于用户来说感知最明显的是其包管理软件的不同,debian系主要使用APT管理,redhat系则各不相同
对于新手来说,我认为使用成熟的ubuntu或centos是不错的选择,因为这两者的教程都非常多,用户量也很大,能提供强大的社区
如何连接服务器
为了和服务器进行沟通,我们需要找到并连接服务器
在现代网络架构中,ip是服务器的引路牌,我们在服务器的管理界面可以轻松的找到服务器的公网地址
通过在特定软件中使用ssh协议连接到服务器,我们即可以在本机操作云服务器
作者常用的软件为FinalShell,可自行下载查看
具体安装教程请移步具体博客(待写)
基础软件的安装
连接上服务器后,我们需要安装基础的软件
这里我贴上常用的软件安装命令(以ubuntu为例)
screen(使程序可以在后台运行的软件)
sudo apt install screen
nano(简易的命令行文本编辑软件)
sudo apt install nano
管理软件的安装
管理软件我是用的是宝塔面板,大伙也可以用青龙面板等类似的东西代替
这里我贴出安装命令
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec
如果连接失效,请自行去官网寻找
具体安装教程请移步具体博客(待写)
网络和防火墙的配置
上一步我们已经安装了宝塔面板
在面板中我们可以找到安全选项卡,在该选项卡中可以放行端口,只有放行的端口可以与外界进行有权限沟通
放行了服务器方的端口还不够,云服务器在其官网控制台还存在一层控制,两层同时解除才能使端口正确开放
配置运行环境
有了宝塔面板,运行环境的配置变得简单许多,我们只需要在“软件商店”选项卡中搜索并安装docker管理器即可同时安装好docker本体(运行环境)以及其图形化管理器
安装好docker管理器后,我们将其放置于首页显示方便后期使用
然后进入命令行
输入:
docker -v
若能见到类似下面的输出,即为安装成功
[root@VM-8-7-centos ~]# docker -v
Docker version 20.10.14, build a224086
🎄开始配置halo博客系统
halo本体安装
在这里我们选择使用docker容器安装,因为其安装方便,数据迁移方便,同时也可以方便的升级系统
官方提供了docker的安装指令
我将其贴在这里方便参考,但我仍然建议你去官网观看最新的安装教程
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=always halohub/halo:1.5.3
-it: 开启输入功能并连接伪终端
-d: 后台运行容器
–name: 为容器指定一个名称
-p: 端口映射,格式为 主机(宿主)端口:容器端口 ,可在 application.yaml 配置。
-v: 工作目录映射。形式为:-v 宿主机路径:/root/.halo,后者不能修改。
–restart: 建议设置为 unless-stopped,在 Docker 启动的时候自动启动 Halo 容器。
打开 http://ip:端口号
即可看到安装引导界面。
配置域名(可选)
如果你想要让你的网站看起来更有生机而不是一个诈骗网站
那么你需要一个域名以方便用户的访问
要获得一个属于自己的域名,首先我们需要到阿里云/腾讯云等云服务商购买
购买后,我们需要将域名绑定到我们的服务器上,通过为域名添加一个A记录,我们可以将域名解析到云服务器上
具体安装教程请移步具体博客(待写)
然后我们就可以通过域名访问到我们的服务器,这里的域名基本与ip等同
添加记录后,域名只能访问到ip下的服务,但是halo项目运行于8090端口
这就导致这时组合的博客url为http://域名+:8090
对于一个网站来说,让用户输入端口号是非常不礼貌的
这时我们就需要使用宝塔面板自带的nginx程序,将halo项目反向代理到http://域名
上
反向代理相关知识
以下列出来着官网的 详细步骤 :
-
我们打开宝塔面板控制台,选择网站选项卡
-
新建一个站点,在域名处填写我们购买的域名(不带http)
-
php版本选择纯静态
-
点击确认
-
点击设置
-
点击配置文件并进行修改
-
在根节点添加:
upstream halo { server 127.0.0.1:8090; }
-
在 server 节点添加:
location / { proxy_pass http://halo; proxy_set_header HOST $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
-
修改 server 节点中的 location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ 节点:(不知为何加不加都可以显示)
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { proxy_pass http://halo; expires 30d; error_log /dev/null; access_log off; }
-
修改 server 节点中的 location ~ .*.(js|css)?$ 节点:(不知为何加不加都可以显示)
location ~ .*\.(js|css)?$ { proxy_pass http://halo; expires 12h; error_log /dev/null; access_log off; }
完整的配置文件如下:
upstream halo {
server 127.0.0.1:8090;
}
server
{
...
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
proxy_pass http://halo;
expires 30d;
error_log /dev/null;
access_log off;
}
location ~ .*\.(js|css)?$
{
proxy_pass http://halo;
expires 12h;
error_log /dev/null;
access_log off;
}
location / {
proxy_pass http://halo;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
...
}
随后点击保存即可。如果配置不生效,请重载 Nginx 或者 重启 Nginx。
最后,访问域名即可进行 Halo 的初始化。
如果后期需要将不同端口的其他网站挂在该域名下,请在配置文件 server节点下添加
location /节点/ {
# 注意: 反向代理后端 URL 的最后需要有一个路径符号
proxy_pass http://localhost:端口/;
}
然后通过域名+/节点/
进行访问
配置ssl(https访问)
这部分的设置有些微复杂
我先稍微提一下
要将http协议转向https,我们需要通过ssl进行加密和认证
该证书需要向服务商购买或者申请(阿里云有免费ssl证书可以白嫖)
购买后服务商会给予用户密钥KEY以及PEM格式的证书,我们可以在宝塔面板-网站-设置-ssl-其他证书中黏贴我们得到的证书以及密钥,然后开启强制https选项
正常在进行这些操作后,你的网站应该就可以正常以https进行访问了
如果拿不到ssl证书,也可以在宝塔面板-网站-设置-ssl-宝塔ssl/Let’s Encytopt中直接申请ssl证书,具体请自行搜索
🎊正式使用
网站初始化
当我们完成了上述的操作后,恭喜你,你成功的搭建好了自己的博客,接下来我们来对网站进行一些配置
这能让他能正常使用,并且看起来更加现代,好用和好看
第一次进入网站,我们会进入安装向导,在这里我们可以设置博客的管理员账号相关信息,以及网站对应的域名(此处是实验机,就不配置域名了,使用ip替代)
安装向导
这里按需填写即可
点击安装后,网站会自动重定向到登录页面
填写信息后即可进入后台(域名+admin为后台地址)
进入主页
输入url即可进入主页
我们可以看到这时的主页还非常简洁,但是已经可以用了
基础设置
好像过于简单,算了不写了🚴♀️
更换主题
这里有详细的官方教程
配置SEO
SEO:即搜索引擎优化(Search Engine Optimization)
通过合理的SEO设置,可以使得搜索引擎可以搜索到你的网站,获得更多访问量
编写文章
在文章-写文章 选项卡,你可以使用markdown语法再此处书写你的博客,这也能让你方便的迁移文章
配置图床
图床:图床是位于网络上的用于存储图片的节点,通过图床,我们可以在任意一台有网络的机子上通过链接访问图片,
这使得我们在写文章时放置的图片既不会大量占用云服务器的存储空间,也不会占用大量网络带宽
很容易用的,自己摸一下就会了
🎇数据备份
备份整文件夹
导出备份
🤔Q&A
Q:数据库是什么,放在哪里?
A:默认数据库为H2 Database ,如果需要更换为其他请自行去官网寻找解决方案
Q:博客内部框架?
A:halo为前后端分离架构,后端框架为spring,前端框架为Vue
Q:博客功能如何来?
A:博客自带了一些功能,如果需要自己定制功能,可以在设置里面的其他设置中加入自定义全局head
// 未完待续