我正在为 canvas-LMS 设置一个测试服务器。但是,当我按照生产入门指南中的所有步骤安装所有要求并完成所有初始设置后尝试访问它时,我得到了可怕的“您无权访问此服务器上的 /”信息。
apache 提供的默认站点运行良好,但是当我注册 Canvas 时出现错误。这是我的 /etc/apache2/sites-available/canvas:
<VirtualHost *:80>
ServerName canvas.example.com
ServerAlias files.canvas.example.com
ServerAdmin [email protected]
DocumentRoot /var/canvas/public
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteCond %{REQUEST_URI} !^/health_check
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]
ErrorLog /var/log/apache2/canvas_errors.log
LogLevel warn
CustomLog /var/log/apache2/canvas_access.log combined
SetEnv RAILS_ENV production
<Directory /var/canvas/public>
Allow from all
Options -MultiViews
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName canvas.example.com
ServerAlias files.canvas.example.com
ServerAdmin [email protected]
DocumentRoot /var/canvas/public
ErrorLog /var/log/apache2/canvas_errors.log
LogLevel warn
CustomLog /var/log/apache2/canvas_ssl_access.log combined
SSLEngine on
BrowserMatch "MSIE [2-6]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
# the following ssl certificate files are generated for you from the ssl-cert package.
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
SetEnv RAILS_ENV production
<Directory /var/canvas/public>
Allow from all
Options -MultiViews
</Directory>
</VirtualHost>
这是默认文件。我什么都没改。入门指南:https://github.com/instructure/canvas-lms/wiki/Production-Start
我对 Apache 还不熟悉,所以任何帮助我都非常感谢!谢谢!
答案1
从我使用 Rails/Passenger 和直接处理 Canvas 的经验来看,这个请求听起来不像是由 Passenger 处理的,因此,它试图提取 /var/canvas/public 的目录列表,根据您收到的错误,该目录列表很可能已被禁用。
我会再次检查 Passenger 模块是否真的被加载;您应该能够使用以下命令进行确认:
apachectl -t -D DUMP_MODULES
您应该会看到类似“passenger_module (shared)”的内容 - 如果您需要确保它已加载。如果您确实看到了它,您需要确保它已正确配置(您可能需要设置 PassengerRoot 和 PassengerDefaultRuby 指令,具体取决于您的部署)。您可能需要重新访问生产开始文档请参阅有关此内容的更多详细信息。
如果您仍然遇到问题,请告诉我;我对处理 Canvas 比较熟悉。
编辑:
如果 Passenger 确实已加载但仍显示空白页,那么可能是因为,正如我之前提到的,缺少一些 Passenger 配置指令。我可以通过从我的 Passenger.conf 中注释掉 PassengerDefaultRuby 和 PassengerRoot 指令来复制您描述的行为。您希望看到这些的路径将因您的系统/部署方法而异,但为了让您有个概念,以下是我在使用 RVM 的 cPanel 沙盒服务器上的样子:
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
您应该能够通过重新运行获得这些指令的理想设置passenger-install-apache2-module
- 它应该在输出中为您提供指令。
您可以在乘客文件。
我可能错了,但听起来这可能是你的问题。