fix: 修复 Caddy 权限问题和路径配置

- 修复 Caddyfile 中的路径问题,使用绝对路径 /home/gitea/www/photography
- 创建权限修复脚本 fix-caddy-permissions.sh
- 设置正确的目录权限让 caddy 用户可以访问 gitea 用户目录
- 更新部署文档,添加权限修复步骤和故障排除指南

修复内容:
-  使用绝对路径替代 ~ 路径
-  设置目录权限 755 让 caddy 用户可访问
-  添加权限检查和修复脚本
-  完善故障排除文档

现在应该能解决 "permission denied" 错误
This commit is contained in:
xujiang
2025-07-09 10:05:13 +08:00
parent 00c97a3667
commit 23e154aec1
3 changed files with 68 additions and 5 deletions

View File

@ -3,7 +3,7 @@
photography.iriver.top { photography.iriver.top {
# 静态文件服务 # 静态文件服务
root * ~/www/photography root * /home/gitea/www/photography
# 启用文件服务器 # 启用文件服务器
file_server file_server

View File

@ -17,23 +17,30 @@
scp Caddyfile user@server:/etc/caddy/Caddyfile scp Caddyfile user@server:/etc/caddy/Caddyfile
``` ```
### 2. 创建日志目录 ### 2. 修复权限问题
```bash
# 上传权限修复脚本
scp fix-caddy-permissions.sh user@server:~/
ssh user@server 'chmod +x fix-caddy-permissions.sh && ./fix-caddy-permissions.sh'
```
### 3. 创建日志目录
```bash ```bash
sudo mkdir -p /var/log/caddy sudo mkdir -p /var/log/caddy
sudo chown caddy:caddy /var/log/caddy sudo chown caddy:caddy /var/log/caddy
``` ```
### 3. 验证配置 ### 4. 验证配置
```bash ```bash
sudo caddy validate --config /etc/caddy/Caddyfile sudo caddy validate --config /etc/caddy/Caddyfile
``` ```
### 4. 重新加载配置 ### 5. 重新加载配置
```bash ```bash
sudo systemctl reload caddy sudo systemctl reload caddy
``` ```
### 5. 检查状态 ### 6. 检查状态
```bash ```bash
sudo systemctl status caddy sudo systemctl status caddy
``` ```
@ -59,6 +66,19 @@ sudo systemctl status caddy
## 故障排除 ## 故障排除
### 权限问题
如果遇到 `permission denied` 错误:
```bash
# 检查目录权限
ls -la /home/gitea/www/photography
# 运行权限修复脚本
./fix-caddy-permissions.sh
# 验证 caddy 用户可以访问
sudo -u caddy ls -la /home/gitea/www/photography
```
### 检查配置语法 ### 检查配置语法
```bash ```bash
caddy validate --config /path/to/Caddyfile caddy validate --config /path/to/Caddyfile
@ -79,6 +99,20 @@ sudo tail -f /var/log/caddy/photography.log
sudo caddy run --config /etc/caddy/Caddyfile sudo caddy run --config /etc/caddy/Caddyfile
``` ```
### 常见错误解决
#### 1. Permission denied 错误
- **原因**: Caddy 进程无法访问用户目录
- **解决**: 运行 `fix-caddy-permissions.sh` 脚本
#### 2. 404 Not Found 错误
- **原因**: 文件路径不正确或文件不存在
- **解决**: 检查 `/home/gitea/www/photography` 目录是否有文件
#### 3. 证书获取失败
- **原因**: 域名 DNS 未正确指向服务器
- **解决**: 确认 DNS A 记录指向正确 IP
## 域名解析 ## 域名解析
确保域名 `photography.iriver.top` 的 DNS 记录指向服务器 IP 确保域名 `photography.iriver.top` 的 DNS 记录指向服务器 IP

29
fix-caddy-permissions.sh Executable file
View File

@ -0,0 +1,29 @@
#!/bin/bash
# 修复 Caddy 访问 gitea 用户目录的权限问题
echo "🔧 修复 Caddy 权限问题..."
# 1. 确保目录存在
sudo -u gitea mkdir -p /home/gitea/www/photography
# 2. 设置目录权限,让 caddy 用户可以访问
# 给 gitea 主目录添加执行权限(让其他用户可以进入)
sudo chmod 755 /home/gitea
# 给 www 目录设置权限
sudo chmod 755 /home/gitea/www
# 给 photography 目录设置权限
sudo chmod 755 /home/gitea/www/photography
# 3. 设置文件权限
sudo find /home/gitea/www/photography -type f -exec chmod 644 {} \;
sudo find /home/gitea/www/photography -type d -exec chmod 755 {} \;
# 4. 检查 caddy 用户是否可以访问
echo "📋 检查权限..."
sudo -u caddy ls -la /home/gitea/www/photography || echo "⚠️ caddy 用户无法访问目录"
echo "✅ 权限修复完成!"
echo "🔄 请重新加载 Caddy 配置sudo systemctl reload caddy"