https://help.ubuntu.com/community/RubyOnRails などのドキュメントに従って、UbuntuインスタンスにRailsを設定しようとしています。ここのRails入門ページからアプリをセットアップしようとしています: http://guides.rubyonrails.org/getting_started.html 。
私がこれまでにしたこと:
passenger-install-Apache2-module
の実行ApacheとRails(私は両方に不慣れです)に精通していないこともあり、私をつまずかせているのは最後の2つのステップだと思います。
仮想ホストファイルで、/ var/www/blogのブログパブリックディレクトリをポイントしようとしています。私のRailsルートには、指示どおりにroot :to => "home#index"
があります。
Http:// urlを参照すると、通常は「Hello、Rails!」が表示されます。スタートガイドのセクション4.3のページですが、表示されるのはApacheのディレクトリリストだけです。静的ページは機能しますが、Rails処理は機能しません。
この時点で、パッセンジャーモジュールが何かをしているのか、何が起こっているのかを示す証拠をどこで探すのかはわかりません。 http:/// blogで「blog」と呼ばれる別の仮想ホストからRailsアプリを実行するなど、さまざまなことを試しましたが、ルーティングは機能しました(静的ページとすべて)が、Railsは機能しませんでした上記のように。
更新:もう少し遊んだ後、新しいエラーメッセージ(404)が表示されます:
見つかりません
要求されたURL/dispatch.cgiがこのサーバーで見つかりませんでした。
それ以来、このcgi 404は、上記で指摘したhelp.ubuntu.comページのガイダンスから.htaccessに追加した書き換えルールが原因であると判断しました。それは必要ではなかったか、古いバージョンのRailsに適用されたようです。オンラインでヘルプを検索する際の指示の不一致は、方向感覚を失います!ただし、ファイルを削除すると、前の問題が残ります。
これが、最初のエラーと相関すると思われるApacheログのエントリです。このエラーは発生しなくなったようですが、以前に試していた他の何かに関連している可能性があります...
[Fri May 27 22:49:41 2011] [notice] Apache/2.2.16 (Ubuntu) PHP/5.3.3-1ubuntu9 with Suhosin-Patch Phusion_Passenger/3.0.7 configured -- resuming normal operations
[Fri May 27 22:51:18 2011] [error] [client 192.168.1.141] File does not exist: /var/www/blog/Rails, referer: http://192.168.1.138/blog/
これは、cgiに関する404の最新のエントリです。
[Sat May 28 08:01:18 2011] [error] [client 192.168.1.141] File does not exist: /var/www/blog/dispatch.cgi
何が欠けている可能性がありますか?ありがとう!
要求に応じて追加の詳細。 Apacheサイトファイル:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/blog/
RailsEnv development
# <Directory />
# Options FollowSymLinks
# AllowOverride None
# </Directory>
<Directory "/var/www/blog/">
Options Indexes FollowSymLinks -MultiViews +ExecCGI
AllowOverride All
Order allow,deny
allow from all
# AddHandler cgi-script .cgi
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${Apache_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${Apache_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
別の更新:最終的に、トップレベルのDocumentRoot(/ var/www)を使用し、RailsRailsBaseURIを使用してアプリをオフにします。これは、PhusionPassengerの説明の「サブURIへのデプロイ」セクションにマップされます。これはhttp:/// blogとして使用されており、実際には取得したかったものではありませんが、仮想でRailsを学習するためだけに使用しているため、関係ありません。しばらくしてから、トップレベルアプリとして機能させるために作業する必要があります。これが私の現在の(最終的な)VirtualHostファイルです。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
RailsEnv development
<Directory /var/www/>
Options FollowSymLinks
AllowOverride None
</Directory>
RailsBaseURI /blog
<Directory /var/www/blog/>
Options Indexes FollowSymLinks -MultiViews +ExecCGI
AllowOverride All
Order allow,deny
allow from all
# AddHandler cgi-script .cgi
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${Apache_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${Apache_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Ruby on Railsアプリケーションをデプロイする
Ruby on Railsアプリケーションが/ webapps/mycookにあり、ドメインwww.mycook.comを所有しているとします。アプリケーションを次の場所にデプロイできます。仮想ホストのルート(つまり、アプリケーションはルートURLからアクセスできます http://www.mycook.com/ )、またはサブURI内(つまり、アプリケーションはサブURLからアクセスできます) http://www.mycook.com/railsapplication などのURL。
仮想ホストのルートへのデプロイ
Apache構成ファイルに仮想ホストエントリを追加します。次の条件が満たされていることを確認してください。
- 仮想ホストのドキュメントルートは、Ruby on Railsアプリケーションのパブリックフォルダーを指している必要があります。
- Apacheのディレクトリごとのアクセス許可は、このフォルダへのアクセスを許可する必要があります。
- このフォルダではMultiViewを無効にする必要があります。
例えば:
<VirtualHost *:80>
ServerName www.mycook.com
DocumentRoot /webapps/mycook/public
<Directory /webapps/mycook/public>
Allow from all
Options -MultiViews
</Directory>
</VirtualHost>
また、ファイル/フォルダーのアクセス許可を微調整する必要がある場合もあります。次のフォルダがApacheによって読み取り可能で実行可能であることを確認してください。
- このパブリックフォルダ。
- アプリケーションの構成フォルダー。
- すべての親フォルダー。つまり、/ webapps/mycookと/ webappsもApacheで読み取り可能で実行可能である必要があります。
次に、Apacheを再起動します。これで、アプリケーションがデプロイされました。
ドキュメント全体を読む ここ
Sudopassenger-statusと入力して乗客がアプリケーションをロードしていることを再確認します
これにより、乗客がロードされていない場合はエラーが表示され、ロードされていない場合は以下のエラーが表示されます。ロードした1つまたは複数のアプリケーションと、現在の稼働時間が表示される部分に注意してください。
----------- General information -----------
max = 6
count = 1
active = 0
inactive = 1
Waiting on global queue: 0
----------- Application groups -----------
/home/rourkem/public_html/evecord.com/current:
App root: /home/rourkem/public_html/evecord.com/current
* PID: 18976 Sessions: 0 Processed: 5 Uptime: 23m 55s
必ずファイルを削除してくださいindex.html
アプリケーションのpublic
ディレクトリから。