使用capistrano部署rails应用程序,没有错误,但浏览器无法打开网站

时间:2011-12-13 12:19:14

标签: ruby-on-rails apache capistrano passenger

我有一个我想用apache,passenger和capistrano部署的rails应用程序。

该应用程序位于/var/www/myapp/

在我的http.conf文件中,我添加了此块:

<VirtualHost *:80>
  ServerName myapp.mydomain.co.uk
  DocumentRoot /var/www/myapp/current/public
  <Directory /var/www/myapp/public>
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

我的/etc/hosts文件包含4行。前3行已经存在,我为rails应用添加了第4行。

127.0.0.1               localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
130.88.111.33           mydomain.ac.uk ngrl
127.0.0.1               myapp.mydomain.co.uk

我的deploy.rb文件如下所示:

set :user, 'me'
set :domain, 'mydomain.co.uk'
set :application, 'myapp'

set :repository, "me@mydomain.co.uk:git/myapp.git"
set :deploy_to, "/var/www/myapp"
set :normalize_asset_timestamps, false

role :app, domain
role :web, domain
role :db, domain, :primary => true

default_run_options[:pty] = true

set :deploy_via, :remote_cache
set :scm, 'git'
set :branch, 'master'
set :scm_verbose, true
set :use_sudo, false

namespace :deploy do
  desc "cause Passenger to initiate a restart"
  task :restart do
    run "touch #{File.join(current_path, 'tmp','restart.txt')}"
  end

  desc "reload the database with seed data"
  task :seed do
   run "cd #{current_path}; rake db:seed RAILS_ENV=production"
  end
end

after "deploy:update_code", :bundle_install
desc "install the necessary prereqisites"
task :bundle_install, :roles => :app do
  run "cd #{release_path} && bundle install"
end

我跑了cap deploy:setupcap deploy:checkcap deploy:migrations。一切似乎都很好。卡皮斯特拉诺没有吐出任何错误。它创建一个新的发布目录,创建restart.txt文件。但是,如果我尝试在浏览器中打开myapp.mydomain.co.uk,则无法打开它。日志文件为空。

任何想法可能会出现问题吗?

3 个答案:

答案 0 :(得分:0)

您是否已将特定于Passenger的配置添加到Apache conf?我没有在你的例子中看到它!

答案 1 :(得分:0)

您是否看到当前文件夹是否在/ var / www / myapp文件夹中创建? 通常,您必须在上限部署后运行“cap deploy”:迁移

答案 2 :(得分:0)

您的vhost定义中有拼写错误。在目录块中,您缺少/ current文件夹。 DocumentRoot没问题。

....
DocumentRoot /var/www/myapp/current/public
<Directory /var/www/myapp/public>
...

VS

...
DocumentRoot /var/www/myapp/current/public
<Directory /var/www/myapp/current/public>
...

这可以解决您的问题吗?