web-dev-qa-db-ja.com

乗客と一緒にApacheでRailsアプリをセットアップする-Railsが読み込まれないようです

https://help.ubuntu.com/community/RubyOnRails などのドキュメントに従って、UbuntuインスタンスにRailsを設定しようとしています。ここのRails入門ページからアプリをセットアップしようとしています: http://guides.rubyonrails.org/getting_started.html

私がこれまでにしたこと:

  • RVMおよびGEMを介したRuby/RubyGems/Railsのインストール(これにより、Ruby1.9.2およびRails 3.0.7がインストールされました)
  • Mysqlおよびmysql2モジュールのインストール(後で機能しませんでした)
  • Railsアプリの作成(チュートリアルが指示しているブログアプリ)
  • / var/www/blog /からの/ home/me/www/blog/public /の対称リンク
  • レーキによるDBの作成
  • ApacheでRailsを実行するためのパッセンジャーモジュールのインストール
  • Apacheを構成するためのpassenger-install-Apache2-moduleの実行
  • Public/Rails appフォルダーからpublic.htmlファイルを削除して、コントローラー/ビューを起動できるようにします
  • サイトの構成-仮想ホストで使用可能なファイル
  • Railsルーティングの構成

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>
11
Episcopus

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を再起動します。これで、アプリケーションがデプロイされました。

ドキュメント全体を読む ここ

21
MarioRicalde

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
4
Rourke

必ずファイルを削除してくださいindex.htmlアプリケーションのpublicディレクトリから。

0
Andrew Nesbitt