在同一个Apache服务器上部署2个站点

时间:2012-08-24 13:27:24

标签: ruby-on-rails ruby-on-rails-3 apache deployment

我需要将我的Rails应用程序部署到已经在其根目录下为PHP站点提供服务的服务器上。我无法触及现有网站,我必须在子网址或子网域部署我的应用,即xx.xx.xx.xx/railsrails.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>

如何更改此配置以从子网址或子网域提供该文件夹? RedirectMatch无法正常工作,因为它也会将人们从现有的PHP网站上移走,对吗?

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用您建议的子域名进行基于名称的虚拟主机托管。所以你写的地方:

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

只需输入您的子域名:

<VirtualHost *:80>
  ServerName mysubdomain.mycompany.com
</VirtualHost>
然后,Apache应该自动将对该子域的任何请求与“主”虚拟主机分开。

修改

或者也可以将rails应用程序安装到子目录中(假设您正在使用Passenger。)这是基于我自己的本地登台环境的示例。我按照Phusion website

上的说明完成了这项工作
<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>

现在你还需要做一件事,那就是make / home / www / myapp是指向实际应用程序的公共目录的链接。所以,假设您在自己的homedir中有应用程序,则必须输入:

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

我认为应该是它。