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

Windows IIS服务器部署Ruby On Rails应用故障求助

排查Windows IIS部署Rails应用的问题

以下是针对你当前配置的具体排查和修复步骤:

1. 优先查看错误日志

你的web.config已经开启了stdout日志,路径为log\rails.log,先到C:\inetpub\wwwroot\test\bmw_test_project\log目录下查看这个日志文件,里面会包含Puma启动或运行时的具体错误信息,这是定位问题最直接的方式。如果log目录不存在,手动创建它,并确保IIS应用池账户有该目录的写入权限。

2. 修正web.config的启动命令

直接用ruby -S puma可能没有加载项目的Gem依赖(本地运行时你是在项目目录下通过bundle管理依赖的),建议修改web.config中的processPath和arguments,改用bundle来启动Puma:

<httpPlatform stdoutLogEnabled="true" processesPerApplication="1" stdoutLogFile="log/rails.log" startupTimeLimit="60" processPath="C:\Ruby31-x64\bin\bundle.exe" arguments="exec puma --env development --dir C:\inetpub\wwwroot\test\bmw_test_project -p %HTTP_PLATFORM_PORT%">
    <environmentVariables>
        <environmentVariable name="RAILS_ENV" value="development" />
        <environmentVariable name="RAILS_SERVE_STATIC_FILES" value="true" />
    </environmentVariables>
</httpPlatform>
  • 把processPath改为bundle.exe的路径,确保通过bundle加载项目专属的gem依赖
  • 添加RAILS_SERVE_STATIC_FILES环境变量:Rails 7默认在开发环境不主动提供静态文件,这个变量可以让Puma处理静态资源请求
  • 延长startupTimeLimit到60秒,避免因依赖加载慢导致启动超时

3. 检查服务器上的项目依赖

在服务器上打开命令提示符,进入项目目录C:\inetpub\wwwroot\test\bmw_test_project,执行以下命令:

bundle install

确保所有Gem依赖都已正确安装,没有报错。如果使用SQLite数据库,还要确认sqlite3 gem是否安装成功,以及数据库文件(db/development.sqlite3)的权限是否允许IIS账户读取和写入。

4. 配置IIS应用池权限

  • 打开IIS管理器,找到你的站点对应的应用池,将其.NET CLR版本设置为无托管代码
  • 给应用池身份(默认是IIS AppPool\DefaultAppPool)添加以下权限:
    • 项目目录C:\inetpub\wwwroot\test\bmw_test_project的读取、写入、列出文件夹内容权限(tmp、log目录需要写入权限)
    • Ruby安装目录C:\Ruby31-x64的读取权限

5. 测试Puma独立启动

在服务器的项目目录下,手动执行启动命令:

bundle exec puma -p 3000 --env development

如果这个命令能正常启动Puma并访问http://localhost:3000,说明项目本身没问题,问题出在IIS的配置或权限上;如果启动失败,根据控制台的错误信息修复(比如缺失依赖、数据库配置错误等)。


内容的提问来源于stack exchange,提问作者Vishal Aher

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:40:25