我需要将我的Rails应用程序部署到已经在其根目录下为PHP站点提供服务的服务器上。我无法触及现有网站,我必须在子网址或子网域部署我的应用,即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>
如何更改此配置以从子网址或子网域提供该文件夹? RedirectMatch
无法正常工作,因为它也会将人们从现有的PHP网站上移走,对吗?
答案 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
我认为应该是它。