Anthony Cecchetto

Développeur, Graphiste, Webdesigner, Intégrateur, Freelance

Vagrant mettre en place un serveur de développement pour Ruby on Rails

 Admin Astuces pour développeurs 29.02.2016 à 09:18
Large how to setup vagrant for rails

Nous allons voir ensemble comment mettre en place simplement et surtout rapidement un serveur de développement avec Vagrant sous Ubuntu. Nous allons donc configurer ce serveur pour qu'il utilise MySQL, Nginx, RVM et pour finir Passenger.

 

1. Vagrantfile

Commençons tout d'abord par créer le Vagrantfile. Crééez votre dossier ainsi que le fichier nommé "Vagrantfile" (sans extension) puis ajoutez le code suivant :

  # -*- mode: ruby -*-
  # vi: set ft=ruby :

  Vagrant.configure("2") do |config|
    config.vm.box = "precise32"
    config.vm.box_url = "http://files.vagrantup.com/precise32.box"
    config.vm.network  :forwarded_port, guest: 3000, host: 3000

    config.vm.hostname = "local.dev"
    config.vm.network :private_network, ip: "192.168.33.10"
  end

Vous pouvez sans autre changer l'adresse ip et l'hostname avec ceux de votre choix.

(n'oubliez pas de les ajouter dans votre fichier host sous Windows ou Mac).

Ensuite, vous pouvez déjà lancer votre machine avec un petit vagrant up !

Puis, une fois celle-ci démarrée, on va pouvoir passer à la configuration.

 

2. Configuration de la machine virtuelle

Connectez-vous en ssh sur la machine virtuelle avec la commande vagrant ssh

Ajoutez simplement les commandes dans le même ordre, ci-après dans votre console ssh :

(j'ai ajouté comme packages, en plus des obligatoires git et imagemagick que je trouve important d'avoir lors du développement de site).

  sudo apt-get update -y && sudo apt-get upgrade -y
  sudo apt-get install curl libcurl4-openssl-dev mysql-server libmysqlclient-dev libmysqlclient18 ruby-dev nodejs git imagemagick -y
  gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
  rl -sSL https://get.rvm.io | bash -s stable --ruby=2.2.2

  source /home/vagrant/.rvm/scripts/rvm

  #On install les gems nécessaire au bon fonctionnement
  gem install passenger execjs mysql2 rails --no-rdoc --no-ri

  #On install et configure nginx avec passenger
  rvmsudo passenger-install-nginx-module --auto --auto-download

  #On va créer le service pour gérer nginx
  wget -O init-deb.sh https://www.linode.com/docs/assets/660-init-deb.sh
  sudo mv init-deb.sh /etc/init.d/nginx
  sudo chmod +x /etc/init.d/nginx
  sudo /usr/sbin/update-rc.d -f nginx defaults

  #On démarre nginx
  sudo service nginx start

  #On va supprimer le répertoire par défaut
  cd /opt/nginx/
  sudo rm -Rf html

 

Maintenant que c'est fait on va modifier le pointage du dossier concernant le site internet. Pour ce faire ouvrez le fichier de configuration Nginx :

  sudo nano /opt/nginx/conf/nginx.conf

et recherchez la ligne ou il y a quelque chose du genre :

  server {
     listen       80;
     server_name  localhost;

     location / {
         root   html;
         index  index.html index.htm;
     }
  }

  

Ici ce qui nous intéresse c'est la location root on va devoir la rediriger sur notre dossier syncronisé pour ce faire modifier la ligne "root    html;" en "root /vagrant/local.dev;" comme ceci :

(il faut savoir que tous les dossiers ce trouvant dans le répértoire vagrant de la machine virtuelle seront directement syncronisé sur votre ordinateur).

  server {
     listen       80;
     server_name  localhost, local.dev;
     root   /vagrant/local.dev/public;
     passenger_enabled on;
     rails_env development;
  }

Enfin, ajoutez les droits www-data au dossier local.dev comme ceci :

  sudo chown www-data:www-data /vagrant/local.dev

Puis on redémarre Nginx :

  sudo service nginx restart 

Et c'est tout ! vous avez désormais un serveur prêt à être utilisé pour votre développement !

 

3. Projet Ruby on Rails

Du coup on va vite fait, bien fait, ajouter un nouveau site sous ruby on rails :

  cd /vagrant
  rails new local.dev -d mysql

(on se rend dans le dossier vagrant pour la syncronisation avec notre ordinateur et on lance la création de notre projet "local.dev" utilisant une base de donnée MySQL).

 

Création des tables SQL

On va maintenant se connecter à notre serveur SQL pour créer les tables :

  mysql -uroot -p

  CREATE DATABASE ma_base;

(ne pas oublier de configurer le fichier de Rails config/database.sql avec les tables + identifiants).

Et enfin, on redémarre nginx !

  sudo service nginx restart 

 

Voilà ! désormais votre site est accessible depuis l'url "local.dev" et vous devriez normalement voir la page de bienvenue sur le framework Ruby on Rails. N'hésitez pas à poster un commentaire si vous rencontrez des difficultés lors de la réalisation de ce tutoriel.