05/01/2019
Ruby on Rails sur FreeBSD 11
Comment installer Rails sur un serveur FreeBSD ?
Ceux qui voudraient s'émanciper du noyau Linux et goûter à d'autres variétés d'Unix, tout en restant sur PC, ont la possibilité d'installer FreeBSD sur une machine virtuelle (VirtualBox) pour s'essayer à cet Unix très performant, sécurisé, et, finalement, pas si compliqué à utiliser.
La première chose à faire est de télécharger l'ISO depuis le site officiel, puis de créer une nouvelle machine virtuelle et de booter sur l'ISO.
Une fois FreeBSD démarré, choisissez de l'installer sur le disque de votre machine virtuelle. Ne vous posez pas trop de questions lorsque qu'il s'agit de choisir un bootloader, un format de fichier, etc; les choix proposés par défaut sont parfaits pour une utilisation classique.
Une fois connecté en tant qu'utilisateur root créé, on peut commencer l'installation des paquets nécessaires au fonctionnement de Ruby on Rails, à savoir Ruby, Sqlite3, NodeJS, etc...
RUBY ON RAILS
$ pkg install rubygem-puma
$ pkg install rubygem-sqlite
$ pkg install node
$ gem install bundler
$ gem install rails
$ rails new testapp
$ rake db:migrate
$ rails c
$ rails s -b IP ou 0.0.0.0
Vérifier que Rails fonctionne en allant sur http://ip:3000
Celebrate !
APACHE PASSENGER
$ pkg install rubygem-passenger-apache-5.3.5
Une fois passenger installé, il faut modifier la configuration de Apache pour activer Passenger
$ apachectl -V
HTTPD_ROOT = "/usr/local"
SERVER_CONFIG_FILE = "etc/apache24/httpd.conf"
$ ee /usr/local/etc/apache24/httpd.conf"
LoadModule passenger_module /usr/local/lib/ruby/gems/2.4/gems/passenger-5.3.5/buildout/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/2.4/gems/passenger-5.3.5
PassengerRuby /usr/local/bin/ruby24
- uncomment la ligne qui active les VistualHosts
VirtualHost
Ajoutez "apache24_enable="YES" au fichier /etc/rc.conf (le créer s'il n'existe pas) et redémarrez ~~~~ $ apachectl restart ~~~~
Virtual hosts :
Chaque application Rails doit être connue d'Apache. Cette déclaration se fait dans le fichier httpd-vhosts
$ ee /usr/local/etc/apache24/extra/httpd-vhosts.conf
Une configuration classique :
Si le serveur rails ne veut pas se lancer en objectant une erreur "getaddrinfo", vous devrez associer votre addresse IP locale à un nom d'hôte, comme suit :
$ ee /etc/hosts
127.0.0.1 freebsd freebsd.philnoug.com
10.0.2.14 freebsd freebsd.philnoug.com
Il faut aussi donner un nom à la machine en utilisant la commande hostname
$ hostname -d freebsd.philnoug.com
SSL
Il est temps maintenant de mettre en place l'accès aux applications via https:/ Le plus simple est d'utiliser les services de "Let's Encrypt", à savoir le certbot qui va nous simplifier la tâche.
$ pkg install py27-certbot
Avant de pouvoir créer les certificats il faut demander à Apache de prendre en charge la gestion de SSL au moyen d'un module "mod_ssl qu'il suffit d'activer dans le fichier de configuration Apache (dé-commentez la ligne LoadModule mod_ssl ...)
$ ee /usr/local/etc/apache24/httpd.conf
Puis activez TTLS en créant ce fichier :
$ ee /usr/local/etc/apache24/modules.d/020_mod_ssl.conf
Listen 443
SSLProtocol ALL -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog builtin
SSLSessionCacheTimeout 300
Avant de se lancer dans la création du certificat, vérifiez les points suivants :
Le virtual host non HTTPS pour lequel nous allons créer le certificat doit exister dans /usr/local/etc/apache24/extra/httpd-vhosts.conf
Le host(ServerName) ne doit pointer que vers le serveur sur lequel on lance la création du certificat (supprimer les autres pointages éventuels)
Apache doit être stoppé :
$ apachectl stop
Pour créer le certificat, lancez la commande suivante :
$ certbot certonly --standalone -d sousdomaine.domaine.com
En retour, vous devriez obtenir le message suivant
- Congratulations! Your certificate and chain have been saved at:
/usr/local/etc/letsencrypt/live/sousdomaine.domaine.com/fullchain.pem
Your key file has been saved at:
/usr/local/etc/letsencrypt/live/sousdomaine.domaine.com/privkey.pem
Your cert will expire on 2019-03-05. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew all of your certificates, run
"certbot renew"
Modifiez maintenant le virtual host pour qu'il écoute le port 443
$ ee /usr/local/etc/apache24/extra/httpd-vhosts.conf
La configuration étant terminée, on peut relancer Apache pour vérifier que tout se passe bien :
$ apachectl restart
Pour voir si https est en écoute sur le port 443
$ sockstat -4 | grep http
Si tous les voyants sont au vert, on pourra maintenant accéder aux applications Rails via http://sousdomaine.domaine.com et surtout via https://sousdomaine.domaine.com
Vous pouvez utiliser la commande curl pour récupérer le contenu (code source) de la home page de votre application
$ curl https://sousdomaine.domaine.com
ou bien, si vous ne souhaitez pas voir le code source mais votre homepage en mode texte, utilisez lynx
$ lynx https://sousdomaine.domaine.com
Notez qu'il existe pléthore de paquets Linux installables sur FreeBSD. Pour savoir si le paquet que vous cherchez est disponible, allez sur la page FreeBSD Ports Search