在 windows server 2008 r2上部署 Halo博客

这篇文章主要是分享下在windows服务器上部署Halo博客的过程,Halo博客是款非常优秀的Java博客系统,官方教程上有关于windows本地部署和Linux服务器等部署方式的详细讲解,但在windows server上缺乏相应教程,鉴于部分童鞋服务器是windows环境,因此分享一下这方面的经验。

先致谢学习路上的前辈们:
六分钟在Linux上搭建Halo
Windows搭建本地Halo博客
windows环境下Nginx部署及Https设置

windows server 2008 r2上部署 Halo博客

1、写在前面
2、环境要求
3、安装Halo+开机自启
4、安装Nginx+配置SSL安全证书+开机自启
5、总结

1、写在前面

(1)如需域名绑定,请先保证已经正确解析 IP,以及确认服务器是否需要备案。
(2)如需使用 IP 访问,请先确保 Halo 的运行端口已经打开,默认是8090端口。
(3)出现问题一定要多查看log日志,这比你胡乱搜索有用的多。

2、环境要求

这是我使用的环境配置:
(1)windows server 2008 r2
(2)1G 内存
(3)提前安装好Java环境

3、安装Halo+开机自启

(1)下载配置文件到 ~/.halo 目录
考虑到部分用户的需要,可能需要自定义比如端口等设置项,我们提供了公共的配置文件:下载地址。并且该配置文件是完全独立于安装包的。当然,你也可以使用安装包内的默认配置文件,但是安装包内的配置文件是不可修改的。请注意:配置文件的路径为 ~/.halo/application.yaml。
打开可以看到如下文本,绝大多数情况下不需要用户修改,若需要对参数修改可参照Halo官方Linux安装教程。

server:
  port: 8090

  # Response data gzip.
  compression:
    enabled: false
spring:
  datasource:

    # H2 database configuration.
    driver-class-name: org.h2.Driver
    url: jdbc:h2:file:~/.halo/db/halo
    username: admin
    password: 123456

    # MySQL database configuration.
#    driver-class-name: com.mysql.cj.jdbc.Driver
#    url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
#    username: root
#    password: 123456

  # H2 database console configuration.
  h2:
    console:
      settings:
        web-allow-others: false
      path: /h2-console
      enabled: false

halo:

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

  # memory or level
  cache: memory

(2)下载Halo
下载地址。Halo 的整个应用程序只有一个 Jar 包,且不包含用户的任何配置,它放在任何目录都是可行的。需要注意的是,Halo 的整个额外文件全部存放在 ~/.halo 目录下,包括 application.yaml(用户配置文件),template/themes(主题目录),upload(附件上传目录),halo.db.mv(数据库文件)。一定要保证 ~/.halo 的存在,你博客的所有资料可都存在里面。所以你完全不需要担心安装包的安危,它仅仅是个服务而已。
(3)启动测试Halo
在Halo的jar包目录下进入cmd,输入对应的jar包名称执行即可,我这里是halo-1.3.2.jar

java -jar halo-1.3.2.jar

如看到以下日志输出,则代表启动成功.

Halo has started successfully!

对于启动过一次的Halo,windows是默认在C盘的用户名目录下生成一个.halo文件夹
在 windows server 2008 r2上部署 Halo博客_第1张图片
(4)设置Halo开机自启
以上的启动仅仅为测试 Halo 是否可以正常运行,如果我们想一开启服务器Halo就处于运行状态,请继续看下面的教程。
对于存放jar包的文件夹:
在 windows server 2008 r2上部署 Halo博客_第2张图片
下载WinSW.NET
到GitHub下载地址下载WinSW.NET
WinSW.NET2.exe (适用于32位系统)
WinSW.NET4.exe (适用于64位系统)
然后把这个WinSW.NET4.exe文件放到你的文件夹下(此处为blog)。将WinWE.NET.exe文件也重命名为halo-1.3.2.exe
重命名JAR&EXE
再在这个文件夹下创建一个halo-1.3.2.xml文件,编辑xml为如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<service>
    <id>blog</id>
    <name>blog</name>
    <description>This is Halo-Blog forWindows Service</description>
    <executable>java</executable>
    <arguments>-jar "halo-1.3.2.jar"</arguments>
    <startmode>Automatic</startmode>
    <logpath>%BASE%\log</logpath>
    <logmode>rotate</logmode>
</service>

安装Win服务
打开开始菜单,搜索CMD,右键以管理员身份运行。进入刚才我们的blog文件夹,执行命令安装命令。

