在腾讯云轻量应用服务器上部署 Halo(博客系统)+ MySQL 是一个非常常见的需求,适合个人博客或小型网站的搭建。以下是详细的部署步骤,适用于 Linux 系统(如 Ubuntu 或 CentOS)。
🧱 一、环境准备
1. 腾讯云轻量服务器配置建议
- 操作系统:Ubuntu 20.04 / 22.04 或 CentOS 7/8(推荐 Ubuntu)
- 至少 2核2G 内存(Halo 对内存有一定要求)
- 开放端口:
80(HTTP)443(HTTPS)22(SSH)3306(MySQL,默认不开放,仅本地使用)
⚙️ 二、安装 MySQL 数据库
Ubuntu 安装 MySQL:
sudo apt update
sudo apt install mysql-server -y
初始化 MySQL 安全设置:
sudo mysql_secure_installation
设置 root 密码,其他选项一路回车即可。
创建 Halo 使用的数据库和用户(可选):
mysql -u root -p
CREATE DATABASE halo DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'halo'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON halo.* TO 'halo'@'localhost';
FLUSH PRIVILEGES;
exit;
🐳 三、部署 Halo(推荐使用 Docker)
1. 安装 Docker 和 Docker Compose
Ubuntu 安装 Docker:
sudo apt install docker.io docker-compose -y
验证是否安装成功:
docker --version && docker-compose --version
2. 创建 docker-compose.yml 文件
创建一个目录用于存放 Halo 相关文件:
mkdir ~/halo && cd ~/halo
nano docker-compose.yml
粘贴以下内容(使用 MySQL):
version: "3"
services:
halo:
image: halohub/halo:2.16
container_name: halo
restart: on-failure
depends_on:
- mysql
networks:
- halo-network
volumes:
- ./halo:/root/halo
ports:
- "8090:8090"
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/halo?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
- SPRING_DATASOURCE_USERNAME=halo
- SPRING_DATASOURCE_PASSWORD=your_password
mysql:
image: mysql:8
container_name: halo-mysql
restart: always
networks:
- halo-network
environment:
- MYSQL_ROOT_PASSWORD=root_pass
- MYSQL_DATABASE=halo
- MYSQL_USER=halo
- MYSQL_PASSWORD=your_password
volumes:
- ./mysql:/var/lib/mysql
ports:
- "127.0.0.1:3306:3306"
networks:
halo-network:
driver: bridge
修改上面的
your_password为你的数据库密码。
3. 启动服务
docker-compose up -d
等待镜像拉取并启动容器。
🌐 四、访问 Halo 初始化页面
浏览器打开:
http://你的服务器IP:8090
然后根据提示完成初始化设置(管理员账号等),选择“自定义模式”,填写数据库信息(已经由 Docker 自动配置好了)。
🔐 五、配置反向X_X(可选)
如果你希望使用域名访问 Halo,可以使用 Nginx 反向X_X:
安装 Nginx:
sudo apt install nginx -y
创建站点配置文件:
sudo nano /etc/nginx/sites-available/halo
写入如下内容:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1: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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
启用站点:
sudo ln -s /etc/nginx/sites-available/halo /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
📝 六、常见问题处理
1. Halo 启动失败
检查日志:
docker logs halo
可能原因:
- 数据库连接失败(用户名、密码错误)
- 数据库未正常启动
- 端口冲突(8090 被占用)
2. 数据库无法连接
确保 SPRING_DATASOURCE_URL 正确指向了 mysql(Docker 中的服务名)
✅ 七、总结
| 工具 | 版本 | 用途 |
|---|---|---|
| Halo | 最新版 | 博客系统 |
| MySQL | 8.x | 数据库存储 |
| Docker | 推荐 | 容器化部署 |
| Nginx | 可选 | 反向X_X |
如果你有具体的操作系统版本、遇到的问题或想用非 Docker 的方式部署,也可以告诉我,我可以提供更具体的指导。
需要我帮你生成完整的脚本或一键部署方案吗?
秒懂云