142 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 部署到 FreeBSD
本示例演示如何将 Lolly 交叉编译并部署到 FreeBSD 服务器。
## 前置条件
- 本地开发机已安装 Go 1.26+
- 目标 FreeBSD 服务器可通过 SSH 访问
- 本地已配置 SSH 密钥登录(免密码)
## 部署步骤
### 1. 交叉编译
```bash
make build-freebsd
# 输出: bin/lolly-freebsd-amd64
```
### 2. 上传到服务器
```bash
scp -P 29888 bin/lolly-freebsd-amd64 root@192.168.1.15:/tmp/
```
### 3. 安装
SSH 登录到 FreeBSD 服务器执行:
```bash
# 创建目录
mkdir -p /usr/local/etc/lolly
mkdir -p /var/log/lolly
mkdir -p /var/db/lolly
mkdir -p /var/www/lolly
# 安装二进制
mv /tmp/lolly-freebsd-amd64 /usr/local/sbin/lolly
chmod 755 /usr/local/sbin/lolly
# 复制配置文件
cp /path/to/your/lolly.yaml /usr/local/etc/lolly/lolly.yaml
# 安装启动脚本
cp examples/deploy-freebsd/lolly.rc.d /usr/local/etc/rc.d/lolly
chmod 755 /usr/local/etc/rc.d/lolly
# 启用开机启动
sysrc lolly_enable="YES"
# 启动服务
service lolly start
```
## 服务管理
| 命令 | 说明 |
|------|------|
| `service lolly start` | 启动 |
| `service lolly stop` | 停止 |
| `service lolly restart` | 重启 |
| `service lolly status` | 查看状态 |
| `service lolly reload` | 热重载配置 (HUP) |
| `service lolly rotate` | 重新打开日志 (USR1) |
## 目录结构
| 路径 | 用途 |
|------|------|
| `/usr/local/sbin/lolly` | 二进制程序 |
| `/usr/local/etc/lolly/lolly.yaml` | 配置文件 |
| `/usr/local/etc/rc.d/lolly` | 启动脚本 |
| `/var/log/lolly/` | 日志目录 |
| `/var/db/lolly/` | 数据目录 |
| `/var/www/lolly/` | Web 根目录 |
| `/var/run/lolly.pid` | PID 文件 |
## 配置文件示例
最小可用配置:
```yaml
servers:
- listen: ":8080"
name: "localhost"
static:
- path: "/"
root: "/var/www/lolly"
index:
- "index.html"
logging:
format: "text"
access:
path: "/var/log/lolly/access.log"
error:
path: "/var/log/lolly/error.log"
level: "info"
```
## 故障排查
### 检查服务状态
```bash
service lolly status
ps aux | grep lolly
sockstat -4 -l | grep 8080
```
### 查看日志
```bash
tail -f /var/log/lolly/error.log
tail -f /var/log/lolly/access.log
```
### 测试配置
```bash
/usr/local/sbin/lolly -c /usr/local/etc/lolly/lolly.yaml
# 前台运行Ctrl+C 停止
```
### 权限问题
如果启动失败提示 Permission denied
```bash
# 确保配置文件可读
chmod 644 /usr/local/etc/lolly/lolly.yaml
chown root:wheel /usr/local/etc/lolly/lolly.yaml
# 确保日志目录存在且可写
chown -R root:wheel /var/log/lolly
```
## 参考
- [FreeBSD Handbook - Init System](https://docs.freebsd.org/en/books/handbook/boot/)
- [rc.d 脚本规范](https://docs.freebsd.org/en/articles/rc-scripting/)