programmation

Nous allons ici voir comment créer un fichier contenant les informations sur la version du site sur laquelle vous travaillez ou que vous consultez . Quel est l'intérêt ? Ils y en a plusieurs : pouvoir identifier simplement sur quel environnement vous êtes (prod, préprod, staging, dev), connaitre la version de la release déployée, la date de déploiement etc.

Lire la suite de

Contexte

Si vous faites du développement de site sous WordPress, vous aurez certainement besoin de migrer votre base de données d'un environnement à un autre (dev -> recette -> prod, nouveau domaine etc.). Attention, certaines URL sont enregistrées "en dur" dans la base de données, ainsi l'ancien nom de domaine apparaitra dans les liens. Il est donc nécessaire de remplacer les anciennes URL par les nouvelles. Plusieurs solutions sont envisageables, nous allons les détailler ci-dessous.

Lire la suite de

Voici les différentes étapes pour sécuriser l'accès ssh à un serveur.

Modifier le mot de passe de l'utilisateur root

Connectez vous en root et saisissez la commande suivante :

passwd

Saisissez ensuite votre nouveau mot de passe.

Ajouter un nouvel utilisateur

L'idée est de ne plus utiliser le compte root pour les connexions à distance, vous devez donc créer un nouvel utilisateur que vous utiliserez pour les connexions ssh. Tapez les commandes suivantes  :

groupadd sshusers #ajout d'un nouveau groupe d'utilisateurs
useradd -m nouveauUser #création du nouveau user
passwd nouveauUser #création du mot de passe du compte
usermod -a -G sshusers nouveauUser #ajout du nouvel utilisateur au groupe

Ajustement de la configurationde ssh

Editez le fichier de configuration :

vim /etc/ssh/sshd_config

Modifier le port par défaut :

Port 2222 #par exemple

Empêchez le compte root de se connecter en ssh :

PermitRootLogin no

Autorisez uniquement les utilisateurs de groupe sshusers à se connecter au service :

AllowGroups sshusers

Redémarrez le service SSH :

/etc/init.d/ssh restart

A vous de jouer !

Voici comment supprimer les fichiers commençant "._" générés sous MAC :

	$ find . -name "._*" -exec rm -f {} \;

Et voici le détail de la commande :

  • find . : recherche dans le dossier courant
  • -name "._*" : recherche des fichiers dont le nom commence par "._"
  • -exec : exécution d'une commande sur les résultats renvoyés par find
  • rm -f {} : suppression des fichiers
  • \; : fin de la commande exec

Il est possible de désactiver une bonne fois pour toute la création de ces fichiers via la commande suivante :

	export COPYFILE_DISABLE=true 

Introduction

Ne vous est-il jamais arrivé de reprendre un projet et de ne plus connaitre le mot de passe admin ?

Plusieurs solutions s'offrent alors à vous, l'une d'entre-elles consiste à modifier le mot de passe directement en base. Oui mais quel est l'encodage du mot de passe ? MD5 ? Et bien non, ce n'est pas si simple !  Heureusement, Drupal fournit un script qui permet de crypter un mot de passe.

password-hash.sh

Ce script se trouve ici : racineDuProjet/scripts/password-hash.sh.
Pour crypter un mot de passe, tapez la commande suivante dans votre console :

racineDuProjet/scripts/password-hash.sh motDePasse

Il ne reste ensuite plus qu'à mettre à jour le mot de passe en base de données avec une requête du type :

UPDATE user SET pass='$S$CpiOFftf4apILxJCsVJGb09ijB11HLGjBDp2XbfofmpiqOa&b2c' where uid='1'

Autres méthodes

  • utiliser Drush avec la commande user-password
  • utiliser directement la méthode user_hash_password($password) dans un script PHP (en ayant charger le bootstrap) :
define('DRUPAL_ROOT', getcwd());
include_once DRUPAL_ROOT . '/includes/password.inc';
include_once DRUPAL_ROOT . '/includes/bootstrap.inc';
echo user_hash_password('mod de passe');

Présentation

Vagrant est un outil permettant de générer des machines virtuelles. Il permet notamment de facilement créer une VM que vous pouvez utiliser dans votre environnement de développement.  Ainsi, si vous développez sur Windows, vous pouvez tester votre application sous Linux par exemple, voir même sur un environnement ISO aux environements de recette, préproduction et production.

logo Vagrant

