Vendredi 23 novembre 2018

Installer Ruby sur Debian en utilisant RVM

How To Install Ruby on Ubuntu, Debian and LinuxMint using RVM

Ruby est un langage de programmation populaire parmi un grand nombre de développeurs. Les rails sont le cadre pour exécuter le langage ruby. Ruby language a été créé par Yukihiro “Matz” Matsumoto et publié pour la première fois en 1995. Cet article vous aidera à  installer ruby on rails sur les systèmes d’exploitation Ubuntu, Debian et Linuxmint en utilisant RVM. RVM est le gestionnaire de version Ruby pour l’installation et la gestion du langage Ruby sur les systèmes.

Step 1 – Installer RVM

Tout d’abord, installez la dernière version stable de RVM sur votre système en utilisant la commande suivante. Cette commande télécharge automatiquement tous les fichiers requis et s’installe sur votre système. Installer CURL

apt-get install curl

Install RVM

Avant d’installer RVM, nous devons d’abord importer la clé publique dans notre système puis utiliser curl pour installer rvm.

curl -sSL https://rvm.io/mpapis.asc | sudo gpg2 --import -
curl -sSL https://get.rvm.io | sudo bash -s stable

Après l’installation de RVM, nous devons d’abord configurer l’environnement rvm en utilisant la commande ci-dessous. pour que le shell courant prenne de nouveaux paramètres d’environnement.

source /etc/profile.d/rvm.sh

Ajout utilisateur au groupe rvm

sudo usermod -a -G rvm $USER

Installez toutes les dépendances pour installer Ruby automatiquement sur le système. Exécuter la commande ci-dessous sur le terminal.

rvm requirements

Step 2 – Liste des versions Ruby disponibles

Obtenir une liste des versions disponibles du langage Ruby. Vous pouvez installer n’importe quelle version de votre choix ou des exigences apparaissant dans la liste.

rvm list known | grep "\[ruby-"
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.7]
[ruby-]2.3[.4]
[ruby-]2.4[.1]

Step 3 – Installer une version Ruby

RVM est utile pour l’installation de plusieurs versions Ruby sur le même système. Utilisez la commande suivante pour installer Ruby sur votre système. Comme illustré ci-dessous, l’exemple ci-dessous installera Ruby 2.4.1 sur votre système.

rvm install 2.4.1
Searching for binary rubies, this might take some time.
No binary rubies available for: debian/8/x86_64/ruby-2.4.1.
Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.
Checking requirements for debian.
Requirements installation successful.
Installing Ruby from source to: /usr/local/rvm/rubies/ruby-2.4.1, this may take a while depending on your cpu(s)...
ruby-2.4.1 - #downloading ruby-2.4.1, this may take a while depending on your connection...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 11.9M  100 11.9M    0     0  11.4M      0  0:00:01  0:00:01 --:--:-- 11.4M
ruby-2.4.1 - #extracting ruby-2.4.1 to /usr/local/rvm/src/ruby-2.4.1....
ruby-2.4.1 - #applying patch /usr/local/rvm/patches/ruby/2.4.1/random_c_using_NR_prefix.patch.
ruby-2.4.1 - #configuring..................................................................
ruby-2.4.1 - #post-configuration..
ruby-2.4.1 - #compiling................................................................................
ruby-2.4.1 - #installing...........
ruby-2.4.1 - #making binaries executable..
ruby-2.4.1 - #downloading rubygems-2.6.14
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  751k  100  751k    0     0  5683k      0 --:--:-- --:--:-- --:--:-- 5692k
No checksum for downloaded archive, recording checksum in user configuration.
ruby-2.4.1 - #extracting rubygems-2.6.14....
ruby-2.4.1 - #removing old rubygems.........
ruby-2.4.1 - #installing rubygems-2.6.14...........................
ruby-2.4.1 - #gemset created /usr/local/rvm/gems/ruby-2.4.1@global
ruby-2.4.1 - #importing gemset /usr/local/rvm/gemsets/global.gems...............................................
ruby-2.4.1 - #generating global wrappers........
ruby-2.4.1 - #gemset created /usr/local/rvm/gems/ruby-2.4.1
ruby-2.4.1 - #importing gemsetfile /usr/local/rvm/gemsets/default.gems evaluated to empty gem list
ruby-2.4.1 - #generating default wrappers........
ruby-2.4.1 - #adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
Install of ruby-2.4.1 - #complete
Ruby was built without documentation, to build it run: rvm docs generate-ri

Step 4 – Configuration par défaut la version Ruby

Utilisez la commande rvm pour configurer la version par défaut de ruby à utiliser par les applications. Vous pouvez installer plusieurs versions comme défini dans l’étape ci-dessus. Sélectionnez maintenant la version que vous voulez utiliser.

