我正在尝试将我的第一个rails应用程序部署到与Capistrano一起部署的Ubuntu / Apache / Passenger服务器上。我已经设置了一个虚拟主机,指向我所有的rails应用程序都将存在的目录:
这是我的虚拟主机文件:
<VirtualHost *:80>
ServerName rails.mydomain.com
ServerAlias rails.mydomain.com
DocumentRoot /var/www/vhosts/rails.mydomain.com
<Directory /var/www/vhosts/rails.mydomain.com>
Allow from all
AllowOverride all
Options -MultiViews -Indexes
</Directory>
# PassengerAppRoot /var/www/vhosts/rails.mydomain.com
RailsBaseURI /myappname
# RailsBaseURI /myappname2
# RailsBaseURI /myappname3
Include /etc/apache2/production-expires.conf
CustomLog /var/log/apache2/rails.mydomain.com-access_log common
ErrorLog /var/log/apache2/rails.mydomain.com-error_log
</VirtualHost>
加载rails应用程序(rails.mydomain.com/myappname)后,我得到:
Error message:
No such file or directory - config/environment.rb
Exception class:
Errno::ENOENT
Application root:
/var/www/vhosts/rails.mydomain.com
config / environment.rb在那里,我在运行cap deploy后通过SSH验证了它的存在。
所以我错过了什么,我觉得有些东西没有正确指向,你可以看到Application root指向我的/rails.mydomain.com文件夹,而不是实际的/rails.mydomain.com/myappname文件夹。
答案 0 :(得分:1)
您是否将myappname符号链接到应用的公共目录?
ln -s /path/to/the/myappname/public/ /var/www/vhosts/rails.mydomain.com/myappname
答案 1 :(得分:0)
根据Passenger docs(请参阅“3.1。部署到虚拟主机的根目录”),您需要将DocumentRoot设置为应用程序的公共目录。试试这个:
DocumentRoot /var/www/vhosts/rails.mydomain.com/public
<Directory /var/www/vhosts/rails.mydomain.com/public>
Allow from all
Options +MultiViews
</Directory>