1

カピストラーノ、nginx、パッセンジャーを使用して、Rails 3 アプリを github から ec2 にデプロイしています。

これは私の deploy.rb ファイルです:

set :application, "my-Blog"

set :repository,  "https://github.com/whatever/my-Blog.git"

set :scm, :git

role :app, "ec2 DNS"

role :web, "eec2 DNS"

role :db,  "ec2 DNS", :primary => true

set :user, 'ec2-user'

set :deploy_to, "/home/ec2-user/apps/Blog"

set :use_sudo, false

default_run_options[:pty] = true

set :deploy_via, :remote_cache

ssh_options[:keys] = ["#{ENV['HOME']}/.ssh/my-key.pem"] 

set :keep_releases, 3

namespace :deploy do

  task :start do ; end

  task :stop do ; end

  task :restart, :roles => :app, :except => { :no_release => true } do

  end

 end

deploy コマンドを実行すると、すべて問題なく、アプリは現在のディレクトリの下の ec2 にあります。これは、カピストラーノが github からソース コードを取得できることを意味します。

私の ec2 インスタンスでは、ruby、rvm、mysql、rails、nginx、passenger のすべてがセットアップされています。

しかし、ec2 DNS にアクセスしても、アプリが表示されません!

何が間違っている可能性があるかについて何か提案はありますか? これは私の最初の展開です!

ご回答有難うございます!私のアプリケーションが表示されることを期待しています! aws コンソールには、22 (SSH) と 80 (HTTP) があります。これは、ポート 80 が開いていることを意味します。私のnginx構成ファイルに何か問題があるはずだと思います.これは私がこのファイルに持っているものです:

ユーザー nginx;

server {

          listen 80;
          server_name ec2-54-242-228-182.compute-1.amazonaws.com;
        #  root /home/ec2-user/apps/Blog/current/public;
         # passenger_enabled on;
        }

}

ルート ディレクトリにコメントすると、パブリック DNS の URL に「Amazon Linux AMI の nginx へようこそ! コンテンツを任意の場所に配置し、nginx 構成ファイル /etc のルート構成ディレクティブを編集する必要があります。 /nginx/nginx.conf." ルートディレクトリのコメントを外すと、403エラーが発生します! ログ ファイルには、「current/public/index.html」は禁止されています (13: 許可が拒否されました) と表示されます。

4

2 に答える 2

0

答えは、表示されないという意味によって異なります。デフォルトの Web ページを取得している場合、Web サーバーが名前ベースの仮想ホストを解決しようとしている可能性があります。その場合は、EC2 インスタンスのパブリック IP アドレスをローカルhostsファイルに追加してみてください。

123.456.789.012  domain-nginx-expects.com

サーバーからまったく応答がない場合は、プロセスリストをチェックして、nginx とパッセンジャーが実行されていることを確認してください。また、そのインスタンスの EC2 セキュリティ グループをチェックして、ポート 80 が開いていることを確認します。サーバーにログインしている間に、ポート 80 への telnet を試すこともできます。

$ telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /
于 2012-11-08T06:00:54.200 に答える
0

AWS パネルで開いているかどうか、nginx 構成にあるポートを確認します。telnetを使用してポートに接続できることを確認しますサーバーでnginx、パッセンジャーが実行されているかどうかを確認します

$ ps -el | grep nginx

nginx のアクセス ログとエラー ログをチェックして、サービスにアクセスしようとしている自分のアクティビティを確認できるかどうかを確認します。

于 2012-11-09T23:42:13.440 に答える