<?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>CoolCoyote.net &#187; phpMyAdmin</title>
	<atom:link href="http://www.coolcoyote.net/tag/phpmyadmin/feed" rel="self" type="application/rss+xml" />
	<link>http://www.coolcoyote.net</link>
	<description>Coding - Linux</description>
	<lastBuildDate>Sun, 07 Nov 2010 15:27:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Configuration d&#8217;un serveur dédié chez OVH</title>
		<link>http://www.coolcoyote.net/linux-debian/configuration-dun-serveur-dedie-chez-ovh</link>
		<comments>http://www.coolcoyote.net/linux-debian/configuration-dun-serveur-dedie-chez-ovh#comments</comments>
		<pubDate>Wed, 15 Jul 2009 15:57:35 +0000</pubDate>
		<dc:creator>Denis S.</dc:creator>
				<category><![CDATA[Linux Debian]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[Exim4]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[ovh]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[ProFTPD]]></category>
		<category><![CDATA[serveur dédié]]></category>

		<guid isPermaLink="false">http://www.coolcoyote.net/?p=64</guid>
		<description><![CDATA[Ça faisait un moment que je n&#8217;avais pas eu à configurer un serveur dédié pour de la production. L&#8217;occasion d&#8217;en faire un petit article, le but étant de faire un serveur très basique, sans gestion de boîte mails, sans LDAP, sans chroot, etc. Juste une base LAMP.
Ce serveur dédié a été choisi chez OVH. J&#8217;ai [...]]]></description>
			<content:encoded><![CDATA[<p>Ça faisait un moment que je n&#8217;avais pas eu à configurer un serveur dédié pour de la production. L&#8217;occasion d&#8217;en faire un petit article, le but étant de faire un serveur très basique, sans gestion de boîte mails, sans LDAP, sans chroot, etc. Juste une base LAMP.</p>
<p>Ce serveur dédié a été choisi chez OVH. J&#8217;ai bien sûr demandé une Debian nue mais ça n&#8217;a pas vraiment été le cas. En fait, OVH livre une distribution Debian avec un noyau personnalisé et plusieurs outils installés par défaut. Suite à une mésaventure lors du passage de <strong>Etch</strong> à <strong>Lenny</strong> sur un de mes dédiés, j&#8217;ai décidé de ne plus laisser le noyau d&#8217;OVH mais d&#8217;installer un noyau standard. Si cette manipulation vous intéresse, <a href="http://www.coolcoyote.net/linux-debian/changer-le-noyau-dune-debian-ovh">voyez ce billet</a>. Sinon ce qui suit fonctionne quand même parfaitement.</p>
<p><span id="more-64"></span></p>
<h3>Les outils</h3>
<p>La première chose que je fais en arrivant sur une installation neuve, c&#8217;est de configurer le raccourcit <strong>ll</strong> afin d&#8217;avoir un <strong>ls</strong> détaillé et en couleur. J&#8217;ai déjà fais un billet là-dessus que vous pourrez trouver <a href="http://www.coolcoyote.net/linux-debian/raccourcis-et-couleurs-sous-la-console">à cette adresse</a>.</p>
<p>La deuxième chose est de configurer un accès par clé privée <strong>ssh</strong>. L&#8217;article est <a href="http://www.coolcoyote.net/linux-debian/ssh-cle-publiqueprivee">à cet endroit</a>.</p>
<p>Ceci fait, nous allons faire une première mise à jour du système:</p>
<pre class="code">&gt; apt-get update
&gt; apt-get -u dist-upgrade</pre>
<p>Vient ensuite l&#8217;installation de quelques outils. Chez moi ils étaient déjà pré-installés mais s&#8217;ils ne le sont pas, faites-le:</p>
<ul>
<li><strong>aptitude</strong> (permet de gérer les packages dans un mode semi-graphique)</li>
<li><strong>vim</strong> (qui est une version un peu plus évoluée de vi et qui permet notamment la coloration synthaxique)</li>
<li><strong>screen</strong> (permet de créer des consoles virtuelles supplémentaires, voir <a href="http://www.coolcoyote.net/linux-debian/les-screens-sous-debian">ce billet</a>)</li>
</ul>
<p>Pour activer la coloration syntaxique dans <strong>vim</strong> il faut taper la commande</p>
<pre class="code">:syn on</pre>
<p>Si vous voulez qu&#8217;elle soit permanente, créez le fichier <strong>.vimrc </strong>dans votre répertoire utilisateur et insérez la ligne de commande:</p>
<pre class="code">syn on</pre>
<h3>Déplacer le dossier /var</h3>
<p>Je pense que la première chose à faire, avant de se retrouver avec des daemons qui tournent de tous les côtés, c&#8217;est de déplacer le dossier <strong>/var</strong>. En effet les partitions système ne sont pas très grosses chez OVH et il arrivera un moment où les logs et les bases de données vont saturer cette partition et amener à un plantage du serveur. Etant donné qu&#8217;on a de la place dans <strong>/home</strong>, on va y déplacer le dossier <strong>/var</strong></p>
<pre class="code">&gt; cp -Rp var/ /home/
&gt; mv /var/ /var.old/
&gt; ln -s /home/var/ var</pre>
<h3>Installation de MySQL</h3>
<p>rien de plus simple:</p>
<pre class="code">&gt; apt-get install mysql-server</pre>
<p>Dans la dernière version que j&#8217;ai installé, MySQL me propose désormais de paramétrer le mot de passe <strong>root </strong>du serveur. Je vous encourage fortement à le faire dès maintenant. Si vous ne le faites pas, vous pourrez le faire plus tard mais le plus tôt est le mieux car à ce niveau, ce n&#8217;est plus un trou de sécu, c&#8217;est la porte ouverte à toutes les fenêtres  <img src='http://www.coolcoyote.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h3>Installation d&#8217;Apache 2.2</h3>
<p>Pareil, trop dur Debian:</p>
<pre class="code">&gt; apt-get install apache2-mpm-prefork</pre>
<p>Notez que l&#8217;on installe ce paquet là d&#8217;Apache car le module PHP5 en dépend. Il ne fonctionne pas avec le paquet classique d&#8217;Apache 2.2.</p>
<h3>Installation de PHP 5</h3>
<pre class="code">&gt; apt-get install libapache2-mod-php5</pre>
<p>On va devoir également installer quelques modules supplémentaires pour PHP:</p>
<pre class="code">&gt; apt-get install php5-cli
&gt; apt-get install php5-gd
&gt; apt-get install php5-mcrypt
&gt; apt-get install php5-mysql</pre>
<p>sont un minimum je pense. On peut facilement voir la liste des modules dispos en faisant un petit:</p>
<pre class="code">&gt; dpkg -l *php5*</pre>
<p>A ce niveau on peut déjà faire quelques petits tests. Déjà il faut redémarrer Apache:</p>
<pre class="code">&gt; /etc/init.d/apache2 restart</pre>
<p>Puis les tests : taper l&#8217;adresse du serveur dans votre navigateur web. Vous devriez avoir le fameux &laquo;&nbsp;It Works!&nbsp;&raquo; d&#8217;Apache.</p>
<p>Dans le répertoire <strong>/var/www </strong>créez un fichier <strong>info.php</strong> dans lequel vous allez mettre le code suivant:</p>

<div class="cc_syntax-container"><table><tr><td class="line-numbers"><pre>1
2
3
</pre></td><td class="cc_syntax"><pre class="php"><span class="kw2">&lt;?php</span>
<span class="kw3">phpinfo</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="sy1">?&gt;</span></pre></td></tr></table></div>

<p>Pareil, dans votre navigateur tapez : <strong>http://monserver/info.php</strong>. Normalement la config de PHP apparaît.</p>
<h3>Configuration</h3>
<p>maintenant que l&#8217;environnement LAMP est installé, on va faire un peu de configuration.</p>
<p>Tout d&#8217;abord pour MySQL, de base il n&#8217;y a rien de spécial à toucher. Cependant si vous désirez personnaliser votre installation, vous pouvez le faire en rajoutant un fichier dans <strong>/etc/mysql/conf.d</strong>. Toutes les options que vous y insèrerez seront prises en compte automatiquement.</p>
<p>Pour PHP, il faut faire la configuration classique de <strong>php.ini</strong> qui se trouve dans <strong>/etc/php5/apache2/php.ini</strong></p>
<p>Ce fichier est configuré de façon très basique. Tel quel il fonctionne, il y a cependant moyen de l&#8217;améliorer un petit peu:</p>
<p>Si vous n&#8217;avez pas de scripts PHP balisés par <strong>&lt;?</strong> et<strong> ?&gt;</strong>, mettez l&#8217;option <strong>short_open_tag</strong> à <strong>Off</strong>. Cela obligera les scripts PHP à être balisés par <strong>&lt;?php</strong> et <strong>?&gt;</strong>. Pourquoi? A partir de PHP6, le balisage court n&#8217;existera plus. Autant se mettre à la norme dès maintenant.</p>
<p>Si vous voulez désactiver certaines fonctions par mesure de sécurité (exec par exemple), vous pouvez les rajouter à l&#8217;option disable_functions en les séparant par des virgules.</p>
<p>En production, on conseille de passer l&#8217;option <strong>display_errors</strong> à <strong>Off</strong> car cela peu donner des indications importantes à une personne mal intentionnée. Par contre on passera le paramètre <strong>log_errors</strong> à <strong>On</strong> pour que les messages d&#8217;erreur soient enregistrés dans un fichier.</p>
<p>Si vous avez de vieux sites codés en PHP, peut-être aurez vous besoin de passer le paramètre <strong>register_globals</strong> à <strong>On</strong>. Si vous pouvez vous en passer ce n&#8217;est que mieux, question de sécurité.</p>
<p>Vous pouvez également décommenter la ligne:</p>
<pre class="code">;include_path = ".:/usr/share/php"</pre>
<p>Cela vous permettra de protéger certains fichiers d&#8217;inclusion en les déportant de l&#8217;espace accessible par le web.</p>
<p>Passons maintenant à la configuration d&#8217;Apache. Tout se passe dans le répertoire <strong>/etc/apache2/</strong></p>
<p>La première chose que nous allons faire c&#8217;est activer les modules dont nous avons besoin. La gestion des modules Apache à la sauce Debian est plutôt bien foutue: Dans le répertoire <strong>mods-available</strong> se trouvent tous les modules disponibles pour Apache. Le répertoire <strong>mods-enabled</strong> contient les modules activés. Si on veut activer un module, on ne va pas copier le module en question du répertoire <strong>mods-available</strong> au répertoire <strong>mods-enabled</strong>, mais plutôt faire un lien symbolique dans le répertoire <strong>mods-enabled</strong> vers les modules que l&#8217;on veut activer. Par exemple, pour activer le <strong>mod_rewrite</strong>, se placer dans le répertoire <strong>mods-enabled</strong> et taper la commande:</p>
<pre class="code">&gt; ln -s ../mods-available/rewrite.load rewrite.load</pre>
<p>Faire cela pour tous les modules que vous voulez activer. Si par exemple vous voulez activer le module <strong>userdir</strong>, n&#8217;oubliez pas qu&#8217;il y a deux liens à faire: un pour le <strong>.load</strong> et un pour le <strong>.conf</strong></p>
<p>Les autres éléments de configuration se trouvent dans le répertoire <strong>/etc/apache2/conf.d</strong>. A l&#8217;image de ce qui se fait pour MySQL, tout fichier créé dans ce répertoire et contenant des directives sera pris en compte et écrasera la configuration d&#8217;origine. De base il y a un fichier charset qui contient une directive</p>
<pre class="code">AddDefaultCharset UTF-8</pre>
<p>Qui active le jeu de caractère UTF-8 par défaut. Si vous préférez activer l&#8217;ISO-8859-1 par défaut, remplacez par:</p>
<pre class="code">AddDefaultCharset on</pre>
<p>On va également créer un fichier <strong>directoryindex</strong> contenant la directive suivante:</p>
<pre class="code">DirectoryIndex index.html index.htm index.cgi index.pl index.php index.xhtml</pre>
<p>Qui permet d&#8217;accepter une page <strong>index.php</strong> ou <strong>index.cgi</strong> comme page d&#8217;accueil pour un site</p>
<p>Si vous voulez accepter les CGI, il faut egalement créer un fichier <strong>cgi.conf</strong> dans lequel on va mettre:</p>
<pre class="code">AddHandler cgi-script .pl
AddHandler cgi-script .cgi</pre>
<p>Ce qui va permettre d&#8217;accepeter les fichier <strong>.pl</strong> et <strong>.cgi</strong> comme CGI</p>
<p>Vous pouvez bien sûr continuer comme ça à paramétrer tout ce que vous voulez.</p>
<h3>Installation de ProFTPD</h3>
<p>On est presque prêt à accueillir nos premiers sites. Mais pour cela il faut les uploader sur le serveur et pour ça il nous faut un serveur FTP. En voici un : <strong>ProFTPD</strong></p>
<pre class="code">&gt; apt-get install proftpd</pre>
<p>On vous demandera si vous voulez le lancer sous <strong>inetd</strong> ou indépendamment, choisissez la deuxième option.</p>
<p>Après installation, le serveur est déjà prêt à l&#8217;utilisation. Si vous voulez changer la configuration, vous pouvez le faire en modifiant le fichier <strong>/etc/proftpd/proftpd.conf</strong>, mais on peut déjà exploiter le serveur tel quel.</p>
<p>Il n&#8217;y a juste qu&#8217;une chose à modifier dans la configuration du serveur. Il faut rajouter les lignes suivantes:</p>
<pre class="code">DefaultRoot ~
IdentLookups off
UseReverseDNS off</pre>
<p>La première instruction permet de bloquer chaque utilisateur dans son répertoire et évite qu&#8217;il se balade sur tout le serveur. Les deuxièmes et troisièmes instructions désactivent des traitements DNS de proftpd et permettent une connexion rapide au serveur (essayez les deux et voyez la différence).</p>
<p>Maintenant, il ne nous reste plus que 2 choses à faire: créer un utilisateur FTP avec son espace, et configurer le domaine associé sous Apache pour qu&#8217;il pointe à cet endroit.</p>
<p>Pour créer un utilisateur FTP, rien de plus simple, on va créer un utilisateur système:</p>
<pre class="code">&gt; addgroup nom_user
&gt; adduser --ingroup nom_user nom_user</pre>
<p>Cela va créer le répertoire personnel de l&#8217;utilisateur dans le répertoire <strong>/home</strong></p>
<p>Lors de la création de cet utilisateur, vous devrez saisir des renseignements. Le plus important est bien sûr le mot de passe, le reste n&#8217;est pas important.</p>
<p>On peut désormais configurer notre client FTP pour se connecter:</p>
<p>host: IP_serveur<br />
login: nom_user<br />
mot de passe : pass_user</p>
<p>Une fois connecté, on crée un répertoire <strong>www</strong> qui contiendra le site et on peu mettre une page d&#8217;accueil quelconque pour faire nos tests.</p>
<p>Tester avec le module <strong>userdir</strong></p>
<p>Le module <strong>userdir </strong>permet de se connecter à l&#8217;espace web d&#8217;un utilisateur du système sans le nom de domaine. L&#8217;url sera de la forme:</p>
<pre>http://ip_serveur/~nom_utilisateur/</pre>
<p>Pour pouvoir faire cela, il faut dans un premier temps activer le module <strong>userdir </strong>dans Apache (voir plus haut). Puis dans le répertoire <strong>/etc/apache2/conf.d</strong> créer un fichier <strong>userdir </strong>contenant les commandes suivantes:</p>
<pre class="code">&lt;IfModule mod_userdir.c&gt;
    UserDir www
    UserDir disabled root

    &lt;Directory /home/*/www&gt;
        AllowOverride FileInfo AuthConfig Limit
        Options Indexes SymLinksIfOwnerMatch IncludesNoExec
    &lt;/Directory&gt;
&lt;/IfModule&gt;</pre>
<p>On relance Apache et normalement si vous faites l&#8217;adresse indiquée plus haut, vous devriez voir votre page uploadée tout à l&#8217;heure.</p>
<p>Note: Si vous utilisez le module <strong>rewrite</strong>, je vous déconseille fortement d&#8217;utiliser l&#8217;option <strong>MultiViews </strong>de la commande <strong>Options </strong>car personnellement j&#8217;ai eu des interférences entre les deux.</p>
<h3>Configuration d&#8217;un domaine:</h3>
<p>Maintenant, on va configurer Apache pour que mondomaine.com pointe sur <strong>/home/nom_user/www</strong>.</p>
<p>Dans le répertoire <strong>/etc/apache2/sites-available</strong> créer le fichier <strong>mondomaine.com</strong>. Y mettre les instructions suivantes:</p>
<pre class="code">&lt;VirtualHost *&gt;
    ServerName www.mondomaine.com
    ServerAlias mondomaine.com www.mondomaine.com
    ServerAdmin webmaster@mondomaine.com

    DocumentRoot /home/nom_utilisateur/www
    ScriptAlias /cgi/ "/home/nom_utilisateur/cgi-bin/"

    &lt;Directory /home/nom_utilisateur/www&gt;
         Options -Indexes
    &lt;/Directory&gt;

    php_admin_value open_basedir "/tmp:/var/lib/php5:/home/nom_utilisateur/www"
&lt;/VirtualHost&gt;</pre>
<p>Vous devez bien sûr encore une fois remplacer les paramètres <strong>mondomaine.com</strong> et <strong>nom_utilisateur</strong> par vos valeurs.</p>
<p>Enregistrez, rechargez Apache et le tour est joué.</p>
<p>Note: il est important de ne pas oublier le paramètre <strong>open_basedir</strong> de PHP, cela empêche les scripts PHP de pouvoir lire n&#8217;importe quel fichier du serveur en le cloisonnant dans le répertoire <strong>www/</strong></p>
<h3>Installation de phpMyAdmin</h3>
<p>Forcément, si vous avez installé <strong>MySQL</strong>, il vous faut <strong>phpMyAdmin</strong>. Il y a deux écoles:</p>
<ul>
<li>Rester à la sauce Debian et installer le package <strong>phpMyAdmin</strong></li>
<li>L&#8217;installer à la main</li>
</ul>
<p>Les deux solutions ont leurs avantages et inconvénients:</p>
<p>Installer le package est simple et la maintenance aussi puisqu&#8217;un simple <strong>apt-get</strong> permet une mise à jour. Par contre les versions ne sont pas à jour. Au moment de la rédaction de ce billet, la version actuelle est en 2.11.9 alors que le package est en 2.9.1. Pour cette raison je préfère une installation manuelle. Par contre cela m&#8217;oblige à me tenir au courant des mises à jour et à les faire manuellement.</p>
<p>Généralement j&#8217;installe phpMyAdmin dans le répertoire <strong>/var/www</strong>. Ainsi on peut accéder à phpMyAdmin par l&#8217;adresse: <strong>http://ip_serveur/phpMyAdmin</strong></p>
<p>L&#8217;avantage de cette méthode est qu&#8217;il est facile de créer des alias ou des redirections de tous les noms de domaine qui seront installés sur le serveur afin qu&#8217;ils aient une url de phpMyAdmin simple. Par exemple une directive:</p>
<pre class="code">Alias /phpMyAdmin /var/www/phpMyAdmin/</pre>
<p>permet une redirection transparente.</p>
<p>une fois phpMyAdmin installé, la première chose à faire est de s&#8217;y logguer afin de paramétrer le mot de passe <strong>root </strong>de MySQL. Si vous ne l&#8217;avez pas fait lors de l&#8217;installation c&#8217;est le moment où jamais !!</p>
<h3>Envoyer des mails avec PHP</h3>
<p>C&#8217;est la dernière chose qui nous manque avant d&#8217;avoir un serveur de production minimal potable. Pour cela on va installer <strong>exim4</strong>:</p>
<pre class="code">&gt; apt-get install exim4</pre>
<p>puis pour la configuration:</p>
<pre class="code">&gt; dpkg-reconfigure exim4-config</pre>
<p>les options:</p>
<ul>
<li>séparer la configuration dans plusieurs fichiers -&gt; Non</li>
<li>Type de configuration -&gt; Distribution directe par SMTP</li>
<li>Nom de courriel du système -&gt; Mettez le nom de domaine principal du serveur ou laissez par défaut</li>
<li>Liste d&#8217;adresses IP -&gt; laissez 127.0.0.1 pour le moment</li>
<li>Autres destinations -&gt; Vide</li>
<li>Domaines à relayer -&gt; Vide</li>
<li>Machines à relayer -&gt; Vide</li>
<li>Faut-il minimiser les requêtes DNS -&gt; Non</li>
<li>Méthode de distribution du courrier local -&gt; laissez &laquo;&nbsp;mbox&nbsp;&raquo;</li>
</ul>
<p>Théoriquement, les emails envoyés de PHP fonctionnent désormais.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coolcoyote.net/linux-debian/configuration-dun-serveur-dedie-chez-ovh/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

