You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails/Puma(Systemctl)集成fog-aws后Worker启动失败求助

问题排查方案

核心原因分析

systemd启动Puma时,fog-core初始化缓存目录时遇到权限或环境变量不匹配问题,导致worker进程启动失败;而手动启动时环境与权限完全匹配,因此运行正常。

具体排查步骤

  • 确认systemd服务的运行用户
    查看Puma的systemd服务文件(通常路径为/etc/systemd/system/puma.service),检查User=和Group=配置项。如果运行用户不是ec2-user,则ENV["HOME"]会指向该用户的家目录(比如/var/www或/home/deploy),而非你预期的/home/ec2-user。

  • 验证缓存目录权限
    确保Puma运行用户对目标缓存目录有读写权限:

    • 若使用默认的~/.fog-cache,则为对应用户的家目录创建该目录并设置权限:
      sudo mkdir -p /home/<puma-run-user>/.fog-cache
      sudo chown <puma-run-user>:<puma-run-group> /home/<puma-run-user>/.fog-cache
      
    • 或直接指定项目目录下的可访问路径,比如:
      sudo mkdir -p /var/www/iot/shared/.fog-cache
      sudo chown <puma-run-user>:<puma-run-group> /var/www/iot/shared/.fog-cache
      
  • 强制指定fog缓存路径
    在systemd服务文件的[Service]区块中添加环境变量,覆盖fog-core的默认缓存路径,避免依赖HOME变量:

    Environment=FOG_CACHE_PATH=/var/www/iot/shared/.fog-cache
    

    之后重新加载systemd配置并重启服务:

    sudo systemctl daemon-reload
    sudo systemctl restart puma
    
  • 检查systemd的环境变量
    执行以下命令查看Puma服务实际生效的环境变量,确认HOME是否正确:

    systemctl show puma --property=Environment
    

    若HOME值不符合预期,可在systemd服务文件中手动设置:

    Environment=HOME=/home/ec2-user
    

临时调试技巧

在systemd服务的[Service]区块添加以下配置,开启fog调试模式,获取更详细的错误日志:

Environment=FOG_DEBUG=true

重启服务后查看Puma日志,定位具体报错点。

内容的提问来源于stack exchange,提问作者Ruby Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:46:03