Comment installer Ruby On Rails sur Ubuntu 20.04 avec MySQL, Nginx, Passenger, SSL. Ruby est un langage de programmation dynamique et open source qui privilégie la simplicité et la productivité. Il présente une syntaxe simple, naturelle à lire et à écrire. Ruby on Rails est un framework Web largement utilisé pour Ruby qui a été créé pour aider les développeurs de logiciels à être plus productifs.
Nginx est un serveur Web qui peut fournir des transactions HTTP et servir des fichiers statiques mais ne peut pas exécuter directement les applications Ruby. Nous utilisons donc Phusion Passenger, un serveur d'applications Web gratuit et open source. Il est conçu pour gérer les requêtes HTTP, surveiller et gérer les processus et les ressources, ainsi que permettre l'administration, la surveillance et le diagnostic des problèmes.
Dans ce guide, vous allez configurer Passenger pour aider Nginx à servir votre application Web Ruby on Rails et installer Let'sEncrypt SSL pour sécuriser votre application.
Prérequis
- Un serveur avec Ubuntu 20.04
- Accès root à votre serveur ou utilisateur avec les privilèges sudo.
- Connaissance intermédiaire de l'utilisation des commandes de terminal Linux
- Nom de domaine qui pointe vers l'adresse IP externe de votre serveur.
Configuration initiale du serveur
Mettez à jour vos packages de serveur avec les derniers.
sudo apt update sudo apt dist-upgrade -y
Installer Ruby on Rails avec Rbenv
Pour nous assurer que la configuration se passe bien, nous allons commencer par ajouter les référentiels Node.js et Yarn.
curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
Installer les dépendances
Vous pouvez maintenant installer toutes les dépendances.
sudo apt-get update sudo apt-get install git-core zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev nodejs yarn
Installer Rbenv et Rbenv Build
Rbenv est un gestionnaire de version Ruby utilisé pour installer Ruby.
Ici, nous allons installer Rbenv et Rbenv-build.
Installer Rbenv
cd git clone https://github.com/rbenv/rbenv.git ~/.rbenv echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc exec $SHELL
Installer Rbenv Build
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc exec $SHELL
Configurer la version de Ruby
Vous pouvez maintenant configurer la version par défaut et globale de Ruby.
rbenv install 3.1.1 rbenv global 3.1.1
Confirmez la version de Ruby à l'aide de la commande suivante.
ruby -v
Vous devez maintenant installer le bundler.
gem install bundler
Installer les rails
gem install rails -v 7.0.2.3
Rendre la commande rails exécutable.
rbenv rehash
Confirmez la version de Rails.
rails -v
Installer MySQL
Dans ce tutoriel, nous utiliserons MySQL pour la base de données.
sudo apt-get install mysql-server mysql-client libmysqlclient-dev
sudo mysql_secure_installation
Vous pouvez configurer un nouvel utilisateur et un nouveau mot de passe dans MySQL si vous en avez besoin.
Configurer Rails pour MySQL
Installez maintenant l'adaptateur MySQL pour Rails
gem install mysql2
Installer Passenger et Nginx
Nous allons maintenant installer Nginx et configurer Passenger.
Installez Nginx.
sudo apt -y install nginx
Installez le passager.
sudo apt install -y dirmngr gnupg apt-transport-https ca-certificates sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
Ajouter un référentiel APY passager.
sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger focal main > /etc/apt/sources.list.d/passenger.list'
Mettez à jour et installez Passenger.
sudo apt update sudo apt install -y libnginx-mod-http-passenger
Maintenant, une nouvelle configuration de passager sera ajoutée dans le répertoire conf.d de l'installation de Nginx.
Redémarrez Nginx pour que l'installation du module passager prenne effet.
sudo service nginx start
Configurer le passager avec Rbenv
Modifiez le fichier de configuration du passager.
sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
Commentez les lignes commençant par passenger_root
et passenger_ruby
.
Ajoutez les lignes suivantes dans le fichier.
Remplacer nom d'utilisateur dans le chemin de l'option passager_ruby avec le nom d'utilisateur via lequel vous avez installé Rbenv.
passenger_ruby /home/example_user/.rbenv/shims/ruby; passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
Enregistrez et quittez le fichier.
Redémarrez Nginx.
sudo service nginx restart
Créer un nouveau projet Rails
Créez un nouveau répertoire pour votre projet Rails ou accédez simplement à n'importe quel répertoire. Ici, nous naviguons vers le répertoire Web Nginx par défaut.
cd /var/www
Créer un projet Rails.
rails new project-name -d mysql cd project-name
Modifiez la configuration de la base de données pour vous connecter à votre base de données.
sudo nano config/database.yml
Remplacez le nom d'utilisateur avec votre username
, mot de passe avec votre password
Assurez-vous que votre database.yml
ressemble à ceci
default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: username password: password host: locahost database: database_name development: <<: *default test: <<: *default production: <<: *default
Initialiser la base de données Rails.
rake db:create
Redémarrez Rails.
rails restart
Configurer Nginx avec Ruby on Rails
Supprimez les configurations Nginx par défaut.
sudo rm -rf /etc/nginx/sites-available/default sudo rm -rf /etc/nginx/sites-enabled/default
Créez une nouvelle configuration pour votre application Ruby
sudo nano /etc/nginx/sites-available/domainname.conf
Collez ce nouveau paramètre de configuration et appuyez sur Ctrl+X
suivi de Y
pour enregistrer le fichier
server { listen 80 default_server; server_name domainname.com; passenger_enabled on; passenger_app_env production; root /var/www/html/project-name/public; }
Activez votre nouvelle configuration
sudo ln -s /etc/nginx/sites-available/domainname.conf /etc/nginx/sites-enabled/domainname.conf
Validez la configuration de Nginx et redémarrez nginx
sudo nginx -t sudo service nginx restart
Installer Let'sEncrypt SSL
Nous pouvons utiliser Certbot pour installer un certificat SSL Let's Encrypt gratuit pour votre domaine.
sudo apt install python3-certbot-nginx
Exécutez la commande suivante pour installer le certificat et configurer automatiquement la redirection vers HTTPS.
sudo certbot --nginx --redirect --agree-tos --no-eff-email -m [email protected] -d domain.com -d www.domain.com
Vous devriez maintenant recevoir le certificat SSL et il sera configuré automatiquement.
Configurer le renouvellement automatique.
sudo certbot renew --dry-run
Ruby on Rails est maintenant installé et configuré avec Passenger et Nginx et connecté à la base de données MySQL.
Visitez votre nom de domaine sur votre navigateur, vous pouvez afficher la page d'accueil de Ruby on Rails.

Conclusion
Vous avez maintenant appris comment installer Ruby On Rails sur Ubuntu 20.04 avec MySQL et configurer Nginx avec Passenger et configurer Let'sEncrypt SSL.
Merci pour votre temps. Si vous rencontrez un problème ou des commentaires, veuillez laisser un commentaire ci-dessous.