我无法相信事情变得如此困难,但出于开发原因,我需要能够在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,丢失所有资产并使所有链接都出错。
答案 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服务器或其他数据库实例,否则应该可以。