废话不多说,直接上教程

  • 想要了解更多有关halo博客的信息请访问官网:https://halo.run/
  • 本教程以 CentOS 7.x 为例,配置并运行 Halo,其他 Linux 发行版大同小异。

环境要求

为了在使用过程中不出现意外的事故,给出下列推荐的配置,我的是centos7.3版本

  • CentOS 7.x
  • 512 MB 以上内存

在开始之前,最好先到域名服务商解析域名,设置 A 记录并指向服务器的 IP 地址,并确保已经正确解析以及没有被工信部拦截(国内服务器需备案),你可以在本地使用 Ping 命令检查域名是否已经正确解析到了服务器的 IP 地址。以方便在安装过程中为域名配置 SSL 证书。

服务器配置

更新软件包

请确保服务器的软件包已经是最新的。

sudo yum update -y

安装 Java 运行环境
有关安装java环境的可以访问我的 这篇文章:https://blog.csdn.net/qq_41684621/article/details/102934590
当然也可以按照halo官网里的做法来安装,我是环境是以前就部署过java web项目的,所以有关java的环境都安装了。
最后验证下:

java -version

安装 Halo

下载配置文件
考虑到部分用户的需要,可能需要自定义比如端口等设置项,我们提供了公共的配置文件,并且该配置文件是完全独立于安装包的。当然,你也可以使用安装包内的默认配置文件,但是安装包内的配置文件是不可修改的。请注意:配置文件的路径为 ~/.halo/application.yaml。

# 下载配置文件到 ~/.halo 目录
curl -o ~/.halo/application.yaml --create-dirs http://halo.ryanc.cc/config/application-template.yaml

修改配置文件
完成上一步操作,我们就可以自己配置 Halo 的运行端口,以及数据库相关的配置了。

# 使用 Vim 工具修改配置文件
vim ~/.halo/application.yaml

打开之后我们可以看到

server:port: 8090
spring:datasource:type: com.zaxxer.hikari.HikariDataSource# H2 Database 配置,如果你需要使用 MySQL,请注释掉该配置并取消注释 MySQL 的配置。driver-class-name: org.h2.Driverurl: jdbc:h2:file:~/.halo/db/halousername: adminpassword: 123456# MySQL 配置,如果你需要使用 H2Database,请注释掉该配置并取消注释上方 H2Database 的配置。#    driver-class-name: com.mysql.cj.jdbc.Driver#    url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai#    username: root#    password: 123456# H2 Database 的控制台相关配置,如果你使用的是 MySQL ,请注释掉下方内容。h2:console:settings:web-allow-others: falsepath: /h2-consoleenabled: false

MySQL 版本需 5.7 以上,我的云服务器上的mysql是5.6版本的,所以我这里是直接默认选用h2数据库,毕竟也就是存入少量的用户信息,不必麻烦又启动一个mysql服务。

关于上述的配置详情请去官网了解。

运行 Halo

Halo 的整个应用程序只有一个 Jar 包,且不包含用户的任何配置,它放在任何目录都是可行的。需要注意的是,Halo 的整个额外文件全部存放在 ~/.halo 目录下,包括 application.yaml(用户配置文件),template/themes(主题目录),upload(附件上传目录),halo.db.mv(数据库文件)。一定要保证 ~/.halo 的存在,你博客的所有资料可都存在里面。所以你完全不需要担心安装包的安危,它仅仅是个服务而已。

最新版本:

wget http://halo.ryanc.cc/release/halo-latest.jar -O 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

上面的http://127.0.0.1:8090表示的是本地启动时出现的,我在云服务器上启动的时候是服务器上的内网IP

以上的启动仅仅为测试 Halo 是否可以正常运行,如果我们关闭 ssh 连接,Halo 也将被关闭。要想一直处于运行状态,请继续看下面的教程。

进阶配置

上面我们已经完成了 Halo 的整个配置和安装过程,接下来我们对其进行更完善的配置,比如:需要开机自启?,更简单的启动方式?

实现以上功能我们只需要新增一个配置文件即可,也就是使用 Systemd 来完成这些工作。

