halo,就是一个由Java编写的博客系统,它非常的简洁,适合我们建立个人网站,发表各种文章。下面记录一下搭建的全过程,虽然官网有过程,但我还是被坑了好久……qwq

你需要准备:Linux服务器(阿里云腾讯云都行,学生机很便宜),已备案的域名。
另外,这只是个人的记录,更细致的东西还得参考官网上的步骤,这里只是纯纯纯小白方法,还有很多东西没有提到。


  1. 准备工作

    • 系统:使用CentOS 7.x
    • 服务器配置:更新软件包
      sudo yum update -y
    • 安装Java环境
      sudo yum install java-1.8.0-openjdk -y
  2. 下载&安装

    • 下载最新版Halo

      这里有点坑,它似乎是国外的服务器,在国内下载的话会非常慢,只有几十kb每秒不到。文件不大,只有72.2MB,但它需要耗费你很多时间下载。
      所以我准备了halo-1.2.0.jarhalo-1.3.0.jar,可以在这里下载然后再上传到服务器。(能更快1、、吧,我最近下1.3.0的感觉确实快了不少,但也还是放在上去吧)
      下面提供的是官网下载的方式,也可以尝试一下。

      下面几条命令择一运行即可。
      wget https://dl.halo.run/release/halo-1.2.0.jar -O halo-latest.jar

      wget https://halo.nova.moe/release/halo-{{version}}.jar -O halo-latest.jar

      wget https://github.com/halo-dev/halo/releases/download/v1.2.0/halo-1.2.0.jar -O halo-latest.jar(建议海外服务器使用)

      PS:下载的Jar包可以放在任意位置,但其它的文件都存放在**~/.halo**中,包括配置文件和数据,所以一定要保证它的存在。(它的意思是,都已经是隐藏目录了,就不要再随随便便地去碰它了)

    • 启动测试

      java -jar halo-latest.jar

      当看见如下日志,则代表成功。

      run.halo.app.listener.StartedListener    : Halo started at         http://127.0.0.1:8090
      run.halo.app.listener.StartedListener    : Halo admin started at   http://127.0.0.1:8090/admin
      

      其实你只要等一会,然后在浏览器的地址框中输入[ip:8090],就可以看到Halo长啥样了。(记得在服务器的安全组上开放8090端口哦...)
      看到就代表成功了,别急,再继续接下来的操作,跟着一步一步来就好。

  3. 配置

    其实Halo就是一个程序,想一直都能访问它,就需要做出更完善的配置,比如开机启动?等等等等……
    跟着教程,我们新增一个配置文件。

    sudo curl -o /etc/systemd/system/halo.service --create-dirs https://dl.halo.run/config/halo.service

    然后修改它(vim的相关操作你应该会的...)

    sudo vim /etc/systemd/system/halo.service

    打开之后,你仅需要将YOUR_JAR_PATH替换成Halo Jar包的绝对路径就行了,其它的不用管。

    然后运行下面这几条命令就好了

    刷新
    sudo systemctl daemon-reload
    开机自启
    sudo systemctl enable halo
    重启Halo
    sudo service halo restart

  4. 域名访问

    你想访问自己的网站,当然不会用ip+端口号这种方法来访问了。
    所以你需要使用反向代理,来实现域名进站。
    这里官网有详细的操作方法,我就不再cp过来了。
    下面说说自己现在的配置。(如果想模仿,请先成功完成官网的步骤,再继续)

    如本站所示,当我输入tanjiaming99.com或者www.tanjiaming99.com时,它都会跳转到https://tanjiaming99.com。

    思路:把http请求跳转到https请求中,再根据域名来处理。

    首先,把halo.conf(官网给定的模版)修改如下

server {
  	listen *:80 default_server;
	listen [::]:80 default_server;
	server_name tanjiaming99.com www.tanjiaming99.com;
	rewrite ^(.*) https://$host$1 permanent;
}
它的意思是,把请求都重定向到https://xxx中

然后再修改nginx.conf文件(它在/etc/nginx中)

其实就是把它的注释给放出来,它已经写好了一个模版了,直接抄就行。里面还有一些解释。
    server {
        listen       443 ssl http2 default_server;
        listen       [::]:443 ssl http2 default_server;
        # 填上你的域名
        server_name  tanjiaming99.com www.tanjiaming99.com;
        root         /usr/share/nginx/html;
        # 这里是放SSL证书,都能免费申请的
        # 我是因为有了一个,所以没有跟着官网上的来
        ssl_certificate "/etc/pki/nginx/cert.crt";
        ssl_certificate_key "/etc/pki/nginx/private/cert.pem";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        # 刚刚说了,所有的http请求都跳转到这里了
        # 而跳转的请求中,若有名为www.tanjiaming99.com的,则又跳转到tanjiaming99.com中
        # 所以,无论什么样的请求,最终都是跳转到了https://tanjiaming99.com
		if ( $host = "www.tanjiaming99.com" ) {
     		rewrite ^/(.*)$ $scheme://tanjiaming99.com/$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/;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

#        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

至此,你就可以通过域名访问你的网站了。可以试着跟着官网弄个SSL,也可以试着抄上面那段代码来实现。
对了,要写文章什么的,都是在后台弄的哦,也就是 域名/admin,直接访问的域名的界面是展示给别人看的。

到现在,已经成功安装好了Halo,可以在上面尽情的操作了……
每次安装东西都会有奇奇怪怪的错误,搞了好久都弄不好,以后安装都记录下来,免得再踩坑。
如果还要再安装这些,把它翻出来,一切都好办!

再提一嘴,现在已经更新到了1.3.0了,我又搞了好久时间……
总的来说,跟着官方文档走肯定没错!!!