Installing Ruby 2.0 and Rails 4.0.0beta on AWS EC2

后端 未结 2 544
孤街浪徒
孤街浪徒 2020-12-07 10:14

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. But openssl gets in the way (eg http://railsap

相关标签:
2条回答
  • 2020-12-07 10:33

    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. 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:

    [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:

    [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:

    [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:

    [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=..."

    Instead, we'll get RVM install a copy of openssl for us (see https://rvm.io/packages/openssl/). The zlib-devel package is required:

    [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:

    [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:

    [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!

    0 讨论(0)
  • 2020-12-07 10:34

    Here is a variant with rbenv.

    SSH into your brand new instance:

       __|  __|_  )
       _|  (     /   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:

    $> 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:

    $> . /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:

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

    Install nginx through passenger:

    $> passenger start
    

    At the time of writing, the latest version of passenger is 4.0.0, which works with ruby 2.0.0.

    Elastic Beanstalk If you are using Elastic Beanstalk, stop passenger

    $> sudo service passenger stop
    

    Initialize rbenv by adding the following to /opt/elasticbeanstalk/support/envvars.d/appenv

    . /etc/profile.d/rbenv.sh
    

    Start passenger

    $> sudo service passenger start
    
    0 讨论(0)
提交回复
热议问题