# 下载 Halo 官方的 halo.service 模板
sudo curl -o /etc/systemd/system/halo.service --create-dirs http://halo.ryanc.cc/config/halo.service

如有失效请去官网下载

下载完成之后,我们还需要对其进行修改。

# 修改 halo.service
sudo vim /etc/systemd/system/halo.service

打开之后我们可以看到

[Unit]
Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target[Service]
Type=simple
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar JAR_PATH
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslogStandError=inherit[Install]
WantedBy=multi-user.target

参数:

  • Xms256m:为 JVM 启动时分配的内存,请按照服务器的内存做适当调整,512 M 内存的服务器推荐设置为 128,1G 内存的服务器推荐设置为 256,默认为 256。
  • Xmx256m:为 JVM 运行过程中分配的最大内存,配置同上。
  • JAR_PATH:Halo 安装包的绝对路径,例如 /www/wwwroot/halo-latest.jar,这里就是刚才wget下载halo-latest.jar的所在的路径。

如果你不是按照上面的方法安装的 JDK,请确保 /usr/bin/java 是正确无误的。

# 修改 service 文件之后需要刷新 Systemd
sudo systemctl daemon-reload# 使 Halo 开机自启
sudo systemctl enable halo# 启动 Halo
sudo service halo start# 重启 Halo
sudo service halo restart# 停止 Halo
sudo service halo stop# 查看 Halo 的运行状态
sudo service halo status

完成以上操作即可通过 IP:端口 访问了。不过在此之前,最好先完成后续操作,我们还需要让域名也可以访问到 Halo,请继续看 配置域名访问。

配置域名访问

使用 Nginx 进行反向代理

安装 Nginx:关于安装nginx,可以访问我的这篇文章:https://blog.csdn.net/qq_41684621/article/details/102934590
也可以按照官网的方法来安装。

配置 Nginx
由于之前安装过nginx,我的服务器上nginx所处的配置文件在如下路径:/usr/local/nginx/conf/nginx.conf 下,打开后直接添加如下内容到对应的server下:

server {listen 80;server_name example.com www.example.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:8090/;}
}

上述的example.com改为自己已经解析好了的域名即可

此时的proxy_pass http://127.0.0.1:8090/代表的是当有访问域名时,nginx会反向代理到主机的(服务器)的8090上,所以这里的127.0.0.1表示的是localhost的意思。

这个时候用域名的原因就是不需要每次访问时都要写端口号了,如果没有备案的域名,这里的listen就要改为8090,example.com就要改为服务器的ip地址(公网),也后面的代理也不需要了。如下:

server {listen 8090;server_name IP;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;}
}

因为如果是域名的话默认的ip端口都是80,所以访问的时候就不需要多此一举了写上端口号了,而一个主机公网IP可以解析出不同端口号,所以想监听哪个端口号就写哪个。而且二级域名就是利用了这个原理,把一台主机的IP监听的80端口给分成了不同监听对象的小模块!

修改nginx配置文件完成之后:

# 检查配置是否有误
sudo nginx -t# 重载 Nginx 配置
sudo nginx -s reload

关于配置 SSL 证书,请访问官网了解详情。

到这里,关于 Nginx 的配置也就完成了,现在你可以访问一下自己的域名,并进行 Halo 的初始化了。

