前置条件

1、服务器(云服务器、VPS、ECS都可以);
  需要有公网IP(v4或v6均可)
2、SSH工具(MobaXterm、Xshell、terminus都可以);
3、注册一个域名;
4、一个面板工具(个人推荐宝塔面板);

在购买云服务器之后,你将会得到SSH登录所需的用户名和密码

一、SSH登录并安装面板

1. 使用SSH连接服务器

这里以MobaXterm为例

①在Remote host输入服务器的ip地址,勾选Specify username,输入SSH的用户名,Port端口默认为22
②点击OK,创建连接


③输入SSH登录密码

  注意:输入密码时不会有显示,输入完成按下回车即可!

这里可以选择保存密码,方便下次登录

2. 安装面板

①输入以下命令安装宝塔面板:

Centos安装脚本:

yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh

Ubuntu/Deepin安装脚本:

wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

Debian安装脚本:

wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh

如果不确定使用哪个Linux系统版本的,可以使用万能安装脚本:
万能安装脚本:

if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh


②这里输入y进行安装

③接下来会询问是否开启SSL,我们不需要操作,默认不需要开启!

④等待安装完毕

⑤在安装完成后,会给出面板地址和登录面板需要的账号密码请妥善保存!

二、登录面板安装软件

1. 登录面板

①使用安装面板时得到的账号密码,登录面板的外网地址

2. 安装软件

②安装LNMP环境


等待几分钟等待安装完成

③安装docker


确定


④等待docker安装完毕

三、使用Docker部署Halo

①回到SSH终端,输入以下命令开始部署halo2

docker run \  
  -it -d \  
  --name halo \  
  -p 8090:8090 \  
  -v ~/.halo2:/root/.halo2 \  
  halohub/halo:2.2.0 \  
  --halo.external-url=http://localhost:8090/ \  
  --halo.security.initializer.superadminuser=admin \  
  --halo.security.initializer.superadminpassword=P@88w0rd

这里~/.halo2中的~表示用户目录

  • -it:开启输入功能并连接伪终端
  • -d:后台运行容器
  • –name:为容器指定一个名称
  • -p:端口映射,格式为 主机(宿主)端口:容器端口 ,可在 application.yaml 配置。
  • -v:工作目录映射。形式为:-v 宿主机路径:/root/.halo2,后者不能修改。
  • halo.external-url :跳转链接,必须设置为你所绑定的域名

建议修改halo.security.initializer.superadminuser参数为自己的用户名

和修改halo.security.initializer.superadminpassword参数为自己的密码




如果要安装halo1,可以使用以下命令

  1. 创建 工作目录
mkdir ~/.halo && cd ~/.halo
  1. 下载示例配置文件到 工作目录
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
  1. (可选) 编辑配置文件,配置数据库或者端口等,如需配置请参考 配置参考
vim application.yaml
  1. 拉取最新的 Halo 镜像
docker pull halohub/halo:1.6.0
  1. 创建容器
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.6.0
  • -it:开启输入功能并连接伪终端
  • -d:后台运行容器
  • –name:为容器指定一个名称
  • -p:端口映射,格式为 主机(宿主)端口:容器端口 ,可在 application.yaml 配置。
  • -v:工作目录映射。形式为:-v 宿主机路径:/root/.halo,后者不能修改。
  • –restart: 建议设置为 unless-stopped,在 Docker 启动的时候自动启动 Halo 容器。



halo1不支持插件和多用户等新特性,但是胜在社区庞大
halo2尚在发展中,现阶段还是halo1更加稳定(推荐)

②等待片刻,自动拉取镜像和部署项目

等待执行完毕之后,就已经部署好了

四、设置反向代理

现在,我们可以通过`IP地址或域名`加上`端口`的方式访问博客

在网址的后面加上/console来配置初始化网站
例如:http://test.zust.online:8090/console
或者:http://192.168.31.29:8090/console
注意:账号和密码是在部署阶段设置的,请妥善保管!

但是这样访问博客非常的不优雅,所以我们需要反向代理


①进入面板后台,新建站点

②输入ip绑定的域名,设置网站为纯静态

③添加反向代理


现在就可以使用域名直接访问服务了

五、申请证书并设置SSL

我们每次打开博客的时候都会显示`不安全`,这样无形中降低了逼格,所以可以通过配置SSL来解决。

同时SSL还将提高网页访问的安全性。
这里以阿里云为例,申请免费的SSL证书,其他平台网上有相关教程

1. 申请证书


①进入阿里云官网,在控制台中找到SSL证书(应用安全)


②选择SSL证书->免费证书->立刻购买


③在弹出窗口中选择免费证书,立刻购买


④回到刚刚的界面,点击创建证书


⑤点击证书申请


⑥输入完整域名,点击提交审核


⑦在你所用的DNS服务中添加他提供的解析记录,然后点击验证


⑧然后就会显示申请审核中,这时候等几分钟就申请好了

2. 配置SSL


①等申请通过后,我们就有了自己域名的SSL证书


②点击下载,然后在弹出页面中选择服务器类型为Nginx


③登录宝塔后台,选择自己博客的网站,点击设置


④选择SSL->当前证书 - [未部署SSL]


⑤我们下载的证书中有PEMKEY两个文件


⑥直接用记事本打开,将证书内容复制进设置中


⑦保存并启用,然后勾选强制HTTPS,点击保存


现在再通过域名访问,可以看到已经是https了,瞬间就高端了不少

用这个方法搭建,使用的是H2数据库,适用于测试环境,如果是生产环境请使用其他数据库
具体参考官方文档:Halo Documents