【发布时间】:2023-03-20 20:40:01
【问题描述】:
我正在尝试将我的第一个 rails 应用程序部署到使用 Capistrano 部署的 Ubuntu/Apache/Passenger 服务器上。我已经设置了一个虚拟主机来指向我所有 Rails 应用程序所在的目录:
这是我的虚拟主机文件:
<VirtualHost *:80>
ServerName rails.mydomain.com
ServerAlias rails.mydomain.com
DocumentRoot /var/www/vhosts/rails.mydomain.com
<Directory /var/www/vhosts/rails.mydomain.com>
Allow from all
AllowOverride all
Options -MultiViews -Indexes
</Directory>
# PassengerAppRoot /var/www/vhosts/rails.mydomain.com
RailsBaseURI /myappname
# RailsBaseURI /myappname2
# RailsBaseURI /myappname3
Include /etc/apache2/production-expires.conf
CustomLog /var/log/apache2/rails.mydomain.com-access_log common
ErrorLog /var/log/apache2/rails.mydomain.com-error_log
</VirtualHost>
加载 Rails 应用程序 (rails.mydomain.com/myappname) 后,我得到:
Error message:
No such file or directory - config/environment.rb
Exception class:
Errno::ENOENT
Application root:
/var/www/vhosts/rails.mydomain.com
config/environment.rb 在那里,我在运行 cap deploy 后通过 SSH 验证了它的存在。
所以我错过了什么,我觉得有些东西没有正确指向,你可以看到应用程序根指向我的 /rails.mydomain.com 文件夹,而不是实际的 /rails.mydomain.com/myappname 文件夹。
【问题讨论】:
-
这可能是权限问题。有时 Apache 需要访问整个文件夹树才能访问您的文件,即它需要能够拥有
/var/www/vhosts的权限,而不仅仅是/rails.mydomain.com只是一个想法。 -
@FareeshVijayarangam 我相信这已经被允许了,我不是 apache 专家......但在 /vhosts 我有一个我认为允许这样做的默认文件(就像我说的,没有专家)跨度>
-
我相信您的
DocumentRoot需要指向您的rails 应用程序的public文件夹 -
那么我将如何运行多个应用程序呢?我需要为 /rails 文件夹中的每个应用程序创建一个虚拟主机,并且该虚拟主机的 documentroot 需要指向应用程序文件夹?
标签: ruby-on-rails ruby-on-rails-3 apache ubuntu passenger