【问题标题】:deploying an nginx/rails/node app onto EC2在 EC2 上部署 nginx/rails/node 应用程序
【发布时间】:2011-11-19 02:29:38
【问题描述】:

基本问题

  • 我正在构建一个应用程序,并希望在将其部署到 EC2 时获得一些帮助
  • 有人告诉我应该使用 capistrano
  • 我的下一步是什么?

关于应用程序

  • 简单的 Rails 应用程序 (3.1.1)
  • 简单节点应用 (0.4.2)
  • redis 在 rails 和 node (2.0.4) 之间进行通信
  • nginx 反向代理 rails 和 node (1.0.6)
  • 数据库目前是sqlite(但可能会在不久的将来升级到mysql或mongo)
  • 一个nginx.conf文件如下:

    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
    
    http {
      include       mime.types;
      default_type  application/octet-stream;
    
      sendfile        on;
    
      keepalive_timeout  65;
    
      server {
        listen 80;
        server_name localhost;
    
        location / {
          proxy_pass http://localhost:3000/;
        }
    
        location /events/ {
          proxy_pass http://localhost:3001/;
          proxy_buffering off;
          proxy_read_timeout 1000s;
        }
      }
    }
    

关于 EC2 实例

  • ec2-12-34-56-789.compute-1.amazonaws.com
  • 基本的 64 位 Amazon Linux t1.micro(直到一切正常,然后我会找到其他地方进行部署;可能是 EC2,可能是机架空间,可能是完全不同的东西)

关于我的部署平台

  • OSX 10.6.8
  • 将以下内容存储在 ~/.ec2/ 中(可能需要移动才能让 capistrano 工作)

    cert-123456789ABCDEF0123456789ABCDEF0.pem
    pk-123456789ABCDEF0123456789ABCDEF0.pem
    ec2-keypair
    
  • 目前有以下 deploy.rb (但它不起作用)

    set :application, "clashcentral"
    set :repository,  "git@github.com:HairyMezican/GameLobby.git"
    set :branch, "master"
    set :repository_cache, "git_cache"
    set :deploy_via, :remote_cache
    set :ssh_options, { :forward_agent => true }
    
    set :scm, :git
    ssh_options[:keys] = [File.join(ENV["HOME"], ".ec2", "ec2-keypair")] 
    
    role :web, "ec2-12-34-56-789.compute-1.amazonaws.com"
    role :app, "ec2-12-34-56-789.compute-1.amazonaws.com"
    role :db,  "ec2-12-34-56-789.compute-1.amazonaws.com", :primary => true
    

错误

  • 我得到的原始错误是connection failed for: ec2-12-34-56-789.compute-1.amazonaws.com (Net::SSH::AuthenticationFailed: Empty)
  • 当我在set :user, "ec2-user" 行中添加时,我得到的当前错误是failed: "sh -c 'if [ -d /u/apps/clashcentral/shared/git_cache ]; then cd /u/apps/clashcentral/shared/git_cache && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd && git clean -q -d -x -f; else git clone -q git@github.com:HairyMezican/GameLobby.git /u/apps/clashcentral/shared/git_cache && cd /u/apps/clashcentral/shared/git_cache && git checkout -q -b deploy cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd; fi'" on ec2-12-34-56-789.compute-1.amazonaws.com

【问题讨论】:

  • 目前,当我运行“cap deploy”或“cap deploy:setup”时,我被告知“连接失败:ec2-12-34-56-789.compute-1.amazonaws。 com (Net::SSH::AuthenticationFailed: Empty)"
  • 可以直接ssh到服务器吗?
  • 是的; “ssh -i ~/.ec2/ec2-keypair ec2-user@ec2-12-34-56-789.compute-1.amazonaws.com”让我进入实例上的 SSH 屏幕
  • 我建议edit将实际的错误信息放入问题中。
  • 感谢您的建议;它已被编辑

标签: deployment amazon-ec2 nginx capistrano


【解决方案1】:

相信你需要补充:

set :user, "ec2-user"

到您的deploy.rb 文件,如下所示:http://wiki.dreamhost.com/Capistrano#Automate_Deployment_with_Capistrano_.28.22capify.22.29

【讨论】:

  • 嗯,当我把它放进去时,我得到了一个不同的错误。我想这就是进步
  • 哇,cdcdcd.. 确实令人惊讶。我无法确定这一点。
  • cdcd 的东西只是我编辑信息。获得那里的实际信息会更有用吗?
  • 这让我感觉好多了 :) 但不,这对 没有任何帮助。祝你好运。 :)
猜你喜欢
  • 2019-01-04
  • 2013-06-22
  • 1970-01-01
  • 2013-03-12
  • 1970-01-01
  • 2020-08-26
  • 2011-06-28
  • 1970-01-01
  • 2014-07-07
相关资源
最近更新 更多