<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>blog.freelan.org &#187; &#187; Administration</title>
	<atom:link href="http://blog.freelan.org/category/administration/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.freelan.org</link>
	<description>De l&#039;informatique, des octets et des poneys.</description>
	<lastBuildDate>Fri, 04 Apr 2014 17:34:59 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Restaurer son répertoire courant lors d&#8217;une ouverture de session sous Linux</title>
		<link>http://blog.freelan.org/2011/09/07/restaurer-son-repertoire-courant-lors-dune-ouverture-de-session-sous-linux/</link>
		<comments>http://blog.freelan.org/2011/09/07/restaurer-son-repertoire-courant-lors-dune-ouverture-de-session-sous-linux/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 08:06:41 +0000</pubDate>
		<dc:creator><![CDATA[Julien Kauffmann]]></dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Astuces]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[directory]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[restore]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://blog.freelan.org/?p=394</guid>
		<description><![CDATA[Je travaille tous les jours sur un serveur Linux. Je me suis rendu compte que chaque matin, lorsque la session de la veille a été coupée, je retape systématiquement la même commande : "cd le/repertoire/vers/mon/projet/actuel".
Taper ces quelques mots chaque matin n'est pas vraiment la mer à boire, mais c'est en revanche déjà plus pénible de devoir le refaire 15 fois dans la journée, lorsque surviennent des coupures réseaux qui me font perdre ma session...
J'ai décidé ce matin, de trouver une solution simple et légère pour palier le problème.]]></description>
				<content:encoded><![CDATA[<p>Je travaille tous les jours sur un serveur Linux. Je me suis rendu compte que chaque matin, lorsque la session de la veille a été coupée, je retape systématiquement la même commande : &#8220;cd le/repertoire/vers/mon/projet/actuel&#8221;.</p>
<p>Taper ces quelques mots chaque matin n&#8217;est pas vraiment la mer à boire, mais c&#8217;est en revanche déjà plus pénible de devoir le refaire 15 fois dans la journée, lorsque surviennent des coupures réseaux qui me font perdre ma session&#8230;</p>
<p>J&#8217;ai décidé ce matin, de trouver une solution simple et légère pour palier le problème.</p>
<h1>La solution</h1>
<p>L&#8217;idée est toute bête : à chaque changement de répertoire, je stocke le nouveau répertoire courant dans un fichier à la racine de mon &#8220;home-directory&#8221;. À l&#8217;ouverture de session, je lis ce fichier s&#8217;il existe et change le répertoire courant en conséquence.</p>
<h1>Réalisation</h1>
<p>La réalisation se divise en deux étapes :</p>
<ol>
<li>L&#8217;écriture de deux scripts simples pour sauvegarder et restaurer le répertoire courant;</li>
<li>la redéfinition de la commande &#8220;<code>cd</code>&#8221; pour qu&#8217;elle exécute les scripts précédents.</li>
</ol>
<h2>Les scripts</h2>
<p>J&#8217;ai choisi de stocker mes scripts personnels dans un répertoire nommé &#8220;<code>bin</code>&#8220;, à la racine de mon &#8220;home&#8221;. Vous pouvez bien évidemment les mettre où bon vous semble.</p>
<p>Le premier script se nomme <code>savepwd.sh</code>, et voici son contenu :</p><pre class="crayon-plain-tag">#!/bin/bash

\cd $2
echo $PWD &gt; ~/.savedpwd</pre><p>Rien de fou ici : on change le répertoire (on préfixe <code>cd</code> par un antislash pour éviter d&#8217;appeler un éventuel alias; ce qui tombe bien puisque c&#8217;est ce qu&#8217;on va faire dans la deuxième partie) et on inscrit dans le fichier <code>~/.savedpwd</code> le répertoire courant après changement.</p>
<p>On spécifie <code>$2</code> pour une raison que nous verrons plus tard.</p>
<p>Le deuxième script se nomme <code>loadpwd.sh</code> et contient les lignes suivantes :</p><pre class="crayon-plain-tag">#!/bin/bash

PWDFILE=`eval ls ~/.savedpwd 2&gt;/dev/null`

if [ -e &quot;$PWDFILE&quot; ]
then
        RESTORED_PWD=`cat $PWDFILE`
        \cd $RESTORED_PWD
fi</pre><p>Encore une fois, rien de spécial : on teste l&#8217;existence du fichier <code>~/.savedpwd</code>, et s&#8217;il existe, on remplace le répertoire courant par celui qui y est inscrit.</p>
<h2>Les alias</h2>
<p>Modifions maintenant le script de démarrage de session, dans mon cas il s&#8217;agit du fichier <code>~/.bashrc</code>, et ajoutons les lignes suivantes :</p><pre class="crayon-plain-tag"># Restore/Save current working directory on open/close
alias cd='. ~/bin/savepwd.sh dummy'
. ~/bin/loadpwd.sh</pre><p>On remplace simplement la commande &#8220;<code>cd</code>&#8221; par un appel au script <code>~/bin/savedpwd.sh</code> et on fait un appel à <code>~/bin/loadpwd.sh</code> lors du premier chargement du script.</p>
<p>Vous vous posez certainement la question, pourquoi ce paramètre &#8220;<code>dummy</code>&#8221; ? Tout simplement, si on utilisait le premier paramètre (<code>$1</code>) on a un bogue dans le cas où l&#8217;appelant a fait un appel à <code>set</code> dans sa console, et quand on appelle <code>cd</code> sans paramètres : en effet, <code>set</code> définit <code>$1</code> dans la console actuelle, et devient la valeur par défaut quand le script est appelé sans paramètre.</p>
<p>En faisant par exemple :</p><pre class="crayon-plain-tag">$ set toto
$ cd</pre><p>Au lieu de retourner à la racine du &#8220;home-directory&#8221;, on se retrouve dans le répertoire &#8220;<code>toto</code>&#8220;, s&#8217;il existe. En ajoutant le paramètre &#8220;<code>dummy</code>&#8220;, on empêche le problème de se produire en s&#8217;assurant qu&#8217;aucun paramètre par défaut n&#8217;est appelé lors de l&#8217;invocation de <code>~/bin/savepwd.sh</code>.</p>
<h1>C&#8217;est fini !</h1>
<p>Ça y est, vous pouvez relancer votre session pour prendre en compte les modifications : dès que vous changerez de répertoire courant, celui-ci sera sauvé puis restauré lors de la prochaine ouverture de session !</p>
<p>J&#8217;espère en tout cas que cette astuce pourra vous servir ! N&#8217;hésitez pas à me suggérer des améliorations ou d&#8217;éventuels problèmes (sécurité, utilisation) liés à ces scripts. Bon code ! <img src="http://blog.freelan.org/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.freelan.org/2011/09/07/restaurer-son-repertoire-courant-lors-dune-ouverture-de-session-sous-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installation d&#8217;un serveur Git avec Apache sous Linux</title>
		<link>http://blog.freelan.org/2011/09/02/installation-dun-serveur-git-avec-apache-sous-linux/</link>
		<comments>http://blog.freelan.org/2011/09/02/installation-dun-serveur-git-avec-apache-sous-linux/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 18:28:26 +0000</pubDate>
		<dc:creator><![CDATA[Julien Kauffmann]]></dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[dav]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://blog.freelan.org/?p=386</guid>
		<description><![CDATA[Cet article a pour but de vous montrer comment mettre en place rapidement et simplement un serveur Git sous Apache, avec un ou plusieurs dépôts, et une authentification par identifiant/mot de passe.]]></description>
				<content:encoded><![CDATA[<p>Cet article a pour but de vous montrer comment mettre en place rapidement et simplement un serveur Git sous Apache, avec un ou plusieurs dépôts, et une authentification par identifiant/mot de passe.</p>
<h1>Démarrage</h1>
<p>Nous partirons du principe que vous avec un Linux moderne (j&#8217;utilise Debian, mais la démarche devrait être similaire sur n&#8217;importe quelle autre distribution).</p>
<p>Installez tout d&#8217;abord les paquets nécessaires :</p><pre class="crayon-plain-tag">$ apt-get install git-core apache2</pre><p>Vérifiez ensuite que git est installé :</p><pre class="crayon-plain-tag">$ git --version
git version 1.5.6.5</pre><p>Si vous obtenez une sortie similaire, c&#8217;est que Git est bien installé.</p>
<h1>Création du dépôt</h1>
<p>Nous allons commencer par attribuer un répertoire à nos futurs dépôts Git. J&#8217;ai personnellement choisi &#8220;<code>/home/git</code>&#8221; mais libre à vous de choisir autre chose. Notez simplement ce chemin, car nous allons y faire référence quelques fois dans les prochaines étapes.</p>
<p>Tapez les commandes suivantes :</p><pre class="crayon-plain-tag">$ mkdir -p /home/git/repositories
$ chown -R www-data: /home/git</pre><p>Où <code>www-data</code> est le nom du user sous lequel tourne le démon apache.</p>
<p>Nous placerons tous les dépôts Git dans le répertoire <code>/home/git/repositories</code>. Dans notre exemple, nous créons un dépôt nommé &#8220;<code>depot.git</code>&#8221; :</p><pre class="crayon-plain-tag">$ cd /home/git/repositories
$ mkdir depot.git
$ cd depot.git
$ git init --bare
$ git update-server-info</pre><p>La commande &#8220;<code>git init --bare</code>&#8221; créé un dépôt Git &#8220;bare&#8221;, c&#8217;est à dire un dépôt qui ne possède pas de copie de travail : c&#8217;est un dépôt de &#8220;stockage&#8221; uniquement; vous n&#8217;y ferez jamais de commit mais seulement des &#8220;push&#8221; ou des &#8220;pull&#8221;.</p>
<p>La commande &#8220;<code>git update-server-info</code>&#8221; met à jour les données du serveur dans le dépôt, pour lui permettre d&#8217;être accédé à distance.</p>
<p>Vous devrez répéter cette dernière étape pour chaque dépôt que vous souhaiterez créer. Notez que vous pouvez également créer une arborescence de répertoires pour organiser plus finement les dépôts.</p>
<h1>Paramétrage d&#8217;Apache</h1>
<p>Nous devons ensuite informer Apache de la présence de nos dépôts Git. Pour ce faire, nous créons un fichier nommé &#8220;<code>git</code>&#8221; dans le répertoire &#8220;<code>/etc/apache2/sites-available</code>&#8221; qui contient les paramètres suivants :</p><pre class="crayon-plain-tag">Alias /git/ &quot;/home/git/repositories/&quot;

&lt;Directory /home/git/repositories&gt;
        DAV on
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
        AuthType Basic
        AuthName &quot;Git&quot;
        AuthUserFile /home/git/passwd
        Require valid-user
&lt;/Directory&gt;</pre><p>Nous définissons une authentification de type &#8220;identifiant/mot de passe&#8221; mais libre à vous de choisir une autre méthode d&#8217;authentification.</p>
<p>Nous supposons ici que le serveur apache possède déjà au moins un &#8220;virtual host&#8221;. Si vous souhaitez par exemple limiter l&#8217;accès à un &#8220;virtual host&#8221; en particulier (utile dans le cas où l&#8217;on souhaite forcer le passage en <code>HTTPS</code> par exemple), il suffit d&#8217;imbriquer le code ci-dessus dans la déclaration de ce &#8220;virtual host&#8221;.</p>
<p>Lorsqu&#8217;une personne tentera d&#8217;accéder au sous répertoire &#8220;<code>/git/</code>&#8221; de notre serveur web, elle devra saisir un identifiant et un mot de passe ayant été renseigné dans le fichier &#8220;<code>/home/git/passwd</code>&#8220;.</p>
<p>Créons maintenant ce fichier grâce à la commande suivante :</p><pre class="crayon-plain-tag">$ htpasswd -c /home/git/passwd &lt;login utilisateur&gt;</pre><p>Le programme vous invite à saisir un mot de passe pour votre utilisateur. Créez autant d&#8217;utilisateurs que vous le souhaitez à l&#8217;aide de la même commande (omettez le paramètre &#8220;<code>-c</code>&#8221; lors des fois suivantes).</p>
<p>Vérifiez que l&#8217;utilisateur <code>www-data</code> ait accès à ce fichier, uniquement en lecture.</p>
<p>Vous n&#8217;avez plus qu&#8217;à activer le site, les modules <code>dav</code> et <code>dav_fs</code> puis à redémarrer apache pour mettre en ligne le dépôt :</p><pre class="crayon-plain-tag">$ a2ensite git
$ a2enmod dav
$ a2enmod dav_fs
$ /etc/init.d/apache2 restart</pre><p>Le dépôt devrait désormais, être accessible.</p>
<h1>Un petit test pour la route</h1>
<p>Testons l&#8217;accès au dépôt depuis un autre poste sur le réseau. Vous pouvez bien évidemment utiliser un poste Windows ou Linux, graphique ou en ligne de commande.</p>
<p>Pour la simplicité de l&#8217;exemple (et parce que j&#8217;adore ça), nous utiliserons la ligne de commande :</p><pre class="crayon-plain-tag">$ git clone http://notre_serveur/git/depot.git</pre><p>Cette commande devrait réussir et créer un répertoire nommé &#8220;<code>depot</code>&#8221; dans le répertoire courant.</p>
<p>Ignorez l&#8217;avertissement qui dit que le dépôt est vide : cela est tout à fait normal.</p>
<p>Remarque : si vous avez choisi d&#8217;héberger votre dépôt en HTTPS, git refusera peut-être de s&#8217;y connecter si votre certificat n&#8217;est pas signé par une autorité de certification reconnue. Vous pouvez définir la variable d&#8217;environnement &#8220;<code>GIT_SSL_NO_VERIFY=1</code>&#8221; pour ignorer l&#8217;erreur <strong>temporairement</strong>. Ne vous servez évidemment pas de cette variable comme solution <strong>à long terme</strong> !</p>
<h1>Conclusion</h1>
<p>La mise en place d&#8217;un serveur Git accessible sous Apache est donc plutôt simple. Notre configuration ici est minimale et pourrait encore être améliorée, notamment en permettant une affectation des droits plus précise pour les différents dépôts au sein d&#8217;Apache.</p>
<p>Vos recherches sur l&#8217;Internet vous auront peut-être conduit à d&#8217;autres solutions, utilisant gitosis ou encore ssh. Ces approches proposent d&#8217;autres modes d&#8217;authentification (par certificat ou en ssh avec un compte sur le système) qui peuvent être très intéressantes mais je n&#8217;ai personnellement pas réussi à les faire fonctionner correctement pour l&#8217;instant. Si vous avez des ressources à partager à ce sujet, n&#8217;hésitez pas à me les transmettre <img src="http://blog.freelan.org/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" /></p>
<p>J&#8217;espère en tout cas que cet article vous aura été utile, et comme d&#8217;habitude, n&#8217;hésitez pas à me faire part de vos commentaires ! <img src="http://blog.freelan.org/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.freelan.org/2011/09/02/installation-dun-serveur-git-avec-apache-sous-linux/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
