Comment installer et configurer Ruby avec Rbenv, Rails, MariaDB, Nginx, SSL et Passenger sur Ubuntu 17.04

Ruby on Rails est un framework web populaire pour Ruby qui a été développé pour augmenter la productivité d'un programmeur. Cependant, faire fonctionner ensemble diverses gemmes et dépendances peut parfois être difficile. Ce guide vous aidera à configurer un environnement Rails complet prêt pour la production, y compris les gemmes et les dépendances couramment utilisées.

Exigences

  • Instance Vultr avec au moins 512 Mo de RAM (1024 Mo de préférence).
  • Instance Vultr exécutant Ubuntu 17.04.

Pile utilisée dans ce guide

  • Nginx : un serveur web rapide et puissant. (ver 1.10.3)
  • Passenger : un serveur d'application qui aidera Nginx à servir votre application Ruby. (ver 1.5.1.8)
  • Rbenv : un gestionnaire de version Ruby. (ver 1.1.1-2)
  • Ruby : (ver 2.4.1)
  • MariaDB : une branche open source du serveur MySQL (ver 10.2)
  • Certificat SSL de Let's Encrypt

Installation

Ajouter un utilisateur Sudo

Remarque : Il est fortement recommandé de ne pas installer l'un de ces services en tant que root, car vous pourriez vous exposer à une attaque. La configuration d'un utilisateur deployou appest une convention courante:

sudo adduser deploy
sudo adduser deploy sudo
su deploy

Système de mise à jour et de mise à niveau

Assurez-vous que vous exécutez tous les derniers packages sur votre machine virtuelle Ubuntu:

sudo apt-get update && sudo apt-get upgrade -y

Installer le système de construction

Afin de pouvoir compiler Ruby en utilisant rbenv et d'autres gemmes, divers packages doivent être installés. Selon la version de Ruby dont vous aurez besoin, certains packages peuvent ne pas être nécessaires.

Compilation
sudo apt-get install -y curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev
sudo apt-get install -y libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev
sudo apt-get install -y python-software-properties libffi-dev
sudo apt-get install -y build-essential openssl libreadline6 libreadline6-dev libreadline-dev
sudo apt-get install -y automake libtool bison pkg-config bison autoconf libc6-dev ncurses-dev
sudo apt-get install -y libapr1-dev libaprutil1-dev libx11-dev libffi-dev tcl-dev tk-dev
Packages pour le support SSL

Ceux-ci sont nécessaires pour compiler plusieurs gemmes, telles que Passenger:

sudo apt-get install -y zlib1g zlib1g-dev libssl-dev libyaml-dev libcurl4-openssl-dev libruby
Versioning

La communauté Ruby utilise Git comme SCM de choix; mais d'autres, comme Mercurial ou Subversion, peuvent également être installés:

sudo apt-get install -y git git-core
Pilotes de base de données pour MySQL / MariaDB
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
Nokogiri

Requis pour plusieurs gemmes populaires qui nécessitent des bibliothèques XML natives:

sudo apt-get install -y libxml2-dev libxslt-dev
Node.js

Ajoutez des référentiels officiels à partir de Node avec la dernière version car les référentiels Ubuntu par défaut ont tendance à être à la traîne par rapport à quelques versions majeures:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

Forfaits optionnels

Ces packages ne sont pas requis pour que le système fonctionne, mais ils sont utiles si vous devez utiliser certaines gemmes.

Graphiques et images

Ces bibliothèques ne sont pas nécessaires et peuvent être ignorées sauf si vous prévoyez d'utiliser des gemmes de manipulation d'image; comme Rmagick:

sudo apt-get install -y imagemagick libmagickwand-dev libvips-dev

Pilotes de base de données pour SQLite et PostgreSQL

Installez les pilotes pour SQLite ou PostgreSQL si vous devez vous connecter à d'autres bases de données ou préférez une base de données locale simple:

sudo apt-get install -y libsqlite3-dev sqlite3  libpq-dev postgresql postgresql-contrib

Outils

Utilitaires qui ne sont normalement pas préinstallés lors d'une nouvelle installation d'Ubuntu. N'hésitez pas à installer l'éditeur de texte de votre choix:

sudo apt-get install -y iotop htop nano vim

Installer le serveur MariaDB

MariaDB est un serveur SQL relationnel puissant, entièrement compatible avec MySQL. La façon la plus simple d'installer la dernière version de MariaDB est d'utiliser les dépôts officiels:

sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386] http://ftp.utexas.edu/mariadb/repo/10.2/ubuntu zesty main'
sudo apt update
sudo apt install -y mariadb-server

Suivez les invites et configurez un mot de passe root. Après, vérifiez que vous pouvez accéder à votre nouvelle installation:

mysql -V 

Il affichera une ligne similaire à celle-ci:

mysql  Ver 15.1 Distrib 10.2.8-MariaDB, for debian-linux-gnu (x86_64) using readline 5

Connectez-vous au shell MySQL:

mysql -h localhost -u root -p 

Remarque : utilisez \qpour quitter.


Installer Rbenv et Ruby

Rbenv

Installez Rbenv en utilisant git. Il s'agit de la méthode d'installation la plus simple et elle permet des mises à jour faciles plus tard. Installez également ruby-build, il est responsable de la compilation des différentes versions de Ruby:

cd
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

Remarque : lorsque vous devez mettre à jour simplement cd ~/.rbenvet git pull.

Rendez Rbenv et Ruby-build disponibles dans le shell. Pour vous assurer que les lignes d'exportation sont insérées au début du .bashrcfichier, ce qui est important pour les commandes bash non interactives, utilisez ces lignes:

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.temp_bashrc
echo 'eval "$(rbenv init -)"' >> ~/.temp_bashrc
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.temp_bashrc

cat ~/.temp_bashrc ~/.bashrc > ~/.combined_bashrc && mv ~/.combined_bashrc ~/.bashrc && rm ~/.temp_bashrc

exec $SHELL

Vérifiez si Rbenv et Ruby-build sont installés et sont disponibles dans le shell:

rbenv install --list

Si rbenvn'est pas reconnu, déconnectez-vous et reconnectez-vous dans le shell.

Créez un ~/.bash_profilefichier et pointez-le vers la source de votre ~/.bashrcfichier. Si vous devez exécuter des commandes shell non interactives à partir de votre application Rails, telles que les tâches cron configurées par la whenevergemme, elle utilisera la même version de Ruby que votre shell interactif. Cela peut aider à éviter des erreurs étranges. Ajoutez cette ligne au ~/.bash_profilefichier:

if [ -f $HOME/.bashrc ]; then
        source $HOME/.bashrc
fi

Rubis

Installez Ruby 2.4.1:

rbenv install 2.4.1

Remarque : Ce processus peut prendre 5 à 15 minutes selon les ressources de votre machine virtuelle et il n'y a pas de barre de progression.

Rendez Rbenv disponible partout.

rbenv global 2.4.1

Passager et Nginx

Ajoutez la clé PGP et le support HTTPS pour apt:

sudo apt-get install -y dirmngr gnupg
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
sudo apt-get install -y apt-transport-https ca-certificates

Ajoutez le référentiel Passenger:

sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger zesty main > /etc/apt/sources.list.d/passenger.list'
sudo apt-get update

Installez les modules Passenger + Nginx:

sudo apt-get install -y nginx
sudo apt-get install -y libnginx-mod-http-passenger

Visitez votre instance Vultr en utilisant son nom de domaine ou son IP pour les tester à ce stade. S'ils fonctionnent, votre page affichera la page d'accueil Nginx par défaut.

Configurer Rails, l'application et configurer le passager

Installez Bundler et Rails:

gem install bundler rails --no-ri --no-rdoc

La convention Ubuntu / Debian consiste à configurer votre application dans /var/www. Par défaut, il n'est accessible en écriture que par root. Pour que la configuration fonctionne, donnez la propriété à l'utilisateur sudo deploy:

sudo chown deploy:deploy /var/www -R

Générez l'application rails dans /var/www/. Si vous avez déjà une application que vous souhaitez déployer, git clonecliquez ici, puis exécutez bundle:

