写一篇关于配置halo的坑——涉及服务器,域名,证书。(新手入门windows环境下)

简介:本文为新手所写,为后续新手避坑,大佬勿喷。

一、安装与配置


(1) 前提工作

首先我们打开文档,把关于文档写在前面先看了

  • 本文使用的是(若与本文不同,可以自行百度相关知识)

    • 阿里云服务器、域名。
    • 服务器环境Linux
    • 塔宝(不用也可看此文)。
    • 自带H2的数据库和JDK11。
  • 工作目录(来自官网文档 写在前面)

    1. db:存放 H2 Database 的物理文件,如果您使用 MySQL 数据库,那么不会存在这个目录
    2. templates/themes:里面包含用户所下载的主题。
    3. static:相当于网站的根目录。
    4. logs:运行日志目录。
    5. upload:附件目录。
    6. application.yaml:配置文件。
  • 服务器的选购和域名的申请,网上一大堆视频教程,这里做个简单推荐。

    • 阿里云服务器ECS新手搭建网站视频教程(详细版)
    • 从这里开始你就可以打开上述视频边看边操作。
    • 服务器第一次购买的时候有极大的优惠 建议忍痛买久的。
    • 关于服务器推荐购买能获取一部分利润此块可自行百度。(找人配合可再便宜)
    • 如果经济充裕,建议提高带宽,如果只是个人测试1M即可。
    • 域名的申请需要时间。注意一些域名可能不支持免费申请证书等。
  • 关于证书的免费申请,上述视频中已经失效了,阿里云域名证书申请步骤如下

    首先登陆阿里云,打开域名
    image-20210402012947166
    点击你的域名,
    image-20210402013218964
    开启ssl证书
    image-20210402013311920
    选择中间的购买证书,切记别点快捷购买image-20210402013439648

配置对了之后会出现证书资源包,点击。 之后直接购买。接着相关操作后,等待证书申请成功。

等待过程中,可以进行验证,打开域名界面,打开域名列表image-20210402013705431点击相关域名,解析。

是否出现image-20210402013748174

这个是官网自己要弄的验证,申请成功后应可删除,如果没有自行添加

image-20210402013826705

image-20210402013846992

获取到官方提供的20个整数后,点击证书申请
image-20210402013940040

我这是成功状态,没记错的话这里有一步 域名绑定相关配置,配置完后基本秒到。

由于我使用的是nginx反向代理,所以这里点击下载

image-20210402014121417

Nginx,获取一个压缩包 解压出来,然后先放着 后续会用到;

(2)安装halo

  • 我们这里使用官网文档流程(CentOS)

    • Linux教程

    • 依赖检查的坑

      • 安装完jdk11后,一定要版本检查,如果检查到jdk8版本的话,需要配置成jdk11
      • 比较简单的暴力解决方法(删除所有jdk,重新下载jdk11)
      1. 输入rpm -qa|grep jdk 查看已安装的jdk

      2. rpm -e `rpm -qa|grep jdk` 删除jdk

      3. rpm -qa|grep jdk 再次查看

      4. 注释或删除环境变量(根据自己的情况)vi /etc/profile

        #export JAVA_HOME=/usr/java/jdk1.6.0_20

        #export CLASSPATH=.;$JAVA_HOME/lib/dt.jar;$JAVA_HOME/lib/tools.jar

        #export PATH=$PATH;$JAVA_HOME/bin

      5. source /etc/profile 加载环境变量

      6. 然后安装官网操作重新下载和检查

    • 安装的坑

      • 这里强烈推荐创建新的系统用户,然后一路操作

      • 记得在阿里云服务器把端口8090打开不会操作的看视频。

      • 端口占用的坑(这里提供两种解决思路)

        1. 第一种 修改配置文件 vim application.yaml 官网有提供参考配置, 我们修改server里面的port找个没被占用的端口,不会使用vim的同学可以查看Linux教程

        2. 杀死占用端口的进程(暴力,往往代表着简单和不可挽回的后果)

          这里自行百度吧

      • 那么到此,你可以访问halo并进行设置了,账号密码别忘了。

      • 由于你的服务器正在跑 ,要么你用xshell 打开一个新的会话连接,要么你Ctrl+c暂停运行 ,如果你想以后自动运行该jar包的话。请进行下一步操作

    • 作为服务运行的坑(这里如果会用插件挂服务的话可以自己配置)

      • 修改配置的坑

        1.如果有安装上述的创建新的系统用户步骤 请修改 User=halo

        2.把YOUR_JAR_PATH删掉换成 /home/halo/app/halo.jar

(3)配置Nginx

  • 官方的配置

建议不要在Nginx.conf里配置,如果你有下载塔宝(并配合了视频食用建议不要直接修改,选择下面方式)
这是配置模板

upstream halo {
  server 127.0.0.1:8090;
}
server {
  listen 80;
  listen [::]:80;
  server_name youdomain.com;
  client_max_body_size 1024m;
  location / {
    proxy_pass http://halo;
    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;
  }
}

把youdomain.com改成你的域名,server对应端口号

官方提醒 注意:Nginx 默认的 client_max_body_size 配置大小为 1m,可能会导致你在 Halo 后台上传文件被 Nginx 限制,所以此示例配置文件加上了 client_max_body_size 1024m; 这行配置。当然,1024m 可根据你的需要自行修改

  • 配置Nginx的坑,如果你安装了Nginx但不知道在哪配置可以使用一下命令
    • nginx -t
      image-20210402024337885

      然后我们vim /www/server/nginx/conf/nginx.conf

      拉到最下面来 找到include

image-20210402024527432

我们进入改目录 cd /www/server/panel/vhost/nginx

使用命令
curl -o /www/server/panel/vhost/nginx/halo.conf --create-dirs https://dl.halo.run/config/nginx.conf

过一会就下载好模板了,如果下载失败再试一次 ,如果再失败 ,使用Linux命令自己创建,模板在上面,自己复制

然后按上述要求进行修改。

修改完成之后,输入命令

有宝塔的可以用宝塔重载

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

# 重载 Nginx 配置
sudo nginx -s reload

到此,http下的Nginx配置完成。记得阿里云服务器把80端口打开。

  • ssl证书配置

配置模板

server {
    listen 80;

    # 将改为您自己的域名
    server_name catsevenven.com;

    # 将所有http请求通过rewrite重定向到https。
    rewrite ^(.*)$ https://$host$1 permanent;

}

server {
  listen 443 ssl;
  server_name catsevenven.com;
  client_max_body_size 1024m;
  ssl_certificate /www/server/nginx/cert/5415606_catsevenven.com.pem;
  ssl_certificate_key /www/server/nginx/cert/5415606_catsevenven.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 ~ .*\.(js|css)?$
{
    proxy_pass http://127.0.0.1:8090;
    expires      12h;
    error_log /dev/null;
    access_log off;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
    proxy_pass http://127.0.0.1:8090;
    expires      30d;
    error_log /dev/null;
    access_log off;
}
  location / {
    proxy_pass http://127.0.0.1:8090/;
    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;
  }
}


目前写到此

Q.E.D.