nyroBlog
Ban NyroBlog, by Nyro
Image by Nyro - ?

Categorie: Serveur


Base de données : MySQL (Serveur Web sur Debian Lenny)

UPDATE : voir la version à jour pour Debian Squeeze.

 

On installe le serveur :

apt-get install mysql-server

Durant l'installation, il vous sera demandé le mot de passe de l'utilisateur MySQL root.

MySQL vient avec une commande sympathique qui permet de sécurisé le serveur :

mysql_secure_installation
# Current password : VOTRE_MOT_PASSE
# set new password : N
# remove anonymous Users : Y
# Disallow root login remotley : Y
# remove test database and access to it : Y
# reload privileges table now : Y

Si vous utilisez InnoDB comme moteur de stockage de vos tables, l'ensemble des données de chaque table est stockée dans un seul et même fichier pour toutes les tables InnoDB de toutes les bases de données. Cela peut vous embetter, et dans certains cas, causer des lenteurs du serveur. Il est possible de paramétrer MySQL pour créer un fichier de stockage par table. Pour ce faire, on édite le fichier /etc/mysql/my.cnf pour y ajouter dans la section [mysqld] :

innodb_file_per_table=1


On déplace les fichiers de la base de données sur /home en prenant soin d'arrêter le serveur avant :

/etc/init.d/mysql stop
mv /var/lib/mysql /home/var/
ln -s /home/var/mysql/ /var/lib/mysql
chown mysql:mysql /home/var/mysql
/etc/init.d/mysql start

Nous voilà prêt pour installer le serveur DNS.

Retour au sommaire.

Serveur FTP : vsftpd (Serveur Web sur Debian Lenny)

UPDATE : voir la version à jour pour Debian Squeeze.

 

On installe le paquet simplement :

apt-get install vsftpd


Puis on modifier le fichier de configuration /etc/vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
force_dot_files=YES

De cette façon, chaque utilisateur de notre serveur (un utilisateur étant associé à un site) pourra se connecter par FTP et n'avoir accès qu'à son répertoire.

On recharge la configuration :

/etc/init.d/vsftpd force-reload


Et on passe au serveur de base de données, MySQL.

Retour au sommaire.

Apache et PHP (Serveur Web sur Debian Lenny)

UPDATE : voir la version à jour pour Debian Squeeze.

 

Et c'est là qu'on découvre les joies de Debian :

apt-get install apache2 apache2-dev libapache2-mod-gnutls php5 php5-mysql php5-dev php-pear php5-gd php5-mcrypt

Nous installes tout le nécessaire pour apache avec PHP5.

Un peu ce paramétrage s'impose quand même : dans le fichier /etc/apache2/mods-available/userdir.conf, remplacer public_html par www.
En effet, sur notre serveur, chaque site aura un utilisateur associé avec un dossier www où les fichiers web seront déposés.

Activons quelques modules Apache :

a2enmod userdir
a2enmod rewrite
a2enmod gnutls
a2enmod expires


J'ai décider d'utiliser gnutls plutôt que ssl car il permet de définir un certificat SSL par domaine. Malheureusement, ça marche qu'à partir de IE7 sur Windows Vista. Pour les autres navigateurs, pas de problèmes sur les autres systèmes d'exploitation.

D'ailleurs Apache doit écouter sur le port 443 (https) pour que gnutls puisse entrer en jeu. On modifie le fichier /etc/apache2/ports.conf pour y ajouter :

NameVirtualHost *:443
Listen 443