云服务上搭建halo博客相关推荐

  1. 从零开始在云服务器上搭建个人博客

    写在前面 搭建个人博客不仅可以将学过的知识融会贯通更好的理解,还可以将自己的经验或者是踩过的坑传授给后来者,帮助他们更好的学习!Halo是在Github上开源的Java博客系统,我将用它从零开始在阿里 ...

  2. 【保姆级教程】基于WordPress在阿里云服务器上搭建个人博客网站

    写之前先回答几个问题: 1,网上类似的教程非常多,为什么写这篇教程? 答:博客网站我搭建过好几次,但是每次搭建都需要再去网上搜教程:然而网上的教程坑很多,甚至有些是错误的,不能完美解决自己的问题,有时 ...

  3. 阿里云Serverless 极速搭建Hexo博客

    阿里云Serverless 极速搭建Hexo博客 阿里云Serverless 极速搭建Hexo博客 地址 开通函数计算服务 安装Serverless Devs命令行工具 安装Node.js环境. 解压 ...

  4. 在Github上搭建Jekyll博客和创建主题

    在Github上搭建Jekyll博客和创建主题 之前本来想展开写的,后来发现Jekyll官网的教程已经非常完善了就没有多写,所以只有这篇. 但是过了这么久,发现很多人还是不清楚怎么搭建,所以这里打算详 ...

  5. CentOS7云服务器上部署小而美博客

    CentOS7云服务器上部署小而美博客 安装JRE 安装tomcat 开放端口 阿里云服务器设置 安装nginx 数据库操作 域名注册 导出war包 部署的博客地址 安装JRE 由于已经在Window ...

  6. jekyll php,使用Jekyll在Github上搭建个人博客(文章分类索引)

    系列文章传送门: 今天又滚出去野了一天,打牌输了,好在输的不多,聊天聊到了以后的路子,不太好走啊... 使用Category分类 一般来说,一个个人博客的文章会分为很多种,比如说有记录生活情感的.技术 ...

  7. 电信天翼云搭建Halo博客

    电信天翼云搭建Halo个人博客 1.购买服务器 学生党错过双十一各大云厂商搞活动,想在趁着年末各大云厂商搞活动租个一年的服务器,浏览阿里云.腾讯云.百度智能云.华为云.七牛云.天翼云等各大网站后,发现 ...

  8. 阿里云服务器搭建halo博客

    环境准备 1.安装jdk11 目前运行 Halo 的最低依赖要求为 JRE 11,因此先安装jdk11 # 1. 安装JDK [root@centos ~]#sudo yum install java ...

  9. VPS服务-Docker搭建个人博客网站

    容器安装 本人购买的 VPS 服务器是 Centos 8 操作系统,为了基于 Docker 搭建 WordPress 个人博客网站,首先需要安装 Docker 环境的过程如下: 1.下载 docker ...

最新文章

  1. mysql 剔除不可见字符_机器视觉OCR字符检测在食品瓶盖上的应用
  2. raid 物理盘缓存状态_使用MegaCli工具查看Raid磁盘阵列状态
  3. springboot+事务,多张表的操作事务回滚
  4. IE6不支持hover赋予css样式的解决方法 如div:hover li:hover支持
  5. 学python必须得英语精通吗_“学习python必须精通的几个模块“
  6. 阿里云三代掌门人首次同台,共叙云计算十年风云路!
  7. project安装包_Project项目计划进度可编辑模板及安装包免费获取
  8. 封装自己的Flex工具_SocketTool
  9. matlab窄带高斯随机信号,06实验六:窄带随机信号仿真与分析
  10. 计算机专业对于英语水平的要求,英语对计算机专业的重要性及如何提高英语水平...
  11. html弄出油画效果,使用HTML5 Canvas实现仿PS图像油画滤镜特效
  12. 人工智能如何入门学习?前景如何
  13. bilibili_api,仅用 3 行代码获取B站(弹幕、评论、用户)数据
  14. BI工具调研之——帆软
  15. 7条简单粗暴的工作建议
  16. 【Recsys2021】推荐系统论文整理和导读
  17. MATLAB-工具箱-如何导出拟合系数?
  18. USB OTG模式及切换
  19. opencv 鼠标绘图
  20. Unity获取摄像头权限

热门文章

  1. AD20 PCB导出Gerber、拼板,华秋DFM一键拼板,同理支持其他PCB EDA软件的Gerber导入与拼板
  2. “/Ox”和“/RTC1”命令行选项不兼容 或者 ml.exe 退出
  3. 路由器、交换机的基本配置 1
  4. html轮播鼠标悬停效果,jQuery图片轮播加悬停效果
  5. 使用在线链接阿里图标库(iconfont)(vue)
  6. 简述存储器的分级策略
  7. [codeforces 1341B] Nastya and Door 神奇的掐头去尾+前缀和
  8. Altium designer 10安装破解以及出现缺少mfc71.dll文件的情况处理
  9. 转: 雅虎35条优化黄金守则
  10. 在来一次 快转存哦