cd C:\MyDisk\blog
halo-1.3.2.exe install

出现此提示即可 : INFO - Installing the service with id ‘blog’
此时在计算机>>管理>>服务和应用程序>>服务中也能查到blog服务。

4、安装Nginx+配置SSL安全证书+开机自启

(1)下载Nginx
在官网下载最新版Nginx的zip包,解压。
(2)申请SSL证书
我是阿里云的服务器,参照这个教程申请,其它服务器也可百度查到。
申请完成后,下载发放的证书文件,包含一个key文件和一个pem文件,在conf目录下新建一个cert文件夹,将对应的这两个文件放进去,留作等会配置用,这里简称demo.key和demo.pem。
(2)修改conf文件,配置nginx和ssl证书
在解压的文件夹内>>conf>>nginx.conf,对该文件进行编辑(建议别使用记事本,改用markdown或notepad 3这样的编辑器)。
在这个文件的最后一个花括号之前添加一行代码:

include vhost/*.conf;

在 windows server 2008 r2上部署 Halo博客_第3张图片
在 windows server 2008 r2上部署 Halo博客_第4张图片
然后在这个conf文件夹下创建一个vhost文件夹,并在这个vhost文件夹下创建一个.conf的文件,前缀随意。在这个conf文件中添加以下代码:(以demo.com为示范域名,同时编辑你对应服务器的ip和端口号)

server {
       
        listen 443 ssl;
        server_name demo.com www.demo.com; #修改为申请证书绑定的域名
        access_log C:/MyDisk/blog/log/halo_blog.nginx.access.log combined;
        error_log  C:/MyDisk/blog/log/halo_blog.nginx.error.log;
        root html;
        index index.html index.htm;
        ssl_certificate   cert/demo.pem; #修改为下载的证书文件名
        ssl_certificate_key  cert/demo.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://ip:端口号;    #此处为你的服务器地址以及端口号,可以直接用halo默认的8090端口
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        
    }

    server {

        listen       80;
        server_name  www.demo.com; #修改为申请证书绑定的域名
        rewrite ^(.*)$ https://${server_name}$1 permanent; 
    }

(3)Nginx开机自启
和刚才的Halo自启一样,复制刚才的WinSW.NET,放到你安装nginx的目录下。重命名为nginxservice.exe。
新建一个nginxservice.xml,编辑代码:

<?xml version="1.0" encoding="UTF-8"?>
<service>
    <id>nginx</id>
    <name>nginx</name>
    <description>This is nginx for Windows Service</description>
    <executable>C:\MyDisk\nginx-1.9.9\nginx.exe</executable>
    <stopexecutable>C:\MyDisk\nginx-1.9.9\nginx.exe -s stop</stopexecutable>
    <startmode>Automatic</startmode>
    <logpath>C:\MyDisk\nginx-1.9.9\logs</logpath>
    <logmode>roll</logmode>
</service>

如图所示:
在 windows server 2008 r2上部署 Halo博客_第5张图片
然后以管理员身份运行CMD,安装服务,在nginx目录下执行:

nginxservice.exe install

这些都完事了后,重启服务器,然后过一会,halo和nginx自启完成后,登录你的域名www.demo.com,不出意外的话是完事了。
在 windows server 2008 r2上部署 Halo博客_第6张图片

5、总结

啊,你说你打开域名没正确显示博客,这太正常了,整个过程总有些坎坷,我前前后后也是弄了好久才整下来,不要着急,慢慢来就行,总结下常见问题吧:
(1)halo启动后界面图片加载异常
这种情况无非两种,一个是本身的jar包有问题,还有就是资源没对应到域名所在的服务器,建议下载最新版jar包,然后在所有事完成初始化Halo时,记得写入正确的域名地址(采用了nginx代理,别再填localhost了)
(2)nginx一直显示欢迎界面,不出博客页面
这种情况最好的解决办法就是查看nginx的log日志,对应解决。无非是文件配置写错或者是端口占用。可以参考这篇博客。
(3)访问域名后提示备案
解决办法:域名备案或换用国外服务器
(4)我想卸载xxx怎么办
解决办法:先在服务中停止对应的服务,然后和之前install过程反着来,

xxx.exe uninstall

(5) more…
查看日志,百度,谷歌。自己动手丰衣足食。
关于主题界面和美化就和Linux没什么区别了,可以去Halo主题仓库下载使用,希望你们喜欢!

你可能感兴趣的:(脑洞系列)