(Attention, pas dans la section puisque nous n'utilisons pas ce module)

Puis paramétrons le temps de cache des certifications, dans le fichier /etc/apache2/mods-available/gnutls.conf on ajoute :

GnuTLSCacheTimeout 300


La configuration debian d'apache donne beaucoup d'informations sur le serveur. On enlève tout ça dans le fichier /etc/apache2/conf.d/security :

ServerTokens Prod
ServerSignature Off
TraceEnable Off


De la même façon, la configuration de base pour les optimisations concernant le cache utilisateur des fichiers n'est pas optimales. Pour l'améliorer, on ajoute le fichier /etc/apache2/conf.d/optimisations :

ExpiresActive On
ExpiresDefault "access plus 31 days"
FileETag none


Toujours dans l'idée de mettre un maximum de fichier dans /home, déplaçons le dossier /var/www :

mv /var/www/ /home/var/
ln -s /home/var/www/ /var/www


Enfin, Apache arrive avec un fichier html de base affichant simplement "It works". Plutôt que cela, je préfère définir un fichier php qui
redirige sur mon nom de domaine principale :

echo " /home/var/www/index.php
echo "header('location: http://domain.tld');" >> /home/var/www/index.php
rm /home/var/www/index.html


On a finit de jouer avec Apache, on recharge la configuration pour appliquer les changements :

/etc/init.d/apache2 force-reload


Passons à la suite, le serveur FTP.

Retour au sommaire.

Préparation (Serveur Web sur Debian Lenny)

UPDATE : voir la version à jour pour Debian Squeeze.

 

Ce premier billet va permettre de mettre en place notre espace de travail.

Sur debian, il existe vi et vim. Vim est beaucoup plus simple d'utilisation selon moi. Afin de pas s'embêter à taper toujours son nom complet, nous allons ajouter un alias de commande pour celui-ci. Profitons-en aussi pour ajouter d'autres alias utiles dans /root/.bashrc :

export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'
alias vi='vim'

Toutes les lignes sauf la dernière devrait déjà exister, mais commenter. Elles permettent juste d'avoir de jolis listing de fichiers.

Lorsque vous vous connaitrez pour la première fois à votre serveur web, ce sera sûrement en root. Les administrateurs n'aiment pas ça. Ca m'est un peu égal, mais j'ai quand même décidé de créer un nouvel utilisateur (toto) qui n'est en fait ni plus ni moins qu'un alias de root, puis de n'autoriser que lui.

echo "toto::0:0:root:/root:/bin/bash" >>
/etc/passwd echo "toto:*:14293:0:99999:7:::"
>> /etc/shadow passwd toto
shadowconfig on


Pas très commode pour ajouter un utilisateur, je vous l'accorde, mais de cette façon, aucun répertoire de créé, et l'utilisateur toto est tout de suite un alias de root.

Puis nous allons n'autoriser que ce nouvel utilisateur toto à se connecter en SSH sur notre serveur :

echo "" >> /etc/ssh/sshd_config
echo "AllowUsers toto" >> /etc/ssh/sshd_config


Et on redémarre SSH :

/etc/init.d/ssh force-reload


Si vous êtes sûr de ce que vous avez fait, vous pouvez vous déconnecter et vous reconnecter, avec toto cette fois-ci.

Sur Debian, les mises à jour sont automatisés par le système APT. Il suffit de renseigner les URLs où il doit récupérer les paquets. Il s'agit du fichier /etc/apt/sources.list. Il faut généralement y ajouté les backport, les volatile et les mises à jour de sécurité. Il peut ressembler à :

deb http://mir1.ovh.net/debian/ lenny main contrib non-free
deb-src http://mir1.ovh.net/debian/ lenny main contrib non-free

deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free

deb http://www.backports.org/debian lenny-backports main contrib non-free
deb-src http://www.backports.org/debian lenny-backports main contrib non-free


Pour pouvoir utiliser le backport, il faut la clé GPG du dépôt. Pour ce faire, il suffit d'installer debian-backports-keyring avec la commande :

apt-get install debian-backports-keyring


Comme on est sur Debian, commençons par une mise à jour de notre système, ça ne fera pas de mal :

apt-get update
apt-get dist-upgrade


Enfin, le serveur fourni par ovh est partitionné avec le / de 5 Go, et le reste sur le /home. Pour éviter tout problème dû à un grand nombre de fichiers, beaucoup de fichiers du serveur seront, dans notre installation, déposé dans /home/var. Commençons par y mettre les logs :

mkdir /home/var
mv /var/log /home/var
ln -s /home/var/log/ /var/log

Remarquez que l'on garde évidemment un lien symbolique pour ne pas avoir à modifier tous les fichiers de configuration...

S'en est fini pour la préparation du terrain, passons au serveur web.

Retour au sommaire.

Serveur Web sur Debian Lenny : Tutorial complet

UPDATE : voir la version à jour pour Debian Squeeze.

J'ai récemment acheté un serveur dédié chez OVH. Comme j'ai pris une version nue Debian, j'ai décidé de faire une série de billets pour fournir un tutoriel complet d'installation d'un serveur web basé sur Debian Lenny.

Ce tutoriel n'est en rien un gage de sécurité et je ne pourrai être tenu responsable pour un manquement quelconque.

Les prérequis pour ce tutoriel sont :
Connaissance de base de Debian/Linux : gestion des droits, apt, démons, etc...
Edition des fichiers avec vi (ou autre de votre choix)
Connaître SSH, comment l'utiliser, se connecter sur son serveur...

Cela étant dit, voici le sommaire de ce tutoriel :


Je tenterai d'expliquer toutes les configurations qui peuvent ne pas sembler claire au premier coup d'oeil.
Si besoin, les commentaires sont là !

Même chose pour vos remarques, suggestions, retour d'expérience, etc... utilisez les commentaires !

Le problème étant posé, passons aux choses sérieuses et à la première étape.