在Linux服务器部署Halo博客系统及配置HTTPS

Halo 是一款现代化的个人独立博客系统,给习惯写博客的同学多一个选择。
Halo [ˈheɪloʊ],意为光环。当然,您也可以当成拼音读(哈喽)。
一个优秀的开源博客发布应用,值得一试。

前提

  • 具备一定的 Linux 基础。
  • 请先保证已经正确解析域名,以及确认服务器是否需要备案。
  • 请先确保 Halo 的运行端口已经打开。
  • 如果您使用了类似 宝塔面板 之类的 Linux 管理面板,可能还需要在面板里放行端口。

环境要求

  • Linux Server(本文用的是 CentOS 7.7)
  • 512 MB 以上内存(本文用的是 2GiB)
  • Nginx 或者 Caddy(本文用的是 Nginx)

部署 Halo 博客系统

参见 Halo 的官方部署文档:https://halo.run/archives/install-with-linux.html

官方部署文档写的很详细,您只需要在 SSH终端 复制粘贴命令即可完成部署,如需修改配置文件请下载 Halo 官方的公共配置文件进行修改。Halo 博客系统默认使用的是8090端口,请在安全组规则中放行8090端口(如已修改端口则放行自己修改的端口),由于接下来还要配置HTTPS,所以我们顺便放行443端口。
在这里插入图片描述
由于笔者使用的是 宝塔面板(自带防火墙),所以还需在 宝塔面板 上放行 8090 与 443 端口。
在这里插入图片描述
至此,访问您的 服务器ip:8090 应该可以看到Halo博客的安装页面了!
在这里插入图片描述

配置域名访问

  1. 假设您已经成功配置并运行好了 Halo,且不是使用 80 端口运行。
  2. 请确保域名已经成功解析到服务器 IP,并确认服务器是否需要备案。
  3. 请检查服务器的 80 和 443 端口是否开放。
  4. 如 3 所述,如果您使用了类似 宝塔面板 之类的 Linux 管理面板,可能还需要在面板里设置端口。
  5. 并不一定要求按照下列教程操作,这里仅仅以供参考。
  6. 如 2 所述,您需要做的仅仅是反向代理 Halo 运行端口,并配置 SSL 证书而已,所以并不要求配置方式。

使用 Nginx 进行反向代理

安装 Nginx

由于笔者之前安装了 宝塔面板 ,所以直接在 宝塔面板 安装 Nginx 。

当然您也可以使用其他方式安装。
在这里插入图片描述

配置 Nginx

由 Nginx 的默认配置文件(nginx.conf)可看到站点配置文件公共存放路径为 /www/server/panel/vhost/nginx/ 。
在这里插入图片描述

# 下载 Halo 官方的 Nginx 配置模板到上一步的 /www/server/panel/vhost/nginx/ 目录下。
# 当然您可以下载到其他目录,然后自己导入到 nginx.conf 里面。
curl -o /www/server/panel/vhost/nginx/halo.conf --create-dirs https://dl.halo.run/config/nginx.conf

在这里插入图片描述
下载完成之后,我们还需要对其进行修改

# 使用 vim 编辑 halo.conf
vim /www/server/panel/vhost/nginx/halo.conf

打开之后我们可以看到

server {
    listen 80;

    server_name example.com www.example.com;

    client_max_body_size 1024m;

    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://127.0.0.1:8090/;
    }
}

注意:请把server_name后的 example.comwww.example.com 处改为自己的域名。
在这里插入图片描述
修改完成之后

# 检查配置是否有误
sudo nginx -t

# 重载 Nginx 配置
sudo nginx -s reload

至此,您应该可以通过域名访问 Halo 博客了。
在这里插入图片描述
在这里插入图片描述

配置 HTTP 连接

Halo 官方文档演示的是使用 certbot 自动申请证书,笔者自己准备得有证书,所以下面将使用自己的证书进行配置。

如果您是阿里云或者其他云的服务器,基本上都可以申请到免费的一年HTTPS证书,到期了可以再次申请。

申请免费SSL证书的方式很多,请自行百度。

证书申请成功后请下载对应服务器类型的证书文件,本文使用的是 Nginx 服务器。
在这里插入图片描述
下载好后解压证书文件我们会看到里面有 .key 与 .pem 后缀的两个文件。
在这里插入图片描述
我们将其证书文件通过宝塔上传至服务器的目录下面,建议在 Nginx 的根目录里创建 cert 目录(当然您也可以上传到其他目录里),然后将其文件上传到 cert 里面。
在这里插入图片描述
当然,如果您没有使用宝塔面板的话可以使用其他 FTP 工具进行文件上传。

# 编辑从 Halo 官方下载的 Nginx 配置模板(注意文件存放路径)
sudo vim /www/server/panel/vhost/nginx/halo.conf
## 配置http转发到https

server {
    listen 80;

    # 将demo.uanin.com改为您自己的域名
    server_name demo.uanin.com;
    # 上传文件大小的限制
	client_max_body_size 1024m;
    # 将所有http请求通过rewrite重定向到https。
    rewrite ^(.*)$ https://$host$1 permanent;

}

## 配置demo.uanin.com的ssl
server {
    listen 443 ssl;

    # 将demo.uanin.com改为您自己的域名
    server_name demo.uanin.com;
    # 上传文件大小的限制
	client_max_body_size 1024m;
    # 将证书文件存放路径和证书的密钥文件名替换成自己存放路径与证书的密钥文件名。
    ssl_certificate /www/server/nginx/cert/3977015_demo.uanin.com.pem;
    ssl_certificate_key /www/server/nginx/cert/3977015_demo.uanin.com.key;

    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    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;

        # 下面8090是您配置Halo的端口号,笔者这里使用默认端口。
        proxy_pass http://127.0.0.1:8090/;
    }
}

修改完成之后

# 检查配置是否有误
sudo nginx -t

# 重载 Nginx 配置
sudo nginx -s reload

在这里插入图片描述

此时用域名访问网站就已经成功跳转 https 了,但您会发现 css 样式没加载出来。
在这里插入图片描述

遇到这种情况不要慌,这是因为您设置了反向代理之后,没有去 Halo 的管理端设置正确的博客地址,造成资源获取不成功。

解决方法:将博客地址改为带 https 即可。
在这里插入图片描述
注意:在设置了反向代理之后,请一定记得去 Halo 的管理端设置一下正确的博客地址,否则可能会造成资源获取不成功。

再次访问就正常显示了
在这里插入图片描述
在这里插入图片描述
教程到此结束!

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Docker是目前比较流行的容器化技术,其优点在于方便管理和部署应用程序。而Halo博客系统是一款基于Java开发的博客系统,其部署过程比较复杂,需要安装JDK、MySQL等依赖。本文将介绍如何使用Docker部署Halo博客系统。 1. 安装Docker 首先需要在服务器上安装Docker,可以参考官方文档进行安装。 2. 创建Docker镜像 将Halo博客系统打包成Docker镜像,可以通过Dockerfile或者docker-compose.yml文件进行创建。在这里我们以Dockerfile为例。 先创建一个空目录,将Halo博客系统的jar包和配置文件拷贝到该目录下: ``` mkdir -p /opt/halo cp -r halo.jar /opt/halo/ cp -r application.properties /opt/halo/ ``` 然后创建Dockerfile: ``` FROM openjdk:8-jre-alpine MAINTAINER yourname <youremail@domain.com> ADD halo.jar /opt/halo/halo.jar ADD application.properties /opt/halo/application.properties WORKDIR /opt/halo CMD ["java", "-jar", "halo.jar", "--spring.config.location=application.properties"] EXPOSE 8888 ``` 其中FROM指定了基础镜像,ADD将jar包和配置文件拷贝到镜像中,WORKDIR指定工作目录,CMD指定应用启动命令,EXPOSE指定容器监听的端口。 使用docker build命令创建镜像: ``` docker build -t halo . ``` 其中halo为镜像名称,可以根据需要自行修改。 3. 启动容器 使用docker run命令启动容器: ``` docker run -d -p 8080:8888 --name halo-demo halo ``` 其中-d表示启动守护进程,-p将容器的8888端口映射到主机的8080端口,--name指定容器名称,halo为镜像名称。 启动成功后,在浏览器中输入http://localhost:8080访问Halo博客系统即可。 以上就是使用Docker部署Halo博客系统的步骤,相信通过这个实战,大家可以更好地了解云原生中Docker的使用和部署。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值