cd /var/www
rails new example --database=mysql
Configurez Passenger pour pointer vers l'application.
  1. Prep Nginx.

    sudo nano /etc/nginx/nginx.conf
    
  2. Changez d'utilisateur en deploy.

    user deploy;
    
  3. Dans la httpsection de la configuration, il devrait y avoir une ligne qui indique à Nginx de charger les modules, y compris passager. S'il est manquant, vous pouvez l'ajouter juste après le Virtual Host Configstitre, mais avant sites-enabled.

    include /etc/nginx/conf.d/*.conf;
    
  4. Modifiez / créez le passenger.conffichier.

    sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
    
  5. Dites au passager d'utiliser notre configuration Rbenv. Il peut contenir une ligne pointant vers la version Ruby incluse avec Passenger, il suffit de la supprimer ou de la commenter.

    passenger_ruby /home/deploy/.rbenv/shims/ruby;
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    
  6. Configurez l'hôte virtuel pour pointer vers l'application /var/www/example/.

    sudo nano /etc/nginx/sites-enabled/example.conf
    
    
    server {
      listen 80;
      server_name example.com www.example.com;
      root /var/www/example/public;
      passenger_enabled on;
    
      # When you are ready to switch to production mode - change this to `production`
      passenger_app_env development; # <-- !important      
    }
    
  7. Redémarrez Nginx.

    sudo service nginx restart
    

À ce stade, votre application est prête à être utilisée en mode développement. Pour passer en mode production, vous devez revenir à votre configuration Nginx et modifier le rails_envparamètre sur production.

Avant de passer en mode de production, vous aurez toujours besoin de configurer votre base de données de production example_production, database.ymlet clé secrète. Découvrez un outil comme Capistrano ou Mina pour accélérer votre processus de déploiement d'applications. C'est une bonne pratique d'utiliser des variables ENV avec un bijou comme dotenv, et de ne pas valider vos mots de passe, clés secrètes et autres dans votre référentiel git.

Configurer SSL

Il existe plusieurs services offrant des certificats SSL pour votre domaine, beaucoup sont payants et un couple est gratuit. Configurez SSL quel que soit le service que vous utilisez. Let's Encrypt est très facile et gratuit à utiliser. Let's Encrypt est une organisation à but non lucratif soutenue par de nombreux géants de la technologie.

Installation

Exécutez les commandes suivantes et suivez les invites.

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx
sudo certbot --nginx
sudo certbot renew --dry-run

Si vous accédez à votre instance Vultr en utilisant maintenant HTTPS, vous verrez un site Web sécurisé.

Renouvellement

Votre certificat nouvellement délivré expirera et devra être renouvelé périodiquement. La façon la plus simple de procéder consiste à configurer un travail cron.

sudo crontab -e 
30 2 * * 1 /usr/bin/certbot renew 

En tant qu'étape finale, mais facultative, redémarrez votre machine virtuelle et assurez-vous que tous les services redémarrent comme prévu.



Leave a Comment

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

Les attaques de ransomware sont en augmentation, mais l'IA peut-elle aider à lutter contre le dernier virus informatique ? L'IA est-elle la réponse ? Lisez ici, sachez que l'IA est un boone ou un fléau

ReactOS : est-ce lavenir de Windows ?

ReactOS : est-ce lavenir de Windows ?

ReactOS, un système d'exploitation open source et gratuit est ici avec la dernière version. Cela peut-il suffire aux besoins des utilisateurs de Windows modernes et faire tomber Microsoft ? Découvrons-en plus sur cet ancien style, mais une expérience de système d'exploitation plus récente.

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Whatsapp a finalement lancé l'application de bureau pour les utilisateurs Mac et Windows. Vous pouvez désormais accéder facilement à Whatsapp depuis Windows ou Mac. Disponible pour Windows 8+ et Mac OS 10.9+

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Lisez ceci pour savoir comment l'intelligence artificielle devient populaire parmi les petites entreprises et comment elle augmente les probabilités de les faire grandir et de donner à leurs concurrents un avantage.

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

Récemment, Apple a publié macOS Catalina 10.15.4, une mise à jour supplémentaire pour résoudre les problèmes, mais il semble que la mise à jour cause davantage de problèmes, ce qui entraîne le bridage des machines mac. Lisez cet article pour en savoir plus

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux d'extraction de données de Big Data

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Notre ordinateur stocke toutes les données d'une manière organisée connue sous le nom de système de fichiers de journalisation. C'est une méthode efficace qui permet à l'ordinateur de rechercher et d'afficher des fichiers dès que vous appuyez sur la recherche.https://wethegeek.com/?p=94116&preview=true

Singularité technologique : un futur lointain de la civilisation humaine ?

Singularité technologique : un futur lointain de la civilisation humaine ?

Alors que la science évolue à un rythme rapide, prenant le pas sur une grande partie de nos efforts, les risques de nous soumettre à une Singularité inexplicable augmentent également. Lisez, ce que la singularité pourrait signifier pour nous.

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques d'analyse des mégadonnées : partie 1

Limpact de lintelligence artificielle dans les soins de santé 2021

Limpact de lintelligence artificielle dans les soins de santé 2021

L'IA dans le domaine de la santé a fait de grands progrès au cours des dernières décennies. Ainsi, l'avenir de l'IA dans les soins de santé continue de croître de jour en jour.