ruby-on-rails amazon-web-services amazon-ec2 ruby-on-rails-4 ruby-2.0

ruby on rails - Instalación de Ruby 2.0 y Rails 4.0.0beta en AWS EC2



ruby-on-rails amazon-web-services (2)

Instalar Ruby 2.0.0 y Rails 4.0.0beta1 en la instalación predeterminada de Amazon EC2 Linux (Amazon Linux AMI 2012.09.1) funciona sin problemas. Pero openssl se entromete (por ejemplo, http://railsapps.github.com/openssl-certificate-verify-failed.html ) y es extraño que impida que openssl se instale o que el administrador de paquetes RubyGem instale los rieles.

¿Cómo puedo evitar estos problemas?


Aquí hay una variante con rbenv.

SSH en su nueva instancia:

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

Suplantar la raíz y aplicar actualizaciones del servidor:

$> sudo su - $> yum update

Instale un par de paquetes:

$> yum install git pcre pcre-devel

Clonar rbenv :

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

Crea el siguiente archivo:

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

Instalar ruby-build :

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

Instalar Ruby:

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

Actualiza rubygems e instala pasajero:

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

Instale nginx a través del pasajero:

$> passenger start

En el momento de escribir, la última versión de pasajeros es 4.0.0, que funciona con ruby ​​2.0.0.

Beanstalk elástico Si está usando Elastic Beanstalk, pare pasajero

$> sudo service passenger stop

Inicialice rbenv agregando lo siguiente a /opt/elasticbeanstalk/support/envvars.d/appenv

. /etc/profile.d/rbenv.sh

Comenzar pasajero

$> sudo service passenger start


Inicie sesión en su nueva instancia:

[19:59:22] paul:~ $ ssh -i ~/.ssh/server.pem [email protected] __| __|_ ) _| ( / Amazon Linux AMI ___|/___|___| https://aws.amazon.com/amazon-linux-ami/2012.09-release-notes/

y hacerse pasar por la raíz:

$ sudo su -

Has iniciado sesión como root desde aquí. Aplicar las actualizaciones del servidor:

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

Ahora, aquí es donde difiere de la solución estándar. Instale RVM pero sin una distribución de 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

Comprobemos que no haya instalada ninguna versión de ruby:

[root@ip-xx ~]# rvm list rvm rubies # No rvm rubies installed yet. Try ''rvm help install''.

Ahora, openssl ya está instalado en el sistema pero no es compatible con la configuración:

[root@ip-xx ~]# openssl version OpenSSL 1.0.0k-fips 5 Feb 2013 [root@ip-xx ~]# openssl version -d OPENSSLDIR: "/etc/pki/tls"

Intentar instalar Ruby2 con esta versión dará como resultado el siguiente 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

Aunque obtendrás ruby2, la "Instalación de rubygems no se completó correctamente": fíjate en la advertencia: "Error al ejecutar" env GEM_PATH = ... "

En su lugar, conseguiremos que RVM instale una copia de openssl para nosotros (consulte https://rvm.io/packages/openssl/ ). El paquete zlib-devel es obligatorio:

[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

Ahora podemos instalar 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]

Y 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)

¡Eso es todo amigos!