Aller au contenu | Aller au menu | Aller à la recherche

Serveur

Fil des billets

mardi, février 3 2009

Copie parfaite d'un repository GIT distant

Copie parfaite d'un repository distant

J'utilise un gestionnaire de projets avec gestion de repository GIT,mais pour l'utiliser il faut que le repository GIT soit sur le même serveur. Dans mon cas où j'ai mon repo sur un autre serveur, il fallait donc que je trouve le moyen d'avoir une copie du repo distant tout le temps à jour. Le but est de récuperer une branche de travail distante en mode "bare" et la synchroniser comme une copie parfaite.

Le code

# Récupère l'archive
git clone --bare ssh://user@serveur.kewix.fr/var/www/myproject
# Mise à jour de la branche avec les mêmes références que la branche d'origine
cd myproject
git fetch ssh://user@serveur.kewix.fr/var/www/myproject +refs/heads/*:refs/heads/*

Toute la magie est dans l'utilisation des wildcards (*) et du (+) qui permet d'écraser tout ce qu'on a sur la branche locale et même nos propres commits s'il y en a. De cette façon nous avons une copie parfaite du travail réalisé sur la branche distante.

Et voilà, il suffit juste maintenant de rajouter dans un petit cron de la synchro pour que cela se fasse automatiquement !

Sources

http://kerneltrap.org

jeudi, janvier 22 2009

Utiliser le gestionnaire de versionnement GIT

J'ai mis longtemps à choisir un VCS et voilà j'ai fait mon choix ce sera GIT. Bazaar à l'air sympa et a les mêmes caractéristiques à peu près. Enfin ce qui m'interesse surtout c'est la gestion décentralisée!

Configuration des infos utilisateur

$ git config --global user.name "Your Name Comes Here"
$ git config --global user.email you@yourdomain.example.com

Initialiser le repertoire pour travailler avec GIT

cd  ~projects/mywebsite
git init
git add.
git commit -m "Import initial"

Avec ceci nous avons un environnement de travail prêt avec une branche créée "master" par défaut. Pour gérer les branches il suffit de faire un git branch

Travailler à plusieurs sur le même serveur en ayant chacun son répertoire de travail

git clone ~projects/mywebsite ~projects/fry-work
git clone ~projects/mywebsite ~projects/leela-work

Vous pouvez configurer chaque repertoire de travail dans les vhosts de apache afin d'avoir un site propre à chaque développeur.

Mettre à jour le site principal (trunk)

cd ~projects/fry-work
git commit -a -m "Les modifs de Fry!"
cd ~projects/mywebsite
git pull ~projects/fry-work master

Et voilà !

Sources et infos :

lundi, janvier 12 2009

Tester un serveur SMTP et envoyer un mail avec telnet tout simplement

Utilisation de telnet sur le port SMTP par défaut 25.

telnet smtp.mondomaine.com 25

Si tout se passe bien on obtient la connexion de la façon suivante :

Trying 87.106.143.187...
Connected to smtp.mondomaine.com.
Escape character is '^]'.
220 serveur.mondomaine.com ESMTP

Ensuite on fait un petit test d'envoi de mail

HELO kewix.fr
250 serveur.mondomaine.com
MAIL FROM: <test@mondomaine.com>
250 ok
RCPT TO: <adresse@kewix.fr>
250 ok
DATA
354 go ahead
Reply-to: autreadresse@kewix.fr
Subject: test de message
blabla
.
250 ok 1231760818 qp 18364
QUIT
221 serveur.mondomaine.com
Connection closed by foreign host.

Voilà!

jeudi, décembre 4 2008

Faire une copie sécurisée et rapide d'un serveur à un autre simplement avec rsync et ssh

Pré requis

Avoir rsync et ssh d'installé sur sa machine. Si c'est pas le cas installer les paquets suivants (cas d'une machine sous Debian ou Unbuntu) :

sudo apt-get install rsync
sudo apt-get install ssh

Pairage pour ne pas avoir a rentrer le mot de passe à chaque fois (optionnel)

Manipulation à faire avec les privilèges root (sudo -s) sur la machine locale: Dans mon cas on utilise un port spécial (222) pour ssh, il faut donc le spécifier dans la commande.

ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub | ssh -p 222 root@monserveurdistant.fr "cat -  ~/.ssh/authorized_keys"

Mettez une passphrase vide si vous ne voulez pas saisir le mot de passe à chaque fois

Envoi des données ou récupération des données

Enfin on utilise rsync avec compression (-z) en mode verbeux (-v) et archive (-a) et on se connecte sur la machine sur le port spécial (222). Avec ces options rsync va faire la différence entre les deux répertoires et n'envoyer que les fichiers différent ce qui permet de gagner un temps énorme lorsque l'on veut synchroniser deux serveurs régulièrement. Rsync a le même fonctionnement que scp c'est à dire source à gauche et destination à droite, ainsi l'exemple suivant envoi les données sur le serveur distant.

rsync -avz -e 'ssh -p 222' --progress /var/www root@monserveurdistant.fr:/var/www

Mais on peut très bien faire l'inverse et récupérer les données du serveur distant en local

rsync -avz -e 'ssh -p 222' --progress root@monserveurdistant.fr:/var/www /var/www 

Synchronisation programmée avec CRON

Ça peut être pratique de faire ça tous les jours ou toutes les heures donc le plus simple c'est de rajouter une ligne CRON.

crontab -e

Et ajoutez pour une synchro tous les jours à 4h du matin

00 4 * * * rsync -avz -e 'ssh -p 222' --progress root@monserveurdistant.fr:/var/www /var/www

Et voilà !

mardi, avril 29 2008

Faire un message d'absence avec Qmail

Le fichier dot qmail (.qmail) du repertoire utilisateur permet d'executer des commandes et redirections lors de la réception d'email. Ce fichier doit être placé ici : /var/vpopmail/domains/mydomain.com/user1/.qmail

Voir la documentation officielle ici : http://www.qmail.org/man/man5/dot-qmail.html

Dans l'exemple ci-dessous nous renverrons un message à l'expediteur tout en en stockant le message dans la boite mail de destination.

Le fichier .qmail:

| cat .email | sed s/"\!SENDER\!"/$SENDER/g | /var/qmail/bin/qmail-inject
/var/vpopmail/domains/mydomain.com/user1/.maildir/

L'email de réponse .email

From: "User 1" <user1@mydomain.com>
To: !SENDER!
Subject: Automatic response

You would rather like to send messages to user2@mydomain.com.
Thank you.

Et voilà, l'expéditeur sera averti de l'absence de la personne, mais l'email sera quand même receptionné. A vous de personnaliser le message bien sûr!