1

Rails アプリを、既にルートで PHP サイトを提供しているサーバーにデプロイする必要があります。既存のサイトにアクセスできず、アプリをサブ URL またはサブドメイン、つまりxx.xx.xx.xx/railsまたはにデプロイする必要がありrails.xx.xx.xx.xxます。

アプリをデプロイするために通常使用する Apache 構成:

    <VirtualHost *:80>

      ServerName localhost

      DocumentRoot "C:/RubyStack-3.2.5-0/projects/app_name/public"
      <Directory "C:/RubyStack-3.2.5-0/projects/app_name/public">
        Allow from all
        Options -MultiViews
      </Directory>

      RewriteEngine On

      RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
      RewriteRule ^/(.*)$ balancer://app_balancers%{REQUEST_URI} [P,QSA,L]

      <Proxy balancer://app_balancers>
        BalancerMember http://localhost:3001/
        BalancerMember http://localhost:3002/
      </Proxy>

      # Support for far-futures expires header
      <LocationMatch "^/assets/.*$">
        Header unset ETag
        FileETag None
        # RFC says only cache for 1 year
        ExpiresActive On
        ExpiresDefault "access plus 1 year"
      </LocationMatch>
    </VirtualHost>

この構成を変更して、サブ URL またはサブドメインからそのフォルダーを提供するにはどうすればよいですか? ARedirectMatchは機能しません。既存の PHP サイトから人を遠ざけることになるからですよね?

4

1 に答える 1

1

あなたが提案したように、サブドメインを使用して、名前ベースの仮想ホスティングを行うのが最も簡単な方法です。だからあなたが書くところ:

<VirtualHost *:80>
  ServerName localhost
</VirtualHost>

代わりにサブドメインを入力してください:

<VirtualHost *:80>
  ServerName mysubdomain.mycompany.com
</VirtualHost>

Apache は、そのサブドメインへのリクエストを「メイン」仮想ホストから自動的に分離する必要があります。

編集:

または、Rails アプリをサブディレクトリにマウントすることもできます (Passenger を使用していると仮定します)。これは、私自身のローカル ステージング環境に基づく例です。Phusion Webサイトの指示に従って、これを機能させました

<VirtualHost *:80>
  ServerName localhost

  # We will mount our application under http://localhost/myapp
  RailsBaseURI /myapp

  # This can be anywhere on the system, I just happened to use /home/www
  <Directory /home/www/myapp>
    # Here you can add any directives necessary for your app, like for example..
    SetEnv GEM_HOME /home/user/.rvm/gems/ree-1.8.7-2012.02
  </Directory>
</VirtualHost>

ここで、もう 1 つやらなければならないことがあります。それは、/home/www/myapp を実際のアプリケーションのパブリック ディレクトリへのリンクにすることです。したがって、自分のホームディレクトリにアプリケーションがあるとしましょう。次のように入力する必要があります。

cd /home/www
ln -s /home/myuser/myapp/public myapp

次に ls -l と入力すると、次のように表示されます。

lrwxrwxrwx 1 myuser myuser 18 Jun 10 16:41 devb -> /home/myuser/myapp/public

そうあるべきだと思います。

于 2012-08-24T15:21:51.940 に答える