不知不觉博客似乎挂了5年有余,原先的腾讯轻量云续费属实太贵,最近观腾讯云有活动,且之前的博客用了`halo`无法快速升级(需要升级JDK和不兼容旧的数据库)耽搁了。固重新租了一个5年的服务器,再叙5年青春。

操作记录存档

环境: TencentOS Server 4 for x86_64

安装一些必要的依赖

dnf install java-17-konajdk
dnf install git
dnf install nginx
dnf install mysql mysql-server

下载最新版本的halo

wget https://dl.halo.run/release/halo-2.20.12.jar -O halo.jar

创建halo配置application.yaml指定mysql

server:
  # 运行端口
  port: 8090
spring:
  # 数据库配置,支持 MySQL、MariaDB、PostgreSQL、H2 Database,具体配置方式可以参考下面的数据库配置
  r2dbc:
    url: r2dbc:pool:mysql://localhost/halo2
    username: 
    password: 
  sql:
    init:
      mode: always
      # 需要配合 r2dbc 的配置进行改动
      platform: mysql
halo:
  # 工作目录位置
  work-dir: ${user.home}/.halo2
  # 外部访问地址
  external-url: http://localhost:8090
  # 附件映射配置,通常用于迁移场景
  attachment:
    resource-mappings:
      - pathPattern: /upload/**
        locations:
          - migrate-from-1.x

配置自定义halo.service 并挂载到系统当中

[Unit]
Description=Halo Service
Documentation=https://docs.halo.run
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=root
ExecStart=/usr/bin/java -Dfile.encoding=UTF-8 -server -Xms256m -Xmx256m -jar /root/services/halo/halo.jar --spring.config.additional-location=optional:file:/root/.halo2/config/application.yaml
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog

StandError=inherit

[Install]
WantedBy=multi-user.target

安装并使用acme.sh获得ssl证书

git clone https://gitee.com/neilpang/acme.sh.git

cd acme.sh
./acme.sh --install -m my@example.com

acme.sh  --register-account  --server zerossl \
         --eab-kid  zerossl配置 \
         --eab-hmac-key  zerossl配置
		 
export DP_Id="腾讯云配置"
export DP_Key="腾讯云配置"

编辑nginx配置

upstream halo {
    server    localhost:8090;
    keepalive 2000;
}

server {
    listen 80;
    server_name  blog.metoo.ink i.metoo.ink;
    rewrite ^/(.*)$ https://blog.metoo.ink/$1 permanent;
}

server {
    listen                    443 ssl;
    charset                   UTF-8;
    server_name               blog.metoo.ink;
    client_max_body_size      200M;
    ssl_certificate           /root/.cert/*.metoo.ink/cert.pem;
    ssl_certificate_key       /root/.cert/*.metoo.ink/key.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_pass          http://halo;
        proxy_set_header    Host              $proxy_host;
        proxy_set_header    X-Real-IP         $remote_addr;
        proxy_set_header    X-Forwarded-For   $proxy_add_x_forwarded_for;
        fastcgi_param       REDIRECT_STATUS   200;
    }

}

使用acme.sh定时更新

acme.sh --install-cert -d *.metoo.ink --ecc \
--key-file       /root/.cert/*.metoo.ink/key.key  \
--fullchain-file /root/.cert/*.metoo.ink/cert.pem \
--reloadcmd     "systemctl reload nginx"

最后域名切换