时隔三个月我又回来了

上次文章是水的,这次我好好写

手把手教你用宝塔面板搭建Halo博客,最近想把博客从WordPress换成Halo,主要看中它轻量、好看,而且支持Markdown。折腾了一圈,踩了几个坑,记录下来分享给需要的朋友。准备工作你需要准备这几样东西:

一台服务器(腾讯云、阿里云或者VPS都行,1核2G足够跑Halo了)

一个域名(当然IP访问也行,但不建议)

宝塔面板(还没装的先去装一个,官方有脚本,一行命令搞定)我用的是腾讯云的轻量应用服务器,系统选的CentOS 7.9。

系统看个人习惯,Ubuntu也行。第一步:安装宝塔面板如果你的服务器已经装了宝塔,跳过这步。没装的话,SSH连上服务器,复制下面这行:

if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec

装完后记下输出的面板地址、账号密码,保存好,丢了找回比较麻烦。

第二步:安装基础环境进入宝塔面板,第一次登录会提示你安装环境。Halo需要Java环境,我们直接装:· Nginx(Web服务器,用来反向代理)· MySQL(数据库,Halo支持MySQL和H2,生产环境建议用MySQL)· PHP(这个其实Halo用不上,但宝塔顺手装了也没事)左边菜单找到“软件商店”,搜索“Java项目一键部署”,安装这个插件。它会自动帮你装好OpenJDK,省得自己配环境。

第三步:创建数据库Halo 2.0以上版本必须用MySQL 8.0或更高版本(注意不是5.7,我开始就踩了这个坑)。宝塔里点“数据库” -> “添加数据库”,数据库名随便填,比如halo_db,用户名和密码记下来,后面配置要用。

第四步:下载和配置Halo这里有两种方式,我推荐用官方命令行,简单不容易出错。SSH进服务器,执行:```bash# 创建存放目录mkdir -p /www/wwwroot/halo && cd /www/wwwroot/halo# 下载Halo的最新jar包(版本号去github上查最新的)

wget https://github.com/halo-dev/halo/releases/download/v2.12.0/halo-2.12.0.jar# 

创建配置文件mkdir ~/.halo2 && cd ~/.halo2```然后创建application.yaml配置文件:

```bashvim application.yaml```贴入以下内容(注意改数据库密码):

```yamlserver: port: 8090spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/halo_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: 你自己的数据库密码halo: work-dir: /www/wwwroot/halo```

保存退出(vim按i编辑,按Esc后输入:wq保存)。第五步:运行Halo测试运行一下,看有没有报错:```bashcd /www/wwwroot/halojava -jar halo-2.12.0.jar

--spring.config.additional-location=/root/.halo2/application.yaml```

如果出现类似Started HaloApplication in x seconds的提示,说明跑起来了。按Ctrl+C停止,我们要让它后台运行。创建systemd服务:

粘贴:```[Unit]Description=Halo ServiceAfter=network.target[Service]Type=simpleUser=rootWorkingDirectory=/www/wwwroot/haloExecStart=/usr/bin/java -jar /www/wwwroot/halo/halo-2.12.0.jar --spring.config.additional-location=/root/.halo2/application.yamlRestart=on-failureRestartSec=10[Install]WantedBy=multi-user.target```

然后启动:

```bashsystemctl daemon-reloadsystemctl start halosystemctl enable halo #

设置开机自启```查看状态确认运行正常:```bashsystemctl status halo```

第六步:配置Nginx反向代理现在Halo跑在127.0.0.1:8090,我们需要通过域名访问。宝塔面板左边点“网站” -> “添加站点”,域名填你自己的,比如blog.spencerjin.com,PHP版本选“纯静态”就行。添加完后,点站点的“设置” -> “反向代理” -> “添加反向代理”:· 代理名称:随便填,比如halo_demo· 目标URL:http://127.0.0.1:8090

· 发送域名:$host点保存。

第七步:申请SSL证书网站都上HTTPS了,宝塔这点很方便。在站点设置里点“SSL” -> “Let‘s Encrypt” -> 勾选你的域名 -> 点申请,一分钟搞定。记得开启“强制HTTPS”,不然http还能访问。

第八步:初始化Halo浏览器访问你的域名,应该能看到Halo的安装引导页面。跟着提示一步步来:

1. 设置管理员账号密码

2. 填写网站标题、简介

3. 选择主题(默认主题够用,以后可以换)装完之后就可以进后台写文章了。后台地址是https://你的域名/admin。

踩坑记录说几个我碰到的问题:

1. MySQL版本:Halo 2.x必须MySQL 8.0以上,宝塔默认安装5.7的话记得卸载重装。

2. 端口放行:服务器防火墙要放行8090端口,否则本地测试都连不上。宝塔安全里也要放行,云服务商的控制台也得放。

3. 配置文件路径:--spring.config.additional-location要写对,我一开始写错位置导致一直读取默认配置。4. 内存不足:1G内存的服务器跑Halo+MySQL稍微有点吃力,建议开swap。宝塔面板可以设置swap,点“Linux工具箱”->“Swap”设置个1G。最后说两句Halo整体体验下来确实不错,后台界面干净,发文章很顺手,比我用WordPress舒服多了。整个搭建过程熟练的话20分钟搞定,新手按步骤来一个小时也差不多了。如果装到哪步卡住了,先看日志。Halo日志在/www/wwwroot/halo/logs/下面,宝塔的日志在面板左侧也能看。八成的问题看日志都能找到原因。