Fer*_*ndo 6 nginx ruby-on-rails phusion-passenger
我正在使用Passenger + Nginx 来运行Rails 应用程序。如果我使用“rails_env 开发”;该应用程序运行良好。
但是如果我在生产模式下运行,我会得到“我们很抱歉,但出了点问题。”。
我确实为生产运行了 db:migrate,我可以正常访问数据库。
奇怪的是,我没有在日志中得到任何新条目(nginx 和 rails 之一),而且我确保 nginx 用户可以在它们上面写字。
如果我运行 rails 控制台生产,它工作正常:
# rails console production
Loading production environment (Rails 3.2.0)
1.9.3-p125 :001 >
Run Code Online (Sandbox Code Playgroud)
关于可能发生什么的任何想法?我还应该检查什么?
- - 编辑 - -
在@BenLee 建议将passenger_debug_log_file 添加到nginx.conf 之后,我开始在开发和生产中遇到此错误:
# /etc/init.d/nginx restart
nginx: the configuration file /opt/nginx/conf/nginx.conf syntax is ok
nginx: [alert] Unable to start the Phusion Passenger watchdog: it seems to have crashed during startup for an unknown reason, with exit code 1 (-1: Unknown error)
nginx: configuration file /opt/nginx/conf/nginx.conf test is successful
Parando o nginx: [ OK ]
Iniciando o nginx: nginx: [alert] Unable to start the Phusion Passenger watchdog: it seems to have crashed during startup for an unknown reason, with exit code 1 (-1: Unknown error)
[ OK ]
Run Code Online (Sandbox Code Playgroud)
我搜索了这个错误,但我仍然没有找到解决方案。看门狗似乎存在并且在正确的位置:
# ls -lh /usr/local/rvm/gems/ruby-1.9.3-p125/gems/passenger-3.0.11/agents/
total 7,8M
drwxr-sr-x 2 root rvm 4,0K Fev 22 23:34 nginx
-rwxr-xr-x 1 root rvm 4,6M Fev 22 23:35 PassengerLoggingAgent
-rwxr-xr-x 1 root rvm 3,3M Fev 22 23:34 PassengerWatchdog
Run Code Online (Sandbox Code Playgroud)
如果我删除passenger_debug_log_file,它会正常启动。但是原来的问题又回来了,应用程序没有在生产模式下运行。
这看起来可能是某种文件损坏,可能位于其中一个代理中。可能有帮助的一件事是重新安装新版本的代理。您可以通过乘客独立包来完成此操作。
为此,首先通过 SSH 连接到服务器,然后在任何目录中(在下面的示例中,我将假设您的主目录,但任何目录都可以)运行:
passenger package-runtime
Run Code Online (Sandbox Code Playgroud)
这似乎需要进行大量的下载、配置和安装,但不要惊慌。要做的就是将乘客独立版本安装在名为 的子目录中passenger-standalone
。运行此命令后,您应该看到如下文件结构(假设您在主目录中运行该命令):
+ /home/you
+ passenger-standalone
+ 3.0.11-....
nginx-x.y.z.tar.gz
support.tar.gz
Run Code Online (Sandbox Code Playgroud)
所以它只是一棵树,其中有两个 tar.gz 文件(请注意,3.0.11-...
不是字面意思,而是以该字符串开头 - 全名取决于系统;类似地,其中x.y.z
一个 tar.gz 文件实际上是一个版本数字)。接下来,解压 support.tar.gz,执行如下操作:
cd passenger-standalone/3.0.11-....
tar xzvvf support.tar.gz
Run Code Online (Sandbox Code Playgroud)
这将解压到当前目录。除此之外,它将创建一个agents
包含两个新文件的子目录:
+ /home/you
+ passenger-standalone
+ 3.0.11-....
+ agents
PassengerLoggingAgent
PassengerWatchdog
Run Code Online (Sandbox Code Playgroud)
我们的想法是将这些代理文件复制到原始系统文件上,以修复系统版本中可能存在的任何损坏。但首先,适当设置权限。从上面命令结束的地方开始,运行:
cd agents
sudo chown root:rvm Passenger*
Run Code Online (Sandbox Code Playgroud)
接下来,备份您的原始代理:
cd /usr/local/rvm/gems/ruby-1.9.3-p125/gems/passenger-3.0.11/agents
sudo cp PassengerLoggingAgent PassengerLoggingAgent.backup
sudo cp PassengerWatchdog PassengerWatchdog.backup
Run Code Online (Sandbox Code Playgroud)
最后,将新版本从独立包移至此处。
sudo mv /home/you/passenger-standalone/3.0.11-..../agents/Passenger* .
Run Code Online (Sandbox Code Playgroud)
然后,重新启动 nginx。如果由于某种原因您需要撤消此操作,只需恢复备份副本并再次重新启动 nginx 即可。
作为可选的清理步骤,您不再需要这些独立文件,因此您可以像这样删除它们:
rm -rf /home/you/passenger-standalone
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6591 次 |
最近记录: |