Vagrant utilise VirtualBox pour la virtualisation, mais il est également possible d'utiliser d'autres providers (http://docs.vagrantup.com/v2/getting-started/providers.html).

Prérequis

Utilisation

Il existe différentes boxes packagées pour vagrant, vous en trouverez à ces adresses : http://www.vagrantbox.es/, https://vagrantcloud.com/discover/featured. Pour ce tuto, nous allons installer une VM basée sur une distribution Debian 7 (64bit) disponible sur http://www.vagrantbox.es.

Positionnez vous dans le répertoire courant du projet dans lequel vous souhaitez utiliser vagrant et saisissez la commande :

vagrant init chef/debian-7.4

Cette commande va générer un fichier "Vagrantfile" permettant de configurer la VM. A ce stade, cette dernière n'est pas encore créée. Exécutez ensuite la commande :
vagrant up

Cette commande va lancer l'installation de la VM. Celle-ci va être téléchargée et déposée dans votre répertoire de VM configuré au niveau de votre VirtualBox. cette étape peut durer une 20aine de minutes en fonction de votre connexion internet. Une fois téléchargée, vous verrez votre VM apparaitre dans la liste de vos machines disponibles dans VirtualBox :

virtualbox

La machine est maintenant lancée, vous remarquerez qu'une redirection de port (22 -> 2222) a été faite pour accéder à la machine en ssh :

redirection du port ssh

Vous pouvez ainsi vous connecter en ssh à la VM grâce à la commande 

vagrant ssh

vagrant ssh

L'authtification est gérée via une clé ssh, vous n'avez ainsi besoin d'aucun mot de passe. Vous avez également accès à la commande "sudo".

Voilà, c'est aussi simple que ça, votre VM est opérationnelle !

Quelques commandes utiles :

  • Pour ajouter une box : vagrant box add nom_de_ma_box url_de_la_box
  • Pour supprimer une box : vagrant box remove nom_de_ma_box
  • Pour lister les box existantes : vagrant box list
  • Pour lancer la machine virtuelle : vagrant up
  • Pour se connecter en SSH  à la VM : vagrant ssh
  • Pour mettre la VM en veille prolongée : vagrant suspend
  • Pour arrêter la VM : vagrant halt
  • Pour relancer la VM : vagrant resume

Vous trouverez la liste complète des commandes à cette adresse : http://docs.vagrantup.com/v2/cli/index.html.

Pour aller plus loin

La force de Vagrant ne réside pas simplement dans le fait qu'il permette de mettre en place rapidement des VM pour vos projets, mais c'est surtout qu'il permet de configurer et provisioner ces machines virtuelles. En effet, grâce à Vagrant, vous aller pouvoir spécifier les ressources de la VM (RAM, nombre de coeurs), les redirections de port, les applicatifs à installer etc. 

Si vous ne voyez pas l'intérêt, dites vous que grâce à un Vagrantfile bien configuré, un utilisateur peut lancer une VM contenant vim, htop, apache (ou nginx), mysql, PHP (ruby, python etc.), un vhost pointant vers son répertoire de source (en local sur son poste)… avec un simple "vagrant up". C'est pas bon ça ? 🙂

Vous trouverez ici les différents éléments paramétrable via le Vagrantfile : http://docs.vagrantup.com/v2/vagrantfile/index.html
Pour disposer d'une VM disposant de  1Go de RAM et de 2 coeurs, placer simplement ces lignes dans votre Vagrantfile :

config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", "1024"]
    vb.customize ["modifyvm", :id, "--cpus", "2"]
end

Pour le provisioning, plusieurs modes sont disponibles, voici les principaux (liste complète : http://docs.vagrantup.com/v2/provisioning/index.html) :

J'utilise pour ma part un provisionning Chef ou Shell. Vous pouvez par exemple créer un fichier "provisioning.sh" contenant l'ensemble de vos instructions d'installation (apt-get install htop …) et l'appeler dans le Vagrantfile de cette manière :

Vagrant.configure("2") do |config|
    config.vm.provision "shell", path: "provisioning.sh" 
end

Si vous disposer d'un cookbook Chef :

config.vm.provision "chef_solo" do |chef|
    chef.cookbooks_path = "provisioning/cookbooks"
    chef.json = {
     //vos variables 
    }
    chef.add_recipe "myRecipe"
end
 

Dans un prochain article je vous présenterai Chef.

Une fois votre Vagrantfile modifier, vous pouvez "provisioner" votre VM grâce à la commande :

vagrant provision

Remarque 1 : dans certains cas, il peut être nécessaire de redémarrer la VM avant de lancer le provisioning pour que toutes les modifications soient prises en compte.

Remarque 2 : si vous effectuez des modifications de configuration à la main sur votre VM (edition du php.ini via ssh par exemple), lors du processus de provisioning, ces dernières seront perdues (si le provisioning concerne php évidemment).

Cette article est terminé, j'espère qu'il vous a plu. N'hésitez pas à laisser un commentaire, publier des liens vers des Vagrantfiles ou des articles similaires/complémentaires.