Rails + Passenger + Apache + Alias

3

我需要翻译一段关于Rails + Passenger + Apache + Alias的技术内容。我尝试在Alias上运行一个Rails应用程序,我声明了这个虚拟主机。

<VirtualHost *:80>
    Alias /smart_data /home/pablo/Proyectos/Net-Works/SmartData/smart_data/public
    <Location /smart_data>
        PassengerBaseURI /smart_data
        PassengerAppRoot /home/pablo/Proyectos/Net-Works/SmartData/smart_data
    </Location>
    <Directory /home/pablo/Proyectos/Net-Works/SmartData/smart_data/public>
        Allow from all
        Options -MultiViews
        Require all granted
    </Directory>
</VirtualHost>

功能正常,但是我的应用程序从文件夹 /public/data/ 读取文件,而 Apache 尝试从 /var/www/html/data 读取此文件。

能否有人帮我解决这个问题?

1个回答

1
你需要在VirtualHost标签内定义DocumentRoot。
<VirtualHost *:80>
  # Add this line:
  DocumentRoot /home/pablo/Proyectos/Net-Works/SmartData/smart_data/public
</VirtualHost>

由于没有定义DocumentRoot,它将使用默认值(在同一配置文件中定义,但未嵌套在任何VirtualHost标记中)


当我添加那行代码时不起作用,但是添加DocumentRoot /home/pablo/Proyectos/Net-Works/SmartData/smart_data/public之后就可以了。问题在于所有东西都在本地主机上运行,而不仅仅是在localhost/smart_data上运行,因此当我访问其他应用程序(例如localhost/app2)时,Rails会说没有这个路由。 - Pablo Luis Reyes Fernández
我按照你的指示添加了“public”。尝试将DocumentRoot指令嵌套在Location或Directory中。 - Isaac Betesh
app2 有另一个 <Location> 块吗? 它有自己的 DocumentRoot 指令吗? - Isaac Betesh
不,我有一个VirtualHost,只为Rails应用程序设置了<Location>,其他应用程序都在具有PHP项目的文件夹中。 - Pablo Luis Reyes Fernández
默认的 DocumentRoot 中是否包含 PHP 脚本?如果不是,那么更改 DocumentRoot 不应该对它们产生影响。 - Isaac Betesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接