rvm use 2.4.1 --default
  Using /usr/local/rvm/gems/ruby-2.4.1

Step 5 – Vérifier la version Ruby

A l’aide de la commande suivante, vous pouvez vérifier que la version actuelle de Ruby est utilisée.

ruby --version
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

rvmsudo

Sudo est un programme pour les systèmes d’exploitation de type Unix qui permet aux utilisateurs d’exécuter des programmes avec les privilèges de sécurité d’un autre utilisateur (normalement le super-utilisateur, ou root). Son nom est une concaténation de la commande su (qui accorde à l’utilisateur un shell d’un autre utilisateur, normalement le super-utilisateur) et “do” faire ou agir.

Par défaut, lorsque vous utilisez sudo, votre environnement shell actuel n’est pas transmis à la session créée par celui-ci, mais RVM permet déjà un accès plus facile aux appels sudo avec rvmsudo. Cependant, les valeurs par défaut de sudo sont très strictes et vous risquez d’obtenir des messages d’invite de mot de passe sur les commandes définies pour utiliser la directive sudo NOPASSWD.

Modifier les valeurs par défaut strictes de sudo.Il y a 3 choses nécessaires pour atténuer cette situation si vous la rencontrez:

  • L’utilisateur qui invoque sudo doit avoir exporter export rvmsudo_secure_path=0 sur son environnement shell (pensez. bashrc,. bash_profile ou. zshrc)
  • Commenter Defaults secure_path=... sur /etc/sudoers
  • Ajouter Defaults env_keep +="rvm_bin_path GEM_HOME IRBRC MY_RUBY_HOME rvm_path rvm_prefix rvm_version GEM_PATH rvmsudo_secure_path RUBY_VERSION rvm_ruby_string rvm_delete_flag" à /etc/sudoers

dans les rares cas où il est nécessaire d’ajouter plus de variables - elles doivent être rapportées par la première exécution de rvmsudo.

Après ces changements, vous devriez pouvoir utiliser rvmsudo en conservant les mêmes directives que les appels sudo “normaux”.

Jekyll - wikistatic

Installation jekyll

en mode commande NON ROOT

    gem install jekyll
...
Done installing documentation for public_suffix, addressable, colorator, http_parser.rb, eventmachine, em-websocket, concurrent-ruby, i18n, rb-fsevent, ffi, rb-inotify, sass-listen, sass, jekyll-sass-converter, ruby_dep, listen, jekyll-watch, kramdown, liquid, mercenary, forwardable-extended, pathutil, rouge, safe_yaml, jekyll after 57 seconds
25 gems installed

Version installée

    jekyll -v
        jekyll 3.7.2

Installation wikistatic

Ce wikistatic basé sur Jekyll utilise le thème libre dbyll

Création dossier

sudo mkdir -p /srv     # création dossier

Les droits sur le dossier

sudo chown   $USER. -R /srv/

Clonage wikistatic par git

sudo apt install git 
cd /srv
git clone https://gitlab.cinay.pw/spm/wikistatic.git
cd wikistatic

Test wikistatic

On lance manuellement le serveur pour un test,choisir l’une des 2 méthodes

méthode A

Exécution , lancement serveur pour test

  bundle exec jekyll serve
[...]
 Auto-regeneration: enabled for '/srv/wikistatic'
Configuration file: /srv/wikistatic/_config.yml
    Server address: http://127.0.0.1:4000/
  Server running... press ctrl-c to stop.

méthode B

Construction

jekyll build
WARN: Unresolved specs during Gem::Specification.reset:
      rouge (~> 1.7)
      jekyll-watch (~> 1.1)
WARN: Clearing out unresolved specs.
Please report a bug if this causes problems.
Configuration file: /srv/jekyll/dbyll/_config.yml
            Source: /srv/jekyll/dbyll
       Destination: /srv/jekyll/dbyll/_site
 Incremental build: disabled. Enable with --incremental
      Generating... 
                    done in 2.428 seconds.
 Auto-regeneration: disabled. Use --watch to enable.

Auto génération activée (–watch) + serveur

jekyll serve --watch
Configuration file: /srv/wikistatic/_config.yml
            Source: /srv/wikistatic
       Destination: /srv/wikistatic/_site
 Incremental build: disabled. Enable with --incremental
      Generating... 
                    done in 39.011 seconds.
 Auto-regeneration: enabled for '/srv/wikistatic'

