Table of Contents
Centos: Mise en oeuvre de RUBY
Table of Contents
:
Ruby est un langage de programmation interprété, orienté objet. Il existe de nombreuses bibliothèques de fonctionnalités adjoignables au langage qui contiennent de nombreuses fonctionnalités supplémentaires, mais aussi des extensions.
Ruby on Rails, également appelé RoR ou Rails, est un framework web libre écrit en Ruby. Il suit le motif de conception modèle-vue-contrôleur (MVC). Il propose une structure qui permet de développer rapidement et intuitivement. Cependant, il impose un grand niveau d'abstraction dans la programmation qui apporte en contre-partie l'économie d'écrire soi-même la plupart des routines obligatoires d'une application web.
Installation de ruby2
Activer le depôt Software Collections (SCol),
Red Hat a mis à disposition pour CentOS une sélection de paquets du projet COPR initié par Fedora au travers du nouveau dépôt Software Collections, pour activer ces dépôt :
- Activer le dépôt extras dans CentOS à partir du fichier
/etc/yum.repos.d/CentOS-Base.repo
en passant la directive enabled à 1, - Installer le paquet centos-release-scl
yum install centos-release-scl-rh
Installer ruby2
yum install ruby200 ruby200-devel
Gestion des versions
Une installation de Ruby correspond à un ensemble de programmes (gems et utilitaires liés à Ruby) associés à une version spécifique de Ruby.
Il est donc possible pour les applications d'utiliser une version embarquée de Ruby indépendante de celle du système, deux « installations » totalement indépendantes de Ruby seront ainsi présentes sur le même système.
Plusieurs outils/ astuces permettent de gérer ces multiples versions
Configuration de la version par défaut de ruby.
Il est possible de configurer une vesrion spécifique de Ruby en tant que version par défaut.
Par défaut la version de ruby est celle installée sur la station:
which ruby /usr/bin/ruby.
Pour utiliser la version Ruby du kit de développement Chef par défaut, modifier les variables d'environnement $PATH et GEM pour inclure les chemins d'accès au kit de développement Chef.
- Si Bash est le shell du poste de travail, exécuter:
eval "$ (chef shell-init bash)"
- Si zsh est le shell du poste de travail, exécuter:
eval "$ (chef shell-init zsh)"
La commande which doit retourner la version de de ruby embarquée avec chef
which ruby /opt/chefdk/embedded/bin/ruby
Pour rendre ces modifications permanentes
- Si Bash est le shell du poste de travail, exécuter:
echo 'eval "$ (chef shell-init bash)"' >> ~/.bash_profile
- Si zsh est le shell du poste de travail, exécuter:
echo 'eval "$ (chef shell-init zsh)"' >> ~/.zshrc
Utiliser scl
L'utilitaire scl permet d'exécuter une application qui ne se trouve pas dans la hiérarchie racine du système de fichiers mais qui est présente dans un autre emplacement. Cette application peut toujours utiliser et bénéficier de logiciels installés dans le système de fichiers racine. Afin de laisser une application visible au système, il faut utiliser l'utilitaire scl comme interface.
Exécution d'une commande dans un contexte
scl enable example 'less --version'
exécute la commande less –version dans l'environnement avec la collection 'example' activée
par exemple
scl enable ruby200 ' gem install geminabox-1.1.0.gem'
exécute gem install dans l'environnement ruby2.0.0
Exécution du shell bash dans un contexte
scl enable à foo bar bash
exécute l'instance bash avec les collections de logiciels foo et bar activées
par exemple pour exécuter l'instance bash dans l'environnement ruby2.0.0
scl enable ruby200 bash
la commande ruby -v doit retourner la version de ruby2
ruby 2.0.0p645 (2015-04-13) [x86_64-linux]
la commande which ruby doit retourner le path de la library ruby200
/opt/rh/ruby200/root/usr/bin/ruby
Utiliser un manager
L'utilisation d'un manager pour alterner entre les versions de Ruby, permet d’installer des gems différents pour ces versions de Ruby. Des «installations» totalement indépendantes de Ruby seront ainsi présentes sur le système.
Présentation des Manager
- chruby: permet de basculer entre différentes installation de Ruby. chruby peut gérer les installations de ruby-install ou même les installations faites à partir des sources.
- rbenv: permet de gérer différentes installations de Ruby. Il ne permet pas d’installer Ruby, mais il existe un plugin très utilisé s’appelant ruby-build qui s’occupe de l’installation de Ruby. Tous deux sont disponibles pour les systèmes d’exploitation OS X, Linux, ou autres systèmes basés sur UNIX.
- RVM (“Ruby Version Manager”): permet d’installer et de gérer plusieurs installations de Ruby sur un système. Il peut aussi gérer différent gemsets. Il est disponible pour les systèmes d’exploitation OS X, Linux, ou autres systèmes basés sur UNIX.
- uru: est un outil en ligne de commande léger et multi-plateforme qui aide à utiliser différentes installation de Ruby sur les systèmes OS X, Linux, ou Windows.
Intégration de RVM
Télécharger l'archive tar de rvm sur https://github.com/rvm/rvm/tarball/stable
Transférer l'archive sur le serveur
scp rvm-rvm-1.29.3-0-gad6e58e.tar.gz root@xx.xx.xxx.xx:/usr/local/
Créer le répertoire rvm:
mkdir rvm
Déballer le fichier tar
tar -xzf ../rvm-stable.tar.gz
Installer rvm:
cd ../rvm-rvm-ad6e58e/ ./install --auto-dotfiles Installing RVM to /usr/local/rvm/ 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.
Charger rvm
source /usr/local/rvm//scripts/rvm
Mise en oeuvre d'un entrepôt local de gems
Diverses méthodes permettent d'héberger et partager des gems RUBY.
Utilisation du serveur gem intégré
L'installation de RubyGems, intègre un serveur gem. C'est le moyen le plus rapide pour héberger des gemmes. Il suffit de lancer la commande:
gem server
Cela servira toutes les gems installés dans la machine locale dans. L'URL http://localhost:8808 affiche un index de documentation HTML fournit par la commande gem server.
Lorsqu'on installe de nouvelles gemmes, elles sont automatiquement disponibles via le serveur gem intégré.
Le projet Gem in a Box
Pour un serveur avec plus de fonctionnalités, y compris la possibilité de pousser des gems.
installer geminabox:
gem install geminabox
Créer un répertoire de données pour stocker les gems
mkdir -p /usr/share/nginx/html/repo/pub/rubygems/gems
Créer un fichier config.ru à la racine du dépot (rubygems)
vi /usr/share/nginx/html/repo/pub/rubygems/config.ru require "rubygems" require "geminabox" Geminabox.data = "/usr/share/nginx/html/repo/pub/rubygems" run Geminabox::Server
Lancer le serveur
rackup -d /usr/share/nginx/html/repo/pub/rubygems [2018-05-28 16:21:22] INFO WEBrick 1.3.1 [2018-05-28 16:21:22] INFO ruby 1.8.7 (2013-06-27) [x86_64-linux] [2018-05-28 16:21:27] INFO WEBrick::HTTPServer#start: pid=18565 port=9292