Canvas 和 Apache 權限被拒絕
我正在為 canvas-LMS 設置測試伺服器。但是,當我按照生產入門指南中的所有步驟安裝所有要求並完成所有初始設置後嘗試訪問它時,我得到可怕的“您無權訪問此伺服器上的 /”。
apache 提供的預設站點執行良好,但是當我註冊畫佈時出現錯誤。這是我的 /etc/apache2/sites-available/canvas:
<VirtualHost *:80> ServerName canvas.example.com ServerAlias files.canvas.example.com ServerAdmin youremail@example.com 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 example@example.com 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 很陌生,所以感謝您的幫助!謝謝!
根據我對 Rails/Passenger 和直接與 Canvas 打交道的經驗,在我看來,請求不是由 Passenger 處理的,因此,它試圖拉取 /var/canvas/public 的目錄列表,根據您遇到的錯誤,這可能會被禁用。
我會仔細檢查Passenger模組是否真的被載入了;您應該通過以下方式確認:
apachectl -t -D DUMP_MODULES
您應該看到類似於“passenger_module(共享)”的內容 - 如果您需要確保它已載入。如果您確實看到它,您需要確保它已正確配置(您可能需要設置PassengerRoot 和PassengerDefaultRuby 指令,具體取決於您的部署)。您可能需要重新訪問有關此的 Production Start 文件部分以獲取更多詳細資訊。
如果您仍然遇到問題,請告訴我;我對處理 Canvas 有點熟悉。
編輯:
如果實際上已經載入了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
- 它應該為您提供輸出指令。您可以在乘客文件中看到更多關於這些指令的資訊。
我可能會離開這裡,但聽起來這可能是你的問題。