2

これはかなり長い話です... しかし、基本的には、私が解決できないように見えることを除けば、他の誰もが抱えていると思われる同じ問題に要約されます.

Ubuntu 12.04.1 LTS x64 である EC2 ami-3d4ff254 を使用しています。Ruby 1.93 を必要とし、Sinatra アプリであるGithubs Janky アプリケーションをデプロイしています。

Ubuntu での依存関係の基本的なインストール手順は次のとおりです。

sudo apt-get -y update
sudo apt-get -y install curl ssh git-core git build-essential zlib1g zlib1g-dev libyaml-dev libxml2-dev libc6-dev autoconf automake libtool make postgresql postgresql-client postgresql-contrib libpq-dev ruby1.9.3 ruby1.9.1-dev rubygems1.9.1 ruby-bundler openssl

ここの指示に従って、1.9.3 がデフォルトであることを確認しました。

sudo update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9.3 400 \
--slave   /usr/share/man/man1/ruby.1.gz ruby.1.gz \
                /usr/share/man/man1/ruby1.9.3.1.gz \
--slave   /usr/bin/ri ri /usr/bin/ri1.9.3 \
--slave   /usr/bin/irb irb /usr/bin/irb1.9.3 \
--slave   /usr/bin/rdoc rdoc /usr/bin/rdoc1.9.3 \

sudo update-alternatives --install /usr/bin/gem gem /usr/bin/gem1.9.3 400

sudo gem install rubygems-update

それが私の環境の基本的なセットアップです。

ツール バージョンのコマンド ライン検証

ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-linux]

gem -v
1.8.11

openssl version
OpenSSL 1.0.1 14 Mar 2012

Gemfile.lock の内容は次のとおりです。

GEM
  remote: http://rubygems.org/
  specs:
    activemodel (3.2.8)
      activesupport (= 3.2.8)
      builder (~> 3.0.0)
    activerecord (3.2.8)
      activemodel (= 3.2.8)
      activesupport (= 3.2.8)
      arel (~> 3.0.2)
      tzinfo (~> 0.3.29)
    activesupport (3.2.8)
      i18n (~> 0.6)
      multi_json (~> 1.0)
    addressable (2.3.2)
    arel (3.0.2)
    broach (0.2.1)
      json (~> 1.4)
      nap (~> 0.3)
    builder (3.0.4)
    daemons (1.1.9)
    eventmachine (1.0.0)
    faraday (0.8.4)
      multipart-post (~> 1.1)
    faraday_middleware (0.9.0)
      faraday (>= 0.7.4, < 0.9)
    hashie (1.2.0)
    hipchat (0.6.1)
      httparty
      httparty
    httparty (0.9.0)
      multi_json (~> 1.0)
      multi_xml
    i18n (0.6.1)
    janky (0.9.13)
      activerecord (~> 3.2.0)
      broach (~> 0.2)
      mustache (~> 0.11)
      rake (~> 0.9.2)
      replicate (~> 1.4)
      sinatra (~> 1.3)
      sinatra_auth_github (~> 0.7.0)
      yajl-ruby (~> 1.1.0)
    json (1.7.5)
    mime-types (1.19)
    multi_json (1.3.7)
    multi_xml (0.5.1)
    multipart-post (1.1.5)
    mustache (0.99.4)
    nap (0.5.1)
    oauth2 (0.5.2)
      faraday (~> 0.7)
      multi_json (~> 1.0)
    octokit (1.4.0)
      addressable (~> 2.2)
      faraday (~> 0.8)
      faraday_middleware (~> 0.8)
      hashie (~> 1.2)
      multi_json (~> 1.3)
    pg (0.14.1)
    rack (1.4.1)
    rack-protection (1.2.0)
      rack
    rake (0.9.2.2)
    replicate (1.5)
    rest-client (1.6.7)
      mime-types (>= 1.16)
    sinatra (1.3.3)
      rack (~> 1.3, >= 1.3.6)
      rack-protection (~> 1.2)
      tilt (~> 1.3, >= 1.3.3)
    sinatra_auth_github (0.7.0)
      rest-client (~> 1.6.1)
      sinatra (~> 1.0)
      warden-github (~> 0.7.0)
      yajl-ruby (~> 1.1)
    thin (1.5.0)
      daemons (>= 1.0.9)
      eventmachine (>= 0.12.6)
      rack (>= 1.0.0)
    tilt (1.3.3)
    tzinfo (0.3.35)
    warden (1.2.1)
      rack (>= 1.0)
    warden-github (0.7.0)
      json (~> 1.5)
      oauth2 (~> 0.5.2)
      octokit (~> 1.4.0)
      rest-client (~> 1.6.1)
      warden (~> 1.0)
      yajl-ruby (~> 1.1)
    yajl-ruby (1.1.0)

PLATFORMS
  ruby

DEPENDENCIES
  hipchat (~> 0.4)
  janky (~> 0.9)
  pg
  thin

アプリは Upstart で実行されています (Foreman によって構成されています)。

https サイトへの外部接続を確立する必要がある場合を除いて、すべてがアプリで完全に正常に機能しているようです。それは恐ろしいもので死ぬOpenSSL::SSL::SSLError - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed:

変数を証明書ファイルにエクスポートしようとしました

export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

モンキーパッチの提案をいくつか試しました。

openssl を使用して cmd 行でサイトに接続することもできるため、これはシステムの問題ではなく、Ruby の問題にすぎないようです (私が知る限り)。

openssl s_client -connect my.jenkins.site:443

これは少しクロスポストですが、 Janky issue trackerには、Ruby が爆破された場所のコール スタックなど、この物語の詳細がたくさんあります。

誰かが素晴らしいアイデアを持っていたら、私は困惑しています! (次のオプションは、私が何も知らない RVM を使用することだと思います)。

4

1 に答える 1

0

これは 1.9.3p0 に要約されると思います。

RVM を使用して Ruby をインストールし、新しいバージョンを使用するとすぐに、問題は解決しました。

したがって、ここでの教訓は、Ubunutu に同梱されている Ruby を使用しないことです。

FWIW - やり直す必要がある場合は、代わりに rbenv を使用します。それははるかに簡単です。RVM を使用するのは少し面倒です (特に、デプロイ ユーザーがアプリを実行しているユーザーと同じではない Capistrano デプロイを使用する場合など)。

于 2013-02-20T13:40:20.237 に答える