Halo博客搭建教程(阿里云部署)

Stars-one 2020年07月14日 1,023次浏览 本篇字数为4,941字

本文为作者原创,转载请注明出处,谢谢配合
作者:Stars-one
链接:https://stars-one.site/2020/07/14/halo博客搭建教程阿里云部署


前言碎碎念

其实很早之前就是想搭建自己的个人博客的想法了,只不过一直没下定决心。刚好,毕设购买了阿里云的服务器来做API服务器(APP可以向服务器请求并返回数据),服务器有一年的期限,之后闲置的也是浪费,便是拿来做个人博客的服务器吧。

之后我便是对比了市面上的博客系统,由于我是Java开发,所以不是Java开发的博客系统都不考虑,于是便是发现了几款Java的博客系统。个人选出了自己比较喜欢的两个博客系统solo和halo。

solo博客系统是由一个个人开发者开发的,他是全职做开源,做了十年的大佬,有点佩服他,这博客系统的功能挺多,可以将网站静态化,之后利用gthub或gitee的page服务部署,而且比较美观,但是部署的步骤极为的繁琐,虽然入门的开发文档写得十分的详细,但是真的劝退。。

于是我便选择了halo作为我的博客系统,这个系统基本的功能都有,而且部署十分方便,实际上你只需要运行jar包即可,但部署到服务器上的话,需要懂点linux命令(不过入门开发文档有写,参考一下即可成功部署了)。halo系统我最喜欢的一点就是,直接运行jar包,之后访问localhost:端口号即可看到界面,之后输入相关的信息,博客就已经部署完毕了。

折腾过程

本篇与halo的部署文档结合参考更佳!

1.下载并部署

根据官方给出的文档,下载配置文件和jar包(官网给出的其实就是将配置文件和jar包放在服务器上,之后用服务器进行部署),各位如果不熟的话,可以用宝塔管理系统,将文件上传到服务器上接口。

之后,按照文档中的配置进行设置开机启动,设置端口号。

启动jar包后,你就可以通过你服务器ip地址+端口号访问到博客的页面了,第一次进入页面即进入配置界面,简单的设置之后即可进入到你博客的首页了。

2.域名解析绑定服务器

域名你可以到阿里云、腾讯云等服务商进行购买,购买域名成功之后,你可以通过域名管理的解析功能,将你的域名映射到你的服务器的ip地址,之后即可通过域名+端口号访问你的博客了

点击进入阿里云域名控制台界面,选择域名解析

选择你的域名,之后点击新手引导,让系统帮你填写

之后你就可以通过www或者原域名访问到你的服务器的ip地址了,比如说你的域名为xx.com,服务器的ip地址为11.22.33.44,你可以通过www.xx.com或者xx.com访问你的ip地址

你部署了某个服务器应用程序,对应的端口为9000,你访问www.xx.com:9000就是相当于访问11.22.33.44:9000

如果你不想输入端口号,得将域名进行备案,只有备案通过之后,你才可以使用80和443端口

3.ICP备案和公安联网备案

备案分为两个备案,一是ICP备案,而是公安联网备案

这里填写资料什么的就不多说了,首先是要通过阿里云的初审,阿里云初审还需奥钉钉视频验证(笑哭),之后由管局审核,等了二十多天才审核通过

通过了ICP备案,你的服务器就是开通80和443端口了,其中80端口对应的是http协议,443端口对应的是https协议,你需要去防火墙里,放行这两个端口才行(阿里云服务器控制台和宝塔系统(假如你安装了的话)的安全菜单都要允许通过才行。

你需要进入到服务器的管理后台,选择防火墙,之后进行添加规则操作即可

下图为宝塔系统的端口放行:

ICP备案申请通过之后你可以获得一个备案号,之后再去公安联网备案,以前好像都是需要去公安局备案,现在网络环境下,就可以直接通过网络登录到公安联网备案进行备案。

本质上,通过了ICP备案应该不用公安联网备案了,但是,如果你被查到没有进行公安联网备案,公安会通知你的服务商将你的网站关停...

公安备案填写的资料是需要ICP备案号,除此之外,还需要一些其他的资料,由于我部署的服务器是阿里云,购买的域名也是在阿里云下购买的,填写的资料如下图所示

这里是阿里云帮助文档给出所要填写的信息,至于其他腾讯云等,应该也有相关的说明。

4.使用网址访问博客

你有了ICP备案之后,以及服务器放行了80和443端口之后,你就可以配置了网址访问了。这里我使用的是nginx反代服务器,需要配置一下

server{
	listen 80;
	#改为你自己的域名
	server_name xx.com www.xx.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:9090/;
}

我之前使用的宝塔,已经默认安装好了nginx,我们可以把上面的而配置信息保存在某个目录,之后让nginx的主配置文件把我们的配置的文件包含进来即可,具体操作请看图

include /etc/nginx/conf.d/halo.conf; 后面的文件路径改为你的配置文件即可,注意不要漏了分号

不要忘记了重载配置

之后你就可以通过http://xx.com来访问你的博客了

5.设置https访问

https请求与上述类似,你得自己去申请个ssl证书才行,阿里云有免费的证书,不过只能使用一年,使用一年后可以重新申请一个免费的(去阿里云SSL证书管理控制台申请即可)

之后等签发下来后,点击下载,选择nginx部署,会给两个文件,pemkey文件
,把这两个文件放在nginx具体路径里就可以了

设置https访问需要去设置域名解析,具体步骤官方文档都有说明,我这里只贴出我的nginx配置

ssl.pem和ssl.key放在nginx目录的config下,当然,你也可以不创建cert文件夹

server {
	listen 443 ssl;
	#修改域名
    server_name xx.com www.xx.com;

	ssl_certificate cert/ssl.pem;   #将cert/ssl.pem替换成您证书的文件名。
	ssl_certificate_key cert/ssl.key;   #将cert/ssl.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;

        proxy_pass http://127.0.0.1:9090/;
    }
}
server{
  listen 80;
   #改成你自己的域名
   server_name stars-one.site www.stars-one.site;
  
  if ($http_x_forwarded_proto = 'http'){
    #return 301 https://$host$request_uri;
    rewrite ^(.*)$ https://$host:443/$1 permanent;
    }

}

记得重载nginx配置哦,愉快地访问你自己的博客吧~

关于版本更新

从官网下载最新jar包,修改这个/etc/systemd/system/halo.service文件中的jar包路径为最新的jar包,之后重启service即可

# 修改 service 文件之后需要刷新 Systemd
sudo systemctl daemon-reload
# 重启 Halo
sudo service halo restart