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
url -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.