Apache2的Rails乘客问题

问题描述

| 我正在尝试使用apache2和mod_rails(Phusion Passenger)在ubuntu10.10上的Rails服务器上设置一个ruby。 我已经安装了ruby 1.9.2-p0和rails 3.0.8,并安装了passenger-install-apache2-模块和passenger gem(v3.0.7)的Passenger。 然后告诉我将3行添加到我的Apache配置文件中。所以我将这些行添加到\'/ etc / apache2 / apache2.conf \'中:
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/gems/1.9.1/gems/passenger-3.0.7
PassengerRuby /usr/local/bin/ruby
然后我编辑了\'/ etc / apache2 / httpd.conf \'并添加了:
NameVirtualHost *:80

<VirtualHost *:80>
ServerName 192.168.0.2
DocumentRoot /var/www/webop/public

<Directory /var/www/webop/public>
Allow from all
Options -MultiViews
</Directory>
</VirtualHost>
我还发现/usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/中的文件mod_passenger.so实际上不存在,其名称为mod_passenger.c。但是我没有从中得到任何错误。 该服务器只能通过局域网访问。当我访问服务器时,我在应用程序的公用文件夹中看到了所有文件和目录,但是应用程序本身无法启动。 当我重新启动apache时,它告诉我mod_rails已经加载,所以我猜乘客正在运行,但是我不知道为什么它无法启动我的应用程序! 提前致谢!     

解决方法

        mod_passenger.so不存在的原因是因为您尚未安装Apache模块。执行:
passenger-install-apache2-module
这将在gem目录中创建mod_passenger.so文件,并提供三行内容复制到apache2.conf文件中。 乘客模块已安装在当前的宝石集中,因此您不应在项目之间产生任何冲突。您可以通过RVM以及RBENV使用任何兼容版本的Ruby,以及任何您喜欢的gemset。这使得从一个版本的Ruby到下一个版本的升级很容易。     ,        我终于弄清楚了问题所在:我弄乱了我的Ruby安装。 在/ usr / local /中,我安装了ruby1.9.2-p0(这是我要使用的版本),但是在/ usr /中,我安装了ruby1.8.7。 乘客对要使用哪个红宝石版本感到困惑,所以我将apache2 / mods-enabled / passenger.load和.config中的LoadModule,PassengerRoot和PassengerRuby路径更改为正确的路径,终于成功了!这两个文件都是自动创建的,这也引起了重新定义的问题:在apache启动时,出现警告“ mod_passenger已加载”。所以我删除了
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/gems/1.9.1/gems/passenger-3.0.7
PassengerRuby /usr/local/bin/ruby
从apache配置中,警告消失了! 也许有一天会有帮助的!     ,        我今天遇到了一个更清洁的解决方案。这可能会帮助将来的用户。命令 -
passenger-install-apache2-module
告诉我将这三行放在apache配置文件中。
LoadModule passenger_module /home/anwar/.rvm/gems/ruby-2.2.0/gems/passenger-4.0.59/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /home/anwar/.rvm/gems/ruby-2.2.0/gems/passenger-4.0.59
     PassengerDefaultRuby /home/anwar/.rvm/gems/ruby-2.2.0/wrappers/ruby
   </IfModule>
但是,该配置文件在哪里?答案是将配置文件分成许多部分,它们位于
/etc/apache2/mods-available
中。 所以你应该做三件事- 在
/etc/apache2/mods-available
文件夹中创建以
.load
结尾的文件。我用了9英镑。 将三行粘贴到该文件中并保存文件。 现在,在终端中使用ѭ10启用模块。在我的情况下,文件是
passenger.load
。所以,我用
sudo a2enmod passenger
现在,重新启动服务器,并使用命令
apache2ctl -M
查找已启用
passenger
模块。     ,        我认为他们希望您将这三行放在httpd.conf文件中,而不是在apache2.conf中。至少这就是我一直这样做的方式。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...