142 lines
2.7 KiB
Markdown
142 lines
2.7 KiB
Markdown
# 部署到 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/)
|