Le serveur est en local sur le port 4000 (http://localhost:4000) , on l’arrête par Ctrl c

Auto génération activée (–watch) SANS serveur

jekyll build --watch
Configuration file: /srv/wikistatic/_config.yml
            Source: /srv/wikistatic
       Destination: /srv/wikistatic/_site
 Incremental build: disabled. Enable with --incremental
      Generating... 
                    done in 18.916 seconds.
 Auto-regeneration: enabled for '/srv/wikistatic'

Serveur de production wikistatic

Jekyll/Nginx Proxy

Sur un serveur debian jessie avec nginx installé, accès par proxy au serveur jekyll
On utilise un service systemd pour lancer automatiquement le serveur jekyll

Exemple avec un site http://site.statique.tld
Utilisation proxy sur nginx pour accèder au serveur local Jekyll

Créer une configuration nginx sous /etc/nginx/conf.d

server {
    listen 80;

    server_name site.statique.tld;

	location / {
	    proxy_pass http://127.0.0.1:4000;
	}
    access_log /var/log/nginx/static-access.log;
    error_log /var/log/nginx/static-error.log;
}

Relancer le service nginx

sudo systemctl restart nginx

Jekyll/Nginx Sans Proxy

Exemple sur un serveur web yunohost fonctionnel, installer une application personnalisée Multi custom webapp https://github.com/YunoHost-Apps/multi_webapp_ynh domaine static.cinay.pw
Redéfinir le “root” sur /srv/wikistatic/_site/

sudo rm -r /var/www/webapp_cinay/static.cinay.pw
sudo ln -s /srv/wikistatic/_site /var/www/webapp_cinay/static.cinay.pw 

Le fichier de configuration nginx sous /etc/nginx/conf.d/static.cinay.pw.d/webapp_static.cinay.pw.conf

location / {
	alias /var/www/webapp_cinay/static.cinay.pw/ ;
	if ($scheme = http) {
		rewrite ^ https://$server_name$request_uri? permanent;
	}
	index index.html index.php ;
	try_files $uri $uri/ index.php;
	location ~ [^/]\.php(/|$) {
		fastcgi_split_path_info ^(.+?\.php)(/.*)$;
		fastcgi_pass unix:/var/run/php5-fpm-webapp_static.cinay.pw.sock;
		fastcgi_index index.php;
		include fastcgi_params;
		fastcgi_param REMOTE_USER $remote_user;
		fastcgi_param PATH_INFO $fastcgi_path_info;
		fastcgi_param SCRIPT_FILENAME $request_filename;
	}

	# Include SSOWAT user panel.
	include conf.d/yunohost_panel.conf.inc;
}

Relancer le service nginx

sudo systemctl restart nginx

Jekyll/Systemd

On localise la version jekyll

which jekyll
    /usr/local/rvm/gems/ruby-2.4.1/bin/jekyll

Pour lancer le serveur Jekyll au démarrage , créer un bash sous /srv

nano /srv/wikistatic/start_jekyll.sh
#!/bin/sh
export PATH=$PATH:/usr/local/rvm/gems/ruby-2.4.1/bin
#lancement jekyll
/usr/local/rvm/gems/ruby-2.4.1/bin/jekyll build --watch --source "/srv/wikistatic" # sans proxy nginx

Droits sur le bash

sudo chown $USER. /srv/wikistatic/start_jekyll.sh
chmod +x /srv/wikistatic/start_jekyll.sh

Pour lancer le serveur Jekyll au démarrage, utilisation d’un service systemd
ATTENTION! , remplacer utilisateur par votre nom d’utilisateur (echo $USER)

sudo nano /etc/systemd/system/jekyll.service

Contenu du fichier

[Unit]
Description=jekyll Service
After=network.target

[Service]
Type=simple
User=utilisateur
ExecStart=/bin/sh /srv/wikistatic/start_jekyll.sh
Restart=on-abort


[Install]
WantedBy=multi-user.target

Lancer le service jekyll :

sudo systemctl daemon-reload
sudo systemctl start jekyll
#Vérifier:
sudo systemctl status jekyll
● jekyll.service - jekyll Service
   Loaded: loaded (/etc/systemd/system/jekyll.service; disabled)
   Active: active (running) since dim. 2017-01-08 21:02:34 CET; 13s ago

[...]
janv. 08 21:02:35 jessie sh[30873]: Auto-regeneration: enabled for '/srv/wikistatic'
janv. 08 21:02:35 jessie sh[30873]: Configuration file: /srv/wikistatic/_config.yml
janv. 08 21:02:35 jessie sh[30873]: Server address: http://127.0.0.1:4000/
janv. 08 21:02:35 jessie sh[30873]: Server running... press ctrl-c to stop.

Vérifier l’accès au site static http://site.statique.tld

Valider le lancement du service jekyll au démarrage

sudo systemctl enable jekyll