简体   繁体   English

在AWS EC2上安装Ruby 2.0和Rails 4.0.0beta

[英]Installing Ruby 2.0 and Rails 4.0.0beta on AWS EC2

Installing Ruby 2.0.0 and Rails 4.0.0beta1 on the default Amazon EC2 Linux install (Amazon Linux AMI 2012.09.1) goes smoothly. 在默认的Amazon EC2 Linux安装(Amazon Linux AMI 2012.09.1)上顺利安装Ruby 2.0.0和Rails 4.0.0beta1。 But openssl gets in the way (eg http://railsapps.github.com/openssl-certificate-verify-failed.html ) and weird either prevent openssl from getting installed or causing the RubyGem package manager from installing rails. 但是,openssl妨碍了工作(例如, http: //railsapps.github.com/openssl-certificate-verify-failed.html),并且奇怪的是阻止了openssl的安装或导致RubyGem软件包管理器安装rails。

How can I work around these problems? 我该如何解决这些问题?

Log into your brand new instance: 登录到您的全新实例:

[19:59:22] paul:~ $ ssh -i ~/.ssh/server.pem ec2-user@your.ip

   __|  __|_  )
   _|  (     /   Amazon Linux AMI
  ___|\___|___|

  https://aws.amazon.com/amazon-linux-ami/2012.09-release-notes/

and impersonate the root: 并冒充根源:

$ sudo su -

You are logged in as root from here. 您从此处以root用户身份登录。 Apply the server updates: 应用服务器更新:

[root@ip-xx ~]# yum update
...
Complete!
[root@ip-xx ~]# yum groupinstall "Development Tools"
...
Install      72 Package(s)
...
Complete!

Now, this is where it differs from the standard solution. 现在,这与标准解决方案有所不同。 Install RVM but without a distribution of ruby: 安装RVM但不分发ruby:

[root@ip-xx ~]# \curl -L https://get.rvm.io | bash -s stable

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   184  100   184    0     0    135      0  0:00:01  0:00:01 --:--:--   183
100 11861  100 11861    0     0   7180      0  0:00:01  0:00:01 --:--:-- 64113
Downloading RVM from wayneeseguin branch stable
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   124  100   124    0     0    161      0 --:--:-- --:--:-- --:--:--   185
100 1615k  100 1615k    0     0   258k      0  0:00:06  0:00:06 --:--:--  401k

Installing RVM to /usr/local/rvm/
    Creating group 'rvm'

# RVM:  Shell scripts enabling management of multiple ruby environments.
# RTFM: https://rvm.io/
# HELP: http://webchat.freenode.net/?channels=rvm (#rvm on irc.freenode.net)
# Cheatsheet: http://cheat.errtheblog.com/s/rvm/
# Screencast: http://screencasts.org/episodes/how-to-use-rvm

# In case of any issues read output of 'rvm requirements' and/or 'rvm notes'

Installation of RVM in /usr/local/rvm/ is almost complete:

  * First you need to add all users that will be using rvm to 'rvm' group,
    and logout - login again, anyone using rvm will be operating with `umask u=rwx,g=rwx,o=rx`.

  * To start using RVM you need to run `source /etc/profile.d/rvm.sh`
    in all your open shell windows, in rare cases you need to reopen all shell windows.

# root,
#
#   Thank you for using RVM!
#   I sincerely hope that RVM helps to make your life easier and
#   more enjoyable!!!
#
# ~Wayne

Let's check that no ruby version is installed: 让我们检查是否未安装Ruby版本:

[root@ip-xx ~]# rvm list

rvm rubies


# No rvm rubies installed yet. Try 'rvm help install'.

Now, openssl is already installed on the system but is incompatible with setup: 现在,openssl已安装在系统上,但与安装程序不兼容:

[root@ip-xx ~]# openssl version
OpenSSL 1.0.0k-fips 5 Feb 2013

[root@ip-xx ~]# openssl version -d
OPENSSLDIR: "/etc/pki/tls"

Attempting to install ruby2 with this version will result in the following error: 尝试使用此版本安装ruby2将导致以下错误:

[root@ip-xx ~]# rvm install 2.0.0 -- --with-openssl-dir=/etc/pki/tls
Fetching yaml-0.1.4.tar.gz to /usr/local/rvm/archives
######################################################################## 100.0%
Extracting yaml to /usr/local/rvm/src/yaml-0.1.4
Prepare yaml in /usr/local/rvm/src/yaml-0.1.4.
Configuring yaml in /usr/local/rvm/src/yaml-0.1.4.
Compiling yaml in /usr/local/rvm/src/yaml-0.1.4.
Installing yaml to /usr/local/rvm/usr
Installing Ruby from source to: /usr/local/rvm/rubies/ruby-2.0.0-p0, this may take a while depending on your cpu(s)...
ruby-2.0.0-p0 - #downloading ruby-2.0.0-p0, this may take a while depending on your connection...
######################################################################## 100.0%
ruby-2.0.0-p0 - #extracting ruby-2.0.0-p0 to /usr/local/rvm/src/ruby-2.0.0-p0
ruby-2.0.0-p0 - #extracted to /usr/local/rvm/src/ruby-2.0.0-p0
ruby-2.0.0-p0 - #configuring
ruby-2.0.0-p0 - #compiling
ruby-2.0.0-p0 - #installing 
Retrieving rubygems-2.0.3
######################################################################## 100.0%
Extracting rubygems-2.0.3 ...
Removing old Rubygems files...
Installing rubygems-2.0.3 for ruby-2.0.0-p0 ...
Error running 'env GEM_PATH=/usr/local/rvm/gems/ruby-2.0.0-p0:/usr/local/rvm/gems/ruby-2.0.0-p0@global:/usr/local/rvm/gems/ruby-2.0.0-p0:/usr/local/rvm/gems/ruby-2.0.0-p0@global GEM_HOME=/usr/local/rvm/gems/ruby-2.0.0-p0 /usr/local/rvm/rubies/ruby-2.0.0-p0/bin/ruby /usr/local/rvm/src/rubygems-2.0.3/setup.rb', please read /usr/local/rvm/log/ruby-2.0.0-p0/rubygems.install.log
Installation of rubygems did not complete successfully.
Saving wrappers to '/usr/local/rvm/bin'.
ruby-2.0.0-p0 - #adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/gem'? y
cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/irb'? y
cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/erb'? y
cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/ri'? y
cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/rdoc'? y
cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/testrb'? y
cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/rake'? y
ruby-2.0.0-p0 - #importing default gemsets, this may take time ...
Install of ruby-2.0.0-p0 - #complete

Although you'll get ruby2, the "Installation of rubygems did not complete successfully" - notice the warning: "Error running 'env GEM_PATH=..." 尽管您将获得ruby2,但是“ ruby​​gems的安装未成功完成”-注意警告:“运行'env GEM_PATH = ...时出错。”

Instead, we'll get RVM install a copy of openssl for us (see https://rvm.io/packages/openssl/ ). 相反,我们将让RVM为我们安装一个openssl副本(请参阅https://rvm.io/packages/openssl/ )。 The zlib-devel package is required: 需要zlib-devel软件包:

[root@ip-xx ~]# yum install zlib-devel
...
Installed:
  zlib-devel.x86_64 0:1.2.5-7.11.amzn1                                                                                  

Complete!
[root@ip-xx ~]# rvm pkg install openssl
Fetching openssl-1.0.1c.tar.gz to /usr/local/rvm/archives
Extracting openssl to /usr/local/rvm/src/openssl-1.0.1c
Configuring openssl in /usr/local/rvm/src/openssl-1.0.1c.
Compiling openssl in /usr/local/rvm/src/openssl-1.0.1c.
Installing openssl to /usr/local/rvm/usr

Please note that it's required to reinstall all rubies:

    rvm reinstall all --force

Updating openssl certificates

We can now install ruby2: 现在我们可以安装ruby2了:

[root@ip-xx ~]# rvm reinstall 2.0.0 --with-openssl-dir=/usr/local/rvm/usr
Removing /usr/local/rvm/src/ruby-2.0.0-p0...
Removing /usr/local/rvm/rubies/ruby-2.0.0-p0...
Installing Ruby from source to: /usr/local/rvm/rubies/ruby-2.0.0-p0, this may take a while depending on your cpu(s)...
ruby-2.0.0-p0 - #downloading ruby-2.0.0-p0, this may take a while depending on your connection...
ruby-2.0.0-p0 - #extracting ruby-2.0.0-p0 to /usr/local/rvm/src/ruby-2.0.0-p0
ruby-2.0.0-p0 - #extracted to /usr/local/rvm/src/ruby-2.0.0-p0
ruby-2.0.0-p0 - #configuring
ruby-2.0.0-p0 - #compiling
ruby-2.0.0-p0 - #installing 
Removing old Rubygems files...
Installing rubygems-2.0.3 for ruby-2.0.0-p0 ...
Installation of rubygems completed successfully.
Saving wrappers to '/usr/local/rvm/bin'.
ruby-2.0.0-p0 - #adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/gem'? y
cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/irb'? y
cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/erb'? y
cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/ri'? y
cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/rdoc'? y
cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/testrb'? y
cp: overwrite `/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/rake'? y
ruby-2.0.0-p0 - #importing default gemsets, this may take time ...
Install of ruby-2.0.0-p0 - #complete 
Making gemset ruby-2.0.0-p0 pristine.
Making gemset ruby-2.0.0-p0@global pristine.

[root@ip-xx ~]# ruby -v
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]

And rails4: 和rails4:

[root@ip-xx ~]# gem install rails -v 4.0.0beta1
...
28 gems installed
[root@ip-xx ~]# gem list

*** LOCAL GEMS ***

actionmailer (4.0.0.beta1)
actionpack (4.0.0.beta1)
activemodel (4.0.0.beta1)
activerecord (4.0.0.beta1)
activerecord-deprecated_finders (0.0.3)
activesupport (4.0.0.beta1)
arel (4.0.0.beta2)
atomic (1.0.1)
bigdecimal (1.2.0)
builder (3.1.4)
bundler (1.3.4)
erubis (2.7.0)
hike (1.2.1)
i18n (0.6.4)
io-console (0.4.2)
json (1.7.7)
mail (2.5.3)
mime-types (1.21)
minitest (4.3.2)
multi_json (1.7.1)
polyglot (0.3.3)
psych (2.0.0)
rack (1.5.2)
rack-test (0.6.2)
rails (4.0.0.beta1)
railties (4.0.0.beta1)
rake (10.0.3, 0.9.6)
rdoc (4.0.0, 3.12.2)
rubygems-bundler (1.1.1)
rvm (1.11.3.6)
sprockets (2.9.0)
sprockets-rails (2.0.0.rc3)
test-unit (2.0.0.0)
thor (0.17.0)
thread_safe (0.1.0)
tilt (1.3.6)
treetop (1.4.12)
tzinfo (0.3.37)

That's all folks! 那是所有人!

Here is a variant with rbenv. 这是rbenv的变体。

SSH into your brand new instance: SSH进入您的全新实例:

   __|  __|_  )
   _|  (     /   Amazon Linux AMI
  ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2012.09-release-notes/
There are 16 security update(s) out of 57 total update(s) available
Run "sudo yum update" to apply all updates.
Amazon Linux version 2013.03 is available.
[jimjh ~]$ ruby --version
ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-linux]

Impersonate the root and apply server updates: 模拟根目录并应用服务器更新:

$> sudo su -
$> yum update

Install couple of packages: 安装几个软件包:

$> yum install git pcre pcre-devel

Clone rbenv : 克隆rbenv

$> git clone git://github.com/sstephenson/rbenv.git /usr/local/rbenv

Create the following file: 创建以下文件:

# /etc/profile.d/rbenv.sh
export RBENV_ROOT=/usr/local/rbenv
export PATH="${RBENV_ROOT}/bin:$PATH"
eval "$(rbenv init -)"

Install ruby-build : 安装ruby-build

$> . /etc/profile
$> git clone https://github.com/sstephenson/ruby-build.git /usr/local/rbenv/plugins/ruby-build

Install ruby: 安装红宝石:

$> rbenv install 2.0.0-p195  # wait ...
$> rbenv global 2.0.0-p195
$> rbenv rehash

Update rubygems and install passenger: 更新rubygems并安装乘客:

$> gem update --system
$> gem install bundler     
$> gem install passenger

Install nginx through passenger: 通过乘客安装nginx:

$> passenger start

At the time of writing, the latest version of passenger is 4.0.0, which works with ruby 2.0.0. 在撰写本文时,最新版本的passenger是4.0.0,可与ruby 2.0.0一起使用。

Elastic Beanstalk If you are using Elastic Beanstalk, stop passenger Elastic Beanstalk如果使用的是Elastic Beanstalk,请停止乘客

$> sudo service passenger stop

Initialize rbenv by adding the following to /opt/elasticbeanstalk/support/envvars.d/appenv 通过将以下内容添加到/opt/elasticbeanstalk/support/envvars.d/appenv来初始化/opt/elasticbeanstalk/support/envvars.d/appenv

. /etc/profile.d/rbenv.sh

Start passenger 出发乘客

$> sudo service passenger start

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM