Docker 部署Halo

Docker 部署Halo

1.创建工作目录

mkdir ~/.halo && cd ~/.halo

2.下载示例配置文件到工作目录

wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml

3.编辑配置文件

vim application.yaml

默认的是h2数据库, 我使用的是mysqlh2配置注释了

server:
  port: 8090

  # Response data gzip.
  compression:
    enabled: true
spring:
  datasource:
    # MySQL database configuration.
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://公网ip:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: xxx
    password: xxx

halo:
  # Your admin client path is https://your-domain/{admin-path}
  admin-path: admin

  # memory or level or redis
  cache: memory

4.添加halodb数据库

Docker 部署Halo_第1张图片

5.防火墙规则

Docker 部署Halo_第2张图片

5.拉取最新Halo镜像

docker pull halohub/halo:1.5.2

6.启动容器

docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.5.2

7.安装配置

Docker 部署Halo_第3张图片
Docker 部署Halo_第4张图片

配置主题

官网主题仓库
https://halo.run/themes.html

Docker 部署Halo_第5张图片

启用主题

Docker 部署Halo_第6张图片

8.nginx代理域名

等了两星期,域名终于下来了,现在使用nginx代理访问

配置文件http层下添加

server {
    listen 80;

    server_name www.smallmayi.com;

    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/;
    }
}

Docker 部署Halo_第7张图片

保存配置,重启nginx,可以直接访问你的博客了

9.配置ssl

SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。

https=http+ssl

Docker 部署Halo_第8张图片

下载ssl证书

nginx目录下创建cert目录,存放证书解压的pemkey

Docker 部署Halo_第9张图片

配置nginx

server {
    listen 80;

    server_name www.smallmayi.cn;
    # 上传文件大小的限制
	  client_max_body_size 1024m;
    # 将所有http请求通过rewrite重定向到https。
    rewrite ^(.*)$ https://$host$1 permanent;

    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/;
    }
}  

## 配置的ssl
server {
    listen 443 ssl;

    # 将demo.uanin.com改为您自己的域名
    server_name www.samllmayi.cn;
    # 上传文件大小的限制
	  client_max_body_size 1024m;
    # 将证书文件存放路径和证书的密钥文件名替换成自己存放路径与证书的密钥文件名。
    ssl_certificate /www/server/nginx/cert/smallmayi.cn_bundle.pem;
    ssl_certificate_key /www/server/nginx/cert/smallmayi.cn.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/;
    }
}

image-20220519111618931
配置成功,前面出现锁标识,不行的话把docker和容器重启一下。

你可能感兴趣的:(blog,halo,docker,mysql,容器)