大家好,请忽略我的菜鸟身份,这是我第一次部署 RailsApp;
我已将 apache 和 phussion Passenger 与 rvm 一起使用,以下是我在 apache2.conf 中添加的虚拟主机配置,
在此之前,它给了我禁止访问错误 403,我用 Google 搜索并发现这是权限问题,所以我运行chmod -R 640 /root
,之后它开始列出我的公用文件夹文件。
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-4.0.8/buildout/apache2/mod_passenger.so
PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-4.0.8
PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-1.9.3-p194/ruby
<VirtualHost *:80>
ServerName mydoctor
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /root/mydoctor/public
<Directory /root/mydoctor/public>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
</Directory>
</VirtualHost>
如有任何建议,我们将不胜感激。
谢谢
答案1
在 中有一个 webroot 是非常奇怪的/root
。通常,此文件夹是 root 的主目录,用于存放只有 root 才可以访问的内容;您可能已经造成了安全风险。
如果您想阻止显示目录列表,您应该将选项添加-Indexes
到目录的选项指令中(目前只是-MultiViews
)。
您可能还想设置默认文档或类似内容;否则,您只会收到错误而不是目录列表403 Forbidden
。
答案2
您必须将以下行添加到 VirtualHost-apache.conf:
Options +Indexes
Options Indexes FollowSymLinks
AllowOverride all
Order allow,deny
Allow from all
Options -MultiViews
应保持如下状态:
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-4.0.8/buildout/apache2/mod_passenger.so
PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-4.0.8
PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-1.9.3-p194/ruby
<VirtualHost *:80>
Options +Indexes
ServerName mydoctor
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /root/mydoctor/public
<Directory /root/mydoctor/public>
Options Indexes FollowSymLinks
AllowOverride all
Order allow,deny
Allow from all
Options -MultiViews
</Directory>
RailsEnv production
</VirtualHost>
保存设置并重新启动 apache2