部署 部署完成后访问 403 Forbidden

xautjzd · 2014年04月20日 · 最后由 pynix 回复于 2014年04月20日 · 2741 次阅读

终于算是走完部署流程了,但重新启动 Nginx 时出现如下警告:

nginx: [alert] Unable to start the Phusion Passenger watchdog because its executable (/usr/lib/ruby/gems/1.8/gems/passenger-3.0.12/agents/PassengerWatchdog) does not exist. This probably means that your Phusion Passenger installation is broken or incomplete, or that your 'passenger_root' directive is set to the wrong value. Please reinstall Phusion Passenger or fix your 'passenger_root' directive, whichever is applicable. (-1: Unknown error)
Stopping nginx:                                            [  OK  ]
Starting nginx: nginx: [alert] Unable to start the Phusion Passenger watchdog because its executable (/usr/lib/ruby/gems/1.8/gems/passenger-3.0.12/agents/PassengerWatchdog) does not exist. This probably means that your Phusion Passenger installation is broken or incomplete, or that your 'passenger_root' directive is set to the wrong value. Please reinstall Phusion Passenger or fix your 'passenger_root' directive, whichever is applicable. (-1: Unknown error)

虽然有警告,但是 Nginx 服务已经启动,通过netstat -anlp|grep 80可以查看到结果:

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      4574/nginx          
tcp        0      0 0.0.0.0:8000                0.0.0.0:*                   LISTEN      4574/nginx    

接着访问时出现 403 Forbidden 错误。网上可能是由于不允许访问目录导致的,但我参考的是 ruby-china 的wiki,应该不会有问题。实在想不出来哪个环节出问题,大家帮忙瞧瞧?

系统环境是 CentOS6.4, 通过 yum 安装的 passenger,参考的是 passenger 的官方文档:http://www.modrails.com/documentation/Users%20guide%20Nginx.htmlpassenger3,但安装完成后,,默认安装的是 /etc/nginx/conf.d/passenger.conf文件中passenger_root的默认路径为/usr/lib/ruby/gems/1.8/gems/passenger-3.0.12, 但进入这个目录看,发现里面也有passenger-4.0.41,开始使用 3 不行,换成 4 也不行。在其中将 passenger_ruby 改为系统安装的ruby2.0.0版本路径。

请问这大概是什么问题?

测试网址: www.bebety.com

passenger 3.0.12 出来的时候,ruby 可能 1.9.3 都还没出,而你还要求 passenger 3 的版本支持 ruby 2.0。。。你这个问题看起来是权限问题,不过我觉得就算 passenger 作者来了,也没法给你解,只会让你用新版本啊!

#1 楼 @ericguo 我后来配置的是 passenger4.0.41,但是也不行

看一下 nginx 的 error_log, 这个里面有详细信息

我觉得你还下定决心换 Ubuntu 算了,查了下官网,passenger 也没 centos 的资料,当然如果你是编译达人或者有能力从 source code build 整套 web stack,其实用啥系统真的无所谓,不过明显你也是苦手。。。

总算找到了CentOS的了:

The RPMs are currently unmaintained. As such, the repository only contains Phusion Passenger 3.x (the latest version is 4.x), which did not support Node.js, Meteor, multiple Rubies, etc. For more recent versions of Phusion Passenger, you are suggested to install from gem or tarball instead.

也就是说,如果你用 3.x,不要配 rvm,也最好不要用 ruby 2.0,或者还是老老实实从 gem/tarball 编译。

#5 楼 @ericguo 其实最好的办法就是自己编译了,但是现在 VPS 目前只有 512 的内存,我尝试过编译,每次都提示内存不足。我再考虑下推倒安装 Uuntu 或者更新 vps 吧

先等等切,再试一下加一下虚拟内存试一把:

sudo dd if=/dev/zero of=/swap bs=1M count=1024
sudo mkswap /swap
sudo swapon /swap

#7 楼 @ericguo 编译时开始提示内存不足,然后通过您提供的这个方法解决了 (看似解决),然后继续进行编译的过程,到后面出现http://ruby-china.org/topics/18731错误,后来查资料,貌似还是由于内存不足引起的,所以内存不足的问题没有从根本上解决,编译还是无法通过

#8 楼 @xautjzd 我在 512MB 机器上 Ubuntu 12.04 肯定是有成功经验的,然后有人在 CentOS 6.4 上也是成功搞出 Passenger 4 的,至于你,还是自行选择放弃不放弃 CentOS 吧。。。:😄:

#9 楼 @ericguo 谢谢,那我还是先把能关的服务先关掉,再编译试试吧。

系统、版本完全不一样,不要说参考 wiki 啊……

难道警告信息还不够明显吗?

#11 楼 @Rei 额,参考 的意思不是照搬 😖

#12 楼 @pynix 其实不是权限的问题,都换成 777,还是不行的。内存不足导致的概率比较大

某个可执行文件不在了,最可能的是版本兼容性问题,1.8,升级下会死吗?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号