基于阿里云、七牛云、宝塔面板,从零开始用Halo搭建个人博客网站
目录
购买服务器
官方硬件需求: https://docs.halo.run/getting-started/prepare/
环境要求
这里将讲述运行 Halo 所要求的一些软硬件的配置,我们建议您在运行或者部署之前先浏览一遍此页面。
硬件配置
提示
如果您要使用服务器进行部署 Halo,您需要注意的是,Halo 目前不支持市面上的云虚拟主机,请使用云服务器或者 VPS。
CPU
无特别要求。目前我们的 Docker 镜像 也已经支持多平台。
内存
为了获得更好的体验,我们建议至少配置 1G 的 RAM。
磁盘
无特别要求,理论上如果不大量在服务器上传附件,Halo 对磁盘的容量要求并不是很高。但我们推荐最好使用 SSD 硬盘的服务器,能更快的运行 Halo。
网络
Halo 目前必须在外网畅通的情况下使用,否则会导致页面异常。
软件环境
Halo 理论上可以运行在任何支持 Java 的平台。
JRE(Java Runtime Environment)
必须在运行环境安装好 JRE,这是运行 Halo 所要求的的最低软件环境要求。如果您使用 Docker 运行 Halo,可忽略此要求。
信息
从 1.4.3 起,版本要求为 11 以上的版本。1.4.3 以下需要 1.8 以上的版本。
MySQL(可选)
这并不是 Halo 必须依赖的,Halo 默认使用自带的
H2 Database
,无需单独安装。如果H2 Database
不能满足你的要求,您需要在系统内安装并运行好 MySQL。具体要求:
- 版本:5.7 +
- 字符集(Character Set):
utf8mb4
- 排序规则(Collate):
utf8mb4_bin
- 存储引擎:
InnoDB
综上,建议创建数据库采用下面的命令:
create database halodb character set utf8mb4 collate utf8mb4_bin;
Web 服务器(可选)
如果您部署在生产环境,那么你很可能需要进行域名绑定,这时候我们推荐使用诸如 Nginx、Caddy 之类的 Web 服务器进行反向代理。但需要注意的是,目前 Halo 不支持代理到子目录(如:halo.run/blog)。
Wget(可选)
后续的文档中,我们会使用 wget 为例,用于下载所需要的文件,所以请确保服务器已经安装好了这个软件包。当然,下载文件不限制工具,如果你对其他工具熟悉,可以忽略。
VIM(可选)
后续的文档中,我们会使用 vim 为例,用于修改一些必要的配置文件,所以同样请确保服务器已经安装了这个软件包。当前,修改文档也不限制工具,如果你对其他编辑软件熟悉,也可以忽略。
浏览器支持
- 用户前台:视主题所支持的情况而定,由于目前的评论模块使用了 Vuejs 开发,所以在 Vuejs 不支持的某些浏览器中无法正常显示评论区域。
- 管理后台:支持目前常见的现代浏览器,具体视 Vuejs 框架的支持情况而定。
名词解释
这里将列出后续文档中一些和 Halo 相关的名词含义。
~(符号)
代表当前系统下的 用户目录。
运行包
指 Halo 构建所产生的 Jar 包,后缀为
.jar
。可能与其他网站应用有所区别的是,Halo 仅仅只有这一个文件。而且所有数据统一保存在下面所说的工作目录
。工作目录
指 Halo 所依赖的工作目录,在 Halo 运行的时候会在系统当前用户目录下产生一个
.halo
的文件夹,绝对路径为~/.halo
。由于这个工作目录是固定的,所以上面所说的运行包
不限制所存放的位置,里面通常包含下列目录或文件:
db
:存放 H2 Database 的物理文件,如果您使用 MySQL 数据库,那么不会存在这个目录。templates/themes
:里面包含用户所下载的主题。static
:相当于网站的根目录。logs
:运行日志目录。upload
:附件目录。application.yaml
:配置文件。
在阿里云官网点击价格计算器
地域可以购买离自己进一点的(访问起来会快一点), 如果服务器在大陆内, 最后进行域名绑定的时候需要进行备案, 选用在香港的服务器则不用.
购买域名
建议在博客搭建完毕后再进行备案, 在下文的 nginx反向代理 中需要用到域名, 打开阿里云域名购买页面, 输入你想买的域名名称, 建议先去了解一下域名类型及其价格, 有些域名第一年便宜但续费很贵, 建议用英文域名.
然后按步骤购买, 去ICP审核备案, 具体看阿里云文档, 备案一定要去网上查一下技巧, 否则不好通过.
阿里云备案
公安联网备案: 网址
服务器安装配置
远程连接
购买完毕以后进入控制台: 阿里云控制台
在左边选云服务器ECS
查看实例, 记住自己的公网IP和私网IP, 登录名称和登录密码
若是系统配置不对, 可以停止主机, 然后重新载入镜像( 重装系统) :
点击重置实例密码, 然后我们修改密码: 必须记下用户名root和实例密码
配置安全组
进入到安全组列表, 点击右侧配置规则
选择入方向, 点击手动添加, 在新的规则中输入如图内容, 8090端口为halo默认端口, 8888为宝塔面板默认端口, 443为SSL端口, 80为网站默认端口.
阿里云网页连接
选择实例右边的远程连接
输入管理员账户, 点击确定连接:
等待一会, SSH远程连接Linux终端:
Xshell程序连接
推荐使用Xshell或类似软件连接, 以Xshell为例:
安装完毕后打开Xshell.
Xmanager Power Suite 7是一款功能强大、体积小巧的远程管理软件,可以让用户Windows环境下浏览远端X窗口系统的工具,方便用户在windows平台下连接远程服务器进行管理操作,支持一键连接到unix、linux服务器系统进行文件的管理操作,提供强大的回话管理控制台和易于使用的X应用程序启动器,包含了常规XDMCP的所有好处,可以共享X应用程序,大幅度提高安全性,用户通过Xmanager Power Suite 7可以把远程的UNIX/Linux桌面环境无缝地导入到自己的Windows PC,即使用户的电脑是开启防火墙和安全软件的,用户也能通过SSH协议安全的运行远端的X应用程序。可以通过Xcongfig工具设置多个Xmanager设置,同时还支持多用户Windows终端环境的运行,支持多个IP地址同时在线,支持多窗口下的Windows打印等,还有用户可以在xmanager界面上同时启动多个会话,也可以创建各主机的快捷图标。通过xmanager 7附属下的Xstart可以在用户PC运行远程X应用程序,登陆远程主机时支持SSH、TELNET、RLOGIN、REXEC、RSH和LOCAL协议,并且可以在本机轻松执行远程主机命令,可以大大地提高管理人员的效率。利用Xstart可以在用户的Windows PC非常轻松的执行远程主机的命令,就是这么简单和任性。该软件广泛用于各种领域的工作,包括大型工艺与半导体和服务器管理设计的IDC(互联网数据中心),大学和公司的服务器管理员与想要通过互联网连接到远程主机的个人用户是这个产品常用群体。
先检查网络环境, ping一下公网IP:
连接服务器:
文件> 打开
新建会话> 验证服务器用户名
若配置后没有生效, 可以关闭页面后重新打开软件进入.
开始检查:
uname [-amnrsv][--help][--version]
参数说明:
-a或--all 显示全部的信息。
-m或--machine 显示电脑类型。
-n或--nodename 显示在网络上的主机名称。
-r或--release 显示操作系统的发行编号。
-s或--sysname 显示操作系统名称。
-v 显示操作系统的版本。
--help 显示帮助。
--version 显示版本信息。
查看参数:
uname -a
uname -n
查看防火墙状态:默认关闭状态
iptables -L -n
查看是否能够上网:
ping www.baidu.com
按Ctrl+C可以终止
完毕.
博客安装
进行Halo的安装准备
根据官方文档安装:https://docs.halo.run/getting-started/install/linux/
这里依照官方文档, 进行安装的指导.
-
对系统升级
yum -y update
直到末尾出现complete!字样即可.
yum 是一个交互式的、基于 rpm 的包管理器,是一种联网安装软件的方式。它可以安装软件、卸载软件、查询软件、更新软件以及系统、自动解决rpm包依赖问题。
-
CentOS进行java环境的安装, 输入代码后回车. 中途会询问是否安装, 回复y即可, 安装成功后, 会显示success等字样
sudo yum install java-11-openjdk -y
-
检查Java版本
java -version
如果输出以下类似内容即代表成功
openjdk version "11.0.10" 2021-01-19 LTS OpenJDK Runtime Environment 18.9 (build 11.0.10+9-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.10+9-LTS, mixed mode, sharing)
正式安装Halo
- 创建新的系统用户
信息
我们不推荐直接使用系统 root 用户来运行 Halo。如果您需要直接使用 root 用户,请跳过这一步。
创建一个名为 halo 的用户(名字可以随意)
useradd -m halo
给予 sudo 权限
usermod -aG wheel halo
为 halo 用户创建密码
passwd halo
登录到 halo 账户
su - halo
- 创建存放 运行包 的目录,这里以
~/app
为例mkdir ~/app && cd ~/app
- 下载运行包
wget https://dl.halo.run/release/halo-1.5.4.jar -O halo.jar
信息
如果下载速度不理想,可以 在这里 选择其他下载地址。
- 创建 工作目录
mkdir ~/.halo && cd ~/.halo
- 下载示例配置文件到 工作目录
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
编辑配置文件,配置数据库或者端口等,如需配置请参考 配置参考
[补充: 这一步一般不需要改动, 默认即可, 在该页面输入
:wq
即可退出]vim application.yaml
- 测试运行 Halo
cd ~/app && java -jar halo.jar
如看到类似以下日志输出,则代表启动成功。
[补充: 成功启动后, 输入Ctrl+C 即可退出]
run.halo.app.listener.StartedListener : Halo started at http://127.0.0.1:8090 run.halo.app.listener.StartedListener : Halo admin started at http://127.0.0.1:8090/admin run.halo.app.listener.StartedListener : Halo has started successfully!
打开
http://ip:端口号
即可看到安装引导界面。信息
如测试启动正常,请继续看
作为服务运行
部分,第 8 步仅仅作为测试。当你关闭 ssh 连接之后,服务会停止。你可使用 CTRL+C 停止运行测试进程。提示
如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过
http://ip: 端口号
的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。
作为服务运行
- 退出 halo 账户,登录到 root 账户
如果当前就是 root 账户,请略过此步骤。
exit
- 下载 Halo 官方的 halo.service 模板
wget https://dl.halo.run/config/halo.service -O /etc/systemd/system/halo.service
- 修改 halo.service
vim /etc/systemd/system/halo.service
修改配置
[补充: 进入vim编辑模式后, 点击键盘上的
i
进入插入模式, 即可修改配置文件, 点击键盘上的ESC
即可退出插入模式, 输入:wq
退出配置文件. ]
- YOUR_JAR_PATH:Halo 运行包的绝对路径,例如
/home/halo/app/halo.jar
,注意:此路径不支持~
符号。- USER:运行 Halo 的系统用户,如果有按照上方教程创建新的用户来运行 Halo,修改为你创建的用户名称即可。反之请删除
User=USER
。[Unit] Description=Halo Service Documentation=https://halo.run After=network-online.target Wants=network-online.target [Service] Type=simple User=halo 这里是User=你创建的用户名 ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar YOUR_JAR_PATH ExecStop=/bin/kill -s QUIT $MAINPID Restart=always StandOutput=syslog StandError=inherit [Install] WantedBy=multi-user.target
提示
请确保
/usr/bin/java
是正确无误的。建议将ExecStart
中的命令复制出来运行一下,保证命令有效。
- 重新加载 systemd
systemctl daemon-reload
- 运行服务
systemctl start halo
- 在系统启动时启动服务
systemctl enable halo
您可以查看服务日志检查启动状态
journalctl -n 20 -u halo
当全部完成后, 打开浏览器, 在地址栏输入公网ip:端口
的方式来访问你的网站.
Halo安装向导
安装宝塔面板
在终端中输入下面的命令, 返回root根目录下.
cd ~
安装宝塔面板, Centos, 具体可以去官网查看, https://www.bt.cn/bbs/thread-19376-1-1.html
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
安装完成后, console上会出现你的服务器宝塔面板的访问地址, 账号和密码. 必须记下来.
如果忘记了可以在SSH中输入bt default
重新查看
打开浏览器, 在地址栏输入公网ip:8888
的方式来访问宝塔面板, 输入刚才记下来的宝塔账号密码进入.
首次进入宝塔面板会有软件的推荐安装, 这个直接关掉, 后面可以从软件商城中自行安装nginx.
点击左侧菜单栏的安全, 点开后可以看到防火墙, 在防火墙中依次放行上面在阿里云服务器中已经放行过的端口:
8090端口没有默认的放行, 安装好宝塔面板后, 若如果没有再次去放行则, 不能通过ip:端口的方式去访问博客.
域名解析
打开阿里云域名控制台, 选择对应域名解析
然后等待半个小时以上, 等待DNS服务器更新.
我们解析完成后, 可以在cmd中ping我们的域名, 如果ping通则说明解析成功, 刚解析完会有一定的延迟,过一会应该能ping通, 一般等待半小时以上.
nginx反向代理
也可以使用 Caddy 进行反向代理, Caddy 是一款使用 Go 语言开发的 Web 服务器, 其配置更为简洁,并可以自动申请及配置 SSL 证书.
这一步需要有备案好的域名!
在左侧菜单栏中选择软件商店> 搜索nginx> 选择快速安装> 等待安装完毕.
等待nginx安装完毕后, 点击左侧网站> 点击添加站点, 添加你的站点.
这时我们的网站管理中就会多出我们刚才添加的站点, 我们选择该站点点击设置, 可以看到下面得到界面.
同样的方法再添加一个 www.你的域名
,www开头的为一级域名, 即可.
效果为:
继续在宝塔面板, 网站中, 点击配置文件, 开始进行nginx的配置. 官方文档:https://docs.halo.run/install/bt-panel
1.首先在根节点下添加以下代码(根节点与Server节点并列,添加根节点即在Server外添加)
upstream halo {
server 127.0.0.1:8090;
}
这里8090为halo默认端口,如果前面有改过端口号,则改为修改过的端口号。
- 在55行左右找到名为
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
的
子节点, 将下面代码插入到该子节点中
proxy_pass http://halo;
3.在63行左右找到名为location ~ .*\.(js|css)?$
的子节点
将一下代码插入到该子节点中
proxy_pass http://halo;
4.将下面的内容插入到第69行后面(即在Server内添加一个名为location /
的子节点,与上述两个节点并列)
location / {
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;
proxy_pass http://halo;
}
注意在78行(最下方一行,不一定是78)还有一个反大括号。
点击保存, 配置完成, 等待一段时间的延迟后, 可以通过域名访问博客了, 如果不能访问可以尝试通过宝塔面板重启nginx.
注:如果我们访问我们的博客, 出现css没有的情况有可能是在我们的博客后台->系统->博客设置中的博客地址没有相应的修改成我们的域名, 可以修改为[http://+域名的格式]
SSL认证
为博客增加SSL认证, 能够让其更加安全, 在更多浏览器上认可, 还有图床配置.
建议使用Lets Encrypt, 使用宝塔SSL会比较慢, 申请一种即可.
注:如果我们访问我们的博客,出现css没有的情况有可能是在我们的博客后台->系统->博客设置中的博客地址没有相应的修改成我们的域名。可以修改为[https://+域名的格式]
注: 申请SSL认证必须得等域名审核通过后确保能够通过域名访问我们的博客后才能申请, 否则会申请失败.
参考网址
Halo
- 官网:https://halo.run
- 文档:https://docs.halo.run
- 社区:https://bbs.halo.run
- 主题仓库:https://halo.run/themes.html
- 开源地址:https://github.com/halo-dev/halo
图床搭建
创建图床
博客搭建后, 可以用站长工具ping一下, https://ping.chinaz.com/
图片在阿里云实例中, 加载缓慢, 应该另外搭建图床, 推荐用七牛云, 有免费空间和流量, 具体看七牛云官网.
注册七牛云账号后开始!
进入七牛云控制台
根据官方文档完成创建.
若博客开启了https, 图床也要开启https,否则部分浏览器图片无法打开.
在空间管理> 空间设置中
管理图床PicGo
下载PicGO: 链接
具体可以去网上查看教程. 例如 使用PicGo配置七牛云图床(图文步骤详细)
若觉得上传前重命名弹窗太麻烦了, 可以关闭, 没什么影响.
到了这里, 博客系统就全部搭建完毕了, 开始你的博客生涯吧!
其它
网上参考文章节选:
阿里云配置二级域名
大概流程是通过阿里云的一级域名,创建一个二级域名解析;在解析服务器上设置绑定解析好的二级域名。
工具/原料
- 阿里云后台
- 已经申请阿里云域名(已备案)
- 解析服务器
方法/步骤
登录->控制台->域名,打开域名列表
1、点击解析后进入解析设置,在这里可以定义二级域名。
2、如果二级域名指向是一个解析服务器,请在记录类型选择CNAME记录。如果是一个网址,则选择隐性URL或显性URL ,区别在于转过去之后地址栏内的地址变或是不变。如果不想显示实际地址,建议用隐性。
在这里,由于我指向一个解析服务器,所以使用CNAME记录
3、记录值,是指要转向的地址,也就是实际地址。
1、如果你是转到一个网址,那到此就结束了。几分钟之后二级域名就起效了。
2、如果你是转到一个解析服务器,还需要对方解析服务器上建上这个二级域名的链接。
SSL证书
添加二级域名及注册SSL使用https访问
背景:开发了款小程序要部署,发现小程序只支持https的请求。。。
So,原来的域名已经给Web端绑定且在正式使用中,
百度后发现小程序也支持二级域名,于是便想的在原来域名下开一个二级域名给小程序使用,这种场景也是比较合理的,
一般web使用 www.abc.com 移动端/小程序等则使用m.abc.com等等方式
域名使用的阿里云注册的
进入阿里云控制台,找到域名服务这块,找到注册的域名
点击解析设置,参考说明,这样配置一个 xxx.abc.com的二级域名
解析设置,配置好了二级域名的地址及 记录值(云服务器的IP地址)这样就实现了 域名和IP的绑定
其他的:域名注册,备案等都有很详尽的参考文档,这里不再赘述
接下来我们还需要给域名注册一个SSL这样才能开启https的访问
在阿里云实例中找到 SSL证书 这一项,点击 购买证书
开始不知道可以有免费证书,一看价格还挺贵的,练手项目等花几千块钱肯定划不来。。。
百度看到有说有免费的证书可以使用,如下图,需要选择免费型 DV SSL
当然如果是正式项目等建议还是买付费版的