在localhost / rails_app中为乘客设置Rails 4以进行本地开发

时间:2014-07-05 16:04:24

标签: apache ruby-on-rails-4 passenger

我无法相信事情变得如此困难,但出于开发原因,我需要能够在localhost / rails_app上运行我的rails应用程序,而不会破坏我的其他应用程序。 (例如localhost / php_app)

我已经关注了很多教程,但我仍然无法让它发挥作用。

我安装了乘客,我认为缺少的步骤是正确配置VirtualHost。

(Mac OS X,Rails 4,Apache)

编辑:最大的问题是我无法在localhost:3000或任何其他端口运行

EDIT2:

在apache配置文件中使用:

<VirtualHost *:80>
     ServerName localhost
     ProxyRequests off
             <Proxy *>
                    Order deny,allow
                    Allow from all
             </Proxy>
           <Location /my_rails_app/ >                                                         
             ProxyPass http://localhost:3000/
             ProxyPassReverse  http://localhost:3000/
         </Location>
</VirtualHost>

应用程序在localhost / my_rails_app /上运行,但它仍然使用localhost /作为基本URL,丢失所有资产并使所有链接都出错。

2 个答案:

答案 0 :(得分:1)

首先,在本地系统上,您可以使用Rails附带的内置测试服务器。这是我在ubuntu服务器上用来运行Rails的虚拟主机:

<VirtualHost *:80>
  ServerName errandlist.com
  ServerAlias www.errandlist.com
  # !!! Be sure to point DocumentRoot to 'public'!
  DocumentRoot /var/www/errandlist/public   
  RailsEnv production  
<Directory /var/www/errandlist/public>
     # This relaxes Apache security settings.
     AllowOverride all
     # MultiViews must be turned off.
     Options -MultiViews
  </Directory>
</VirtualHost>

您将需要在httpd.conf中启用Passenger:

# Ruby Passenger support
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p448/gems/passenger-4.0.19/buildout/apache2/mod_passenger.so
PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p448/gems/passenger-4.0.19
PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-1.9.3-p448/ruby

在OSX上会非常相似,你的版本可能会有所不同。

编辑:这是关于在端口80上运行测试服务器的问题:How to run rails s -p80 on 80 port?

答案 1 :(得分:0)

我只是使用此脚本从命令行在本地主机上运行,​​以进行调试,用于名为“ priority_tree”的项目:

<form:form action="finder/handyWorker/edit.do" modelAttribute="finder">

<form:hidden path="id" />
<form:hidden path="version" />
<form:hidden path="tasks" />
<form:hidden path="moment" />

<form:label path="keyWord">
    <spring:message code="finder.keyWord" />:
</form:label>
<form:input path="keyWord"/>
<br/>

<form:label path="minPrice">
    <spring:message code="finder.minPrice" />:
</form:label>
<form:input path="minPrice" type="number" min="0" max="${maxPrice}"/>
<form:errors cssClass="error" path="minPrice" />
<br />

<form:label path="maxPrice">
    <spring:message code="finder.maxPrice" />:
</form:label>
<form:input path="maxPrice" type="number" min="0" max="${maxPrice}"/>
<form:errors cssClass="error" path="maxPrice" />
<br />

<form:label path="minDate">
    <spring:message code="finder.minDate" />:
</form:label>
<form:input path="minDate"/>
<form:errors cssClass="error" path="minDate" />
<br />

<form:label path="maxDate">
    <spring:message code="finder.maxDate" />:
</form:label>
<form:input path="maxDate"/>
<form:errors cssClass="error" path="maxDate" />
<br />

<form:label path="categoryName">
    <spring:message code="finder.categoryName" />:
</form:label>
<form:input path="categoryName"/>
<br/>

<form:label path="warrantyTitle">
    <spring:message code="finder.warrantyTitle" />:
</form:label>
<form:input path="warrantyTitle"/>
<br/>

<input type="submit" name="find" value="<spring:message code="finder.save" />" />

然后只需使用http:\ localhost:3000打开IE或Edge来测试程序的操作。

如果使用dns,则必须设置dns才能访问sql服务器或其他数据库实例,否则应该可以。