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!