【问题标题】:Deploy rails application with capistrano, no errors but browser doesn't open website使用 capistrano 部署 rails 应用程序,没有错误,但浏览器无法打开网站
【发布时间】:2011-12-13 12:19:13
【问题描述】:

我有一个 Rails 应用程序,我想用 apache、passenger 和 capistrano 部署它。

应用程序在/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:setup、cap deploy:check 和cap deploy:migrations。一切似乎都很好。 Capistrano 不会吐出任何错误。它创建一个新的发布目录,创建restart.txt 文件。但是如果我尝试在浏览器中打开myapp.mydomain.co.uk,它就无法打开它。日志文件为空。

有什么想法可能会出错吗?

【问题讨论】:

    标签: ruby-on-rails apache capistrano passenger


    【解决方案1】:

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

    【讨论】:

    • 是的,我添加了乘客要求我放入 httpd.conf 的 3 行:LoadModulepassenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11 /ext/apache2/mod_passenger.so PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11 PassengerRuby /usr/local/bin/ruby
    • 你检查过所有日志吗(Apache 的 error.log 和 Rails 应用在 APP/shared/log/production.log 中)?你可以从命令行启动应用程序吗?
    • 应用程序 production.log 为空,并且 apache 的 error.log 不包含任何与 rails 应用程序或虚拟主机相关的内容。如何从命令行启动生产中的应用程序?我之前在开发模式下使用 WebRick 部署它,它工作得非常好。
    • rails s -e production 并确保首先迁移生产。只是为了确保该日志的路径是 /var/www/myapp/current/log/production.log 或 /var/www/myapp/shared/log/production.log ?
    • 但是 rails s -e production 运行 WebRick。我想将它部署在 Apache 上,而不是 WebRick。日志文件处于当前状态,但它们是空的。
    【解决方案2】:

    您是否查看当前文件夹是否在 /var/www/myapp 文件夹中创建? 通常你必须在 cap deploy:migrations 之后运行“cap deploy”

    【讨论】:

    • 是的,它已经创建并且我确实运行了 cap deploy。我很确定 capistrano 网站上的所有内容都已正确设置。我怀疑我的 apache 配置有问题。
    【解决方案3】:

    您的虚拟主机定义中有错字。在目录块中,您缺少 /current 文件夹。 DocumentRoot 没问题。

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

    对

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

    这能解决您的问题吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多