Debian - Apache/MySQL
Un article de Wiki.OmBreNoiRe.net.
|
Sommaire → Install → Aptitude → Locales → SSHd → Shorewall → 6wall → DHCP3-server → Bind9 → VsFTPd → Apache/MySQL → Mail → BackupManager |
Sommaire |
Introduction
Pour lire les pages web, il faut un daemon ici nous allons prendre Apache et pour la base de donnée MySQL géré par phpmyadmin.
Grâce à Debian, l'installation est très rapide, et la configuration aussi.
Encore une fois, c'est du presque copier-coller, à adapter, mais pour plus de détails sur les (nombreuses) possibilités qu'offre Apache et MySQL, google est votre ami :)
Installation
Tout se trouve sur les dépôts officiels Debian, sauf un module pour Apache qui est le ModSecurity qui a été retiré pour cause de problème de licence (Debian est très à cheval sur la GPL).
Heureusement, une âme charitable (Alberto Gonzalez Iniesta) compile les paquets et les rends disponibles sur son dépôt, il faut donc rajouter la ligne suivante en haut de votre fichier /etc/apt/sources.list :
deb http://etc.inittab.org/~agi/debian/libapache-mod-security2/etch/ ./
Je conserve, une copie de ces paquets sur mon dépôt perso http://debian.ombrenoire.net. Si le site de M. Alberto Gonzalez Iniesta venez à être indisponible sachez que vous pouvez prendre les fichiers chez moi. Mais il vaut mieux garder sont dépôt en priorité car je ne suis pas sûr de pouvoir rester autant à jour que lui :)
Je vais vous faire installer une série de paquet, tous n'auront pas d'utilité dans l'immédiat, et d'autres dépendront de vos pages web, mais comme vous ne savez pas vraiment ce qui va être herbergé l'avance il vaut mieux être prêt à toutes les éventualités !
On lance les commandes suivantes (il y aura beaucoup de paquets par dépendance, c'est normal):
root@monordi:~# aptitude install libapache2-mod-php5 libapache2-mod-security2 libapache2-mod-apreq2 libapache2-mod-perl2 libapache2-request-perl libapache2-svn
root@monordi:~# aptitude install php5 php5-curl php5-dev php5-imagick php5-imap php5-mcrypt php5-mhash libmagic-dev
root@monordi:~# aptitude install php-pear aspell-fr php5-pspell php5-xmlrpc
root@monordi:~# aptitude install mysql-server mysql-client php5-mysql libdbd-mysql-perl
root@monordi:~# aptitude install phpmyadmin
root@monordi:~# pear channel-update pear.php.net && pear upgrade-all
root@monordi:~# pear install Net_SMTP
root@monordi:~# pear install Mail_mime
root@monordi:~# pear install MDB2
root@monordi:~# pear install MDB2#mysqli
root@monordi:~# pear install MDB2#mysql
Si vous avez une erreur GPG après aptitude update et que vous ne savez pas comment la résoudre, la solution se trouve ici !
Si vous voulez vérifier que PEAR est bien installé faites ceci :
Installed packages, channel pear.php.net: ========================================= Package Version State
Archive_Tar 1.3.2 stable Console_Getopt 1.2.3 stable Fileinfo 1.0.4 stable MDB2 2.4.1 stable MDB2_Driver_mysql 1.4.1 stable MDB2_Driver_mysqli 1.4.1 stable Mail_Mime 1.5.2 stable Mail_mimeDecode 1.5.0 stable Net_SMTP 1.3.1 stable Net_Socket 1.0.8 stable PEAR 1.7.2 stable Structures_Graph 1.0.2 stable
Configuration d'Apache
Fichier /etc/php5/apache2/conf.d/fileinfo.ini
Créer ce fichier avec Emacs et ajoutez-y :
extension=fileinfo.so
Certificat SSL
Afin de pouvoir vous connecter sur votre serveur avec une adresse débutant par https://, il est nécessaire de créer votre certificat SSL.
Ce certificat sera auto-signé, en conséquence il sera suspect aux yeux des navigateurs tels que Internet Explorer ou bien encore Firefox. Si vous voulez ne pas avoir ces avertissements (pas bien grâve d'ailleurs), vous pouvez acheter un certificat signé auprès de prestataires dédiés
Voici les commandes à suivre pour créer ce certificat
root@monordi:~# cd /etc/apache2/ssl
root@monordi:~# openssl genrsa -out certificat.key 1024
Generating RSA private key, 1024 bit long modulus
.....................++++++
...............++++++
e is 65537 (0x10001)
root@monordi:~# openssl req -new -x509 -days 365 -key certificat.key -out certificat.crt
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:France
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MonOrdi.MonDomaine.net - HTTPS
Organizational Unit Name (eg, section) []:MonOrdi.MonDomaine.net - HTTPS
Common Name (eg, YOUR name) []:1.2.3.4
Quelques remarques :
- Le certificat est fait pour 365 jours (à modifier dans la ligne de commande si besoin) en 1024bits
- Les champs surlignés sont à adapter, en particulier 1.2.3.4 à remplacer par votre IP.
Fichier /etc/apache2/httpd.conf
Tout d'abord on lance les commandes suivantes :
root@monordi:~# touch /var/log/apache2/modsec_audit.log
root@monordi:~# chgrp adm /var/log/apache2/modsec_debug.log
Puis on édite le fichier /etc/apache2/httpd.conf
# Certificat SSL SSLCertificateFile /etc/apache2/ssl/certificat.crt SSLCertificateKeyFile "/etc/apache2/ssl/certificat.key" # Basic configuration options SecRuleEngine On SecRequestBodyAccess On SecResponseBodyAccess Off # Handling of file uploads # TODO Choose a folder private to Apache. # SecUploadDir /opt/apache-frontend/tmp/ SecUploadKeepFiles Off # Debug log SecDebugLog /var/log/apache2/modsec_debug.log SecDebugLogLevel 0 # Serial audit log SecAuditEngine RelevantOnly SecAuditLogRelevantStatus ^5 SecAuditLogParts ABIFHZ SecAuditLogType Serial SecAuditLog /var/log/apache2/modsec_audit.log # Maximum request body size we will # accept for buffering #SecRequestBodyLimit 131072 # Store up to 128 KB in memory #SecRequestBodyInMemoryLimit 131072 # Buffer response bodies of up to # 512 KB in length #SecResponseBodyLimit 524288
Les lignes qui débutent par # sont des commentaires, j'ai donc désactivé volontairement certaines fonctionnalités, à vous de modifier en fonction de votre paranoïa :)
Fichier /etc/apache2/sites-available/default
Ce fichier est LE fichier qui va contenir la configuration pour chacun des sites que vous voulez hébergé. Modèle:Banniere Attention
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
deny from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName www.monsite.net
ServerAdmin webmaster@monsite.net
DocumentRoot /var/www/www.monsite.net/
<Directory /var/www/www.monsite.net/>
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName phpmyadmin.monsite.net
ServerAdmin webmaster@monsite.net
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://phpmyadmin.monsite.net/$1 [L,R]
</IfModule>
</VirtualHost>
Quelques remarques :
- /var/www/www.monsite.net/ existe et contient votre site internet (/var/www est le dossier par défaut où vous devez mettre vos sites internet).
- l'email webmaster@monsite.net existe et sera affichée en cas de problème technique avec votre site par apache.
- la première partie du fichier ne doit pas être modifiée, elle permet d'interdire la connexion au serveur apache juste en tapant votre IP dans la barre d'adresse.
- la derniere partie est un exemple permettant de rediriger automatiquement à partir de http://phpmyadmin.monsite.net à httpS://phpmyadmin.monsite.net
Fichier /etc/apache2/sites-available/default-ssl
Ce fichier est LE fichier qui va contenir la configuration pour chacun des sites que vous voulez hébergé en utilisant le certificat SSL (accessible grâce à https://. Modèle:Banniere Attention
NameVirtualHost *:443
<VirtualHost *:443>
ServerAdmin webmaster@localhost
SSLEngine on
DocumentRoot /var/www/
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
deny from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
#RedirectMatch ^/$ /apache2-default/
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName phpmyadmin.monsite.net
ServerAdmin webmaster@monsite.net
SSLProtocol All
DocumentRoot /var/www/phpmyadmin.monsite.net/
<Directory "/var/www/phpmyadmin.monsite.net/">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Quelques remarques :
- /var/www/phpmyadmin.monsite.net/ existe déjà, il contient phpmyadmin qui vous permettra de gérer votre base de donnée.
- l'email webmaster@monsite.net existe et sera affichée en cas de problème technique avec votre site par apache.
- la première partie du fichier ne doit pas être modifiée, elle permet d'interdire la connexion au serveur apache juste en tapant votre IP dans la barre d'adresse.
Redémarrage du Daemon
Et enfin pour que le changement de configuration soit pris en compte :
Il faut toujours faire cette commande après avoir modifié un fichier d'apache, donc si vous avez ajouté un site dans le fichier /etc/apache2/sites-available/default, n'oubliez pas de reloader apache !
Configuration de MySQL
Rien de plus simple pour MySQL, il suffit de vous connecter sur https://phpmyadmin.monsite.net (à adapter bien évidemment en fonction de votre domaine).
Le login est root sans mot de passe. Il faudra donc très rapidement définir un mot de passe.
Conclusion
Vous disposez donc désormais d'une configuration sécurisée d'Apache/MySQL, il existe énormément de documentation et de site web qui en parle s'il vous reste des points à éclaircir !
Normalement tout ce qu'il vous reste à faire est d'ajouter vos sites web dans les fichiers décrits plus haut, et si besoin de configuration la base MySQL avec phpmyadmin.
Vous pouvez passer à la prochaine étape, à savoir l'installation/configuration compléte du serveur de Mail (Postfix SMTP / Courier POP3-IMAP / Roundcube) !

