Web 服务故障排除指南
ServBay 支持使用 Caddy、NGINX、Apache 作为默认的 Web 服务器,在日常使用中,用户可能会碰到网站打不开等一些问题,下面是一些常见问题的解决方法。
使用 ServBay 自带工具排障
ServBay 自带了功能非常强大的故障诊断工具,我们建议使用 ServBay 自带的故障排除工具来自助诊断和解决。
打开 ServBay 应用,在左侧导航中找到故障诊断
,即可进入 ServBay 自带的故障诊断工具。
检查配置文件
Caddyfile 检查
使用 Caddy 内置的验证功能来验证 Caddyfile 是否正确。请运行下面的命令
$ /Applications/ServBay/bin/caddy validate -c /Applications/ServBay/etc/caddy/Caddyfile
如果返回Valid configuration
,那就说明一切正常。如果返回其他错误代码,请根据错误代码的提示进行下一步的操作。(注意:上面的命令会有大量的 INFO 和 WARN 输出,这是正常情况,不会影响服务的正常运行)
证书错误
如果出现类似下面的错误loading certificates: open xxxxx: no such file or directory
,那就意味着证书文件不存在。请检查证书文件的地址是否正确。
2024/12/09 17:24:16.970 INFO using config from file {"file": "/Applications/ServBay/etc/caddy/Caddyfile"}
2024/12/09 17:24:16.991 INFO adapted config to JSON {"adapter": "caddyfile"}
2024/12/09 17:24:16.991 WARN Caddyfile input is not formatted; run 'caddy fmt --overwrite' to fix inconsistencies {"adapter": "caddyfile", "file": "/Applications/ServBay/etc/caddy/Caddyfile", "line": 8}
2024/12/09 17:24:16.999 INFO tls.cache.maintenance started background certificate maintenance {"cache": "0x1400121f300"}
2024/12/09 17:24:17.006 INFO tls.cache.maintenance stopped background certificate maintenance {"cache": "0x1400121f300"}
Error: loading http app module: provision http: getting tls app: loading tls app module: provision tls: loading certificates: open /Applications/ServBay/ssl/private/tls-certs/mail.servbay.host/mail.servbay.host.1crt: no such file or directory
2
3
4
5
6
7
网站目录错误
如果出现下面的错误parsing caddyfile tokens for 'root': too many arguments
,请检查网站目录的路径中是否存在空格。这是一个非常常见的错误。
比如root * /Applications/ServBay/www/public web
,在 public
和 web
之间有一个空格,这样会被当做两个参数,导致错误。正确的设置方法是使用双引号(")把路径包裹起来。比如root * "/Applications/ServBay/www/public web"
。
我们强烈建议不要在任何文件名、路径中包含空格和特殊符号。对于单词的分割,可以使用-
或者_
符号,比如:public-folder
、public_dir
。
2024/12/09 17:26:37.371 INFO using config from file {"file": "/Applications/ServBay/etc/caddy/Caddyfile"}
Error: adapting config using caddyfile: parsing caddyfile tokens for 'root': too many arguments; should only be a matcher and a path, at /Applications/ServBay/etc/caddy/Caddyfile:1388
2
3
Rewrite 规则错误
在 Caddy 中使用了不正确的 Rewrite 规则,比如直接使用 NGINX 的规则,也会导致错误。
NGINX 配置检查
使用以下命令检查 NGINX 配置是否正确:
$ /Applications/ServBay/bin/nginx -t
如果配置正确,会显示:
nginx: the configuration file /Applications/ServBay/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /Applications/ServBay/etc/nginx/nginx.conf test is successful
2
常见错误包括:
- 语法错误(如缺少分号)
- 文件路径错误
- 端口冲突
Apache 配置检查
使用以下命令检查 Apache 配置:
$ /Applications/ServBay/bin/apachectl configtest
常见错误包括:
- 模块加载失败
- .htaccess 文件语法错误
- 目录权限设置不当
500 错误处理
500 内部服务器错误是常见的 Web 服务器错误,可能由多种原因引起:
通用排查步骤
检查服务器错误日志:
- Caddy:
/Applications/ServBay/var/logs/caddy/error.log
- NGINX:
/Applications/ServBay/var/logs/nginx/error.log
- Apache:
/Applications/ServBay/var/logs/apache/error.log
- Caddy:
检查 PHP 服务是否启动
bashps aux | grep php-fpm
1检查 PHP 错误(如果使用 PHP):
/Applications/ServBay/var/logs/php/php_error.log
检查文件权限:
bash$ ls -la /Applications/ServBay/www/your-site
1确保 Web 服务器用户有读取权限
Caddy 特有 500 错误
- 检查 FastCGI 配置是否正确
- 确保 PHP-FPM 服务正在运行
- 验证反向代理设置
NGINX 特有 500 错误
- 检查
fastcgi_pass
设置是否正确 - 验证
client_max_body_size
是否足够大 - 检查
try_files
指令配置
Apache 特有 500 错误
- 检查
mod_rewrite
是否启用 - 验证
.htaccess
文件内容 - 检查
AllowOverride
设置
服务管理
重启服务
如果修改了配置,需要重启相应服务:
# Caddy
$ servbayctl restart caddy -all
# NGINX
$ servbayctl restart nginx -all
# Apache
$ servbayctl restart apache -all
2
3
4
5
6
7
8
查看服务状态
# Caddy
$ servbayctl status caddy -all
# NGINX
$ servbayctl status nginx -all
# Apache
$ servbayctl status apache -all
2
3
4
5
6
7
8
高级排障
如果以上方法无法解决问题,可以尝试:
- 临时关闭防火墙测试
- 使用
curl -v
查看详细请求信息 - 在不同浏览器/设备上测试
- 检查 DNS 解析是否正确
如需进一步帮助,请联系 ServBay 技术支持团队。