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

在cPanel上部署Ruby 3.2应用遇请求路由异常求助

cPanel Ruby应用请求未由Sinatra处理,静态文件被自动路由

环境与文件结构

  • Ruby版本:3.2,通过cPanel部署,应用主目录为ruby.myDomain.co.uk
  • 主目录文件:config.ru、app.rb(无HTML文件)
  • 子目录/public:包含index.html、fish.html两个静态文件

操作步骤与异常现象

  1. 按cPanel指引激活Ruby环境的命令:
    source /home/myDomain/rubyvenv/ruby.myDomain.co.uk/3.2/bin/activate
    
  2. 激活环境前执行ps aux的进程列表:
    USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    myDomain 4075531  0.7  0.0 230360  4188 pts/0    S    04:43   0:00 /bin/bash -l
    myDomain 4075646  0.0  0.0 262612  2176 pts/0    R+   04:43   0:00 ps aux
    
  3. 浏览器访问行为:
    • 访问https://www.ruby.myDomain.co.uk/,返回ruby.myDomain.co.uk/public/index.html
    • 访问https://www.ruby.myDomain.co.uk/fish.html,返回ruby.myDomain.co.uk/public/fish.html
    • 预期行为:根路径显示目录列表,访问fish.html返回404
  4. 激活Ruby环境后,ps aux无新增进程(仅终端提示符变化),访问现象不变
  5. 执行ruby app.rb启动Sinatra应用,输出如下:
    I, [2024-08-28T05:17:13.427851 #4181457]  INFO -- : Loaded app.rb using  /home/myDomain/ruby.myDomain.co.uk/public
    /home/myDomain/rubyvenv/ruby.myDomain.co.uk/3.2/gems/sinatra-4.0.0/lib/sinatra/base.rb:1849: warning: Rack::Logger is deprecated and will be removed in Rack 3.2.
    [2024-08-28 05:02:42] INFO  WEBrick 1.8.1
    [2024-08-28 05:02:42] INFO  ruby 3.2.4 (2024-04-23) [x86_64-linux]
    == Sinatra (v4.0.0) has taken the stage on 4567 for development with backup from WEBrick
    ===== Booting up app.rb =====
    [2024-08-28 05:02:42] INFO  WEBrick::HTTPServer#start: pid=4118877 port=4567 
    
    此时另一个终端执行ps aux可见Sinatra进程:
    USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    myDomain 4075531  0.0  0.0 230360  4392 pts/0    S    04:43   0:00 /bin/bash -l
    myDomain 4118877  0.3  0.0 384520 37380 pts/0    S+   05:02   0:00 /opt/alt/ruby32/bin/ruby app.rb
    myDomain 4138701  0.5  0.0 230360  4324 pts/2    S    05:05   0:00 /bin/bash -l
    myDomain 4138801  0.0  0.0 262612  2220 pts/2    R+   05:05   0:00 ps aux
    
    但浏览器访问仍无请求日志输出,静态文件依旧被自动路由,现象未改变。

app.rb代码

require 'sinatra'
require 'logger'

logger = Logger.new(STDOUT, level: Logger::INFO)
logger.info "Loaded app.rb using  #{settings.public_folder}"

get '/' do
  logger.info "Serving index.html for request: #{request.path_info}"
  send_file File.join(settings.public_folder, 'index.html')
end

on_start do
  puts "===== Booting up app.rb ====="
end
on_stop do
  puts "===== Shutting down ====="
end

核心疑问

  • 无法确定哪个进程在处理浏览器请求,请求显然未到达本地启动的Sinatra应用(无日志输出)
  • 静态文件被自动路由到/public目录,与预期行为不符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:34:54