{{tag>debian lamp apache mysql php web tutoriel}} ====== INSTALLATION D'UN SERVEUR LAMP SOUS DEBIAN 6 ====== ====== Pré requis ====== Installation de Debian 6 ====== Installation du serveur LAMP ====== ===== Description des paquets à installer ===== Le paquet apache2 installe le serveur Apache 2. Le paquet mysql-server installe le serveur MySQL. Le paquet php5 installe le langage PHP 5 et, grâce aux dépendances, le module d'intégration dans Apache (paquet libapache2-mod-php5). Le paquet php5-mysql installe les mécanismes de communication e ntre PHP 5 et MySQL. ===== Installation ===== aptitude install apache2 php5 mysql-server php5-mysql Entrer un mot de passe pour l'utilisateur “root” de MySQL {{:file:image002.jpg?nolink&642x386}} Entrer à nouveau ce mot de passe pour confirmer {{:file:image004.jpg?nolink&642x386}} ====== Tests ====== ===== Tester apache ===== Entrer l'adresse de votre serveur dans un navigateur [[http://localhost|http://localhost]] ou [[http://adresse_ip_du_serveur|http://adresse_ip_du_serveur]] Une page contenant ce texte doit s'afficher : ** It works! ** This is the default web page for this server. The web server software is running but no content has been added, yet. Si ce n'est pas le cas redémarrer apache /etc/init.d/apache2 restart ===== Tester PHP ===== Créez le fichier /var/www/test.php contenant : **** nano /var/www/test.php taper le texte suivant: //Faire **Ctrl + O** pour enregistrer, puis **Entrer** pour valider le nom du fichier à écrire// **//Ctrl + X// ** //pour fermer nano// Entrer l'adresse de votre serveur dans un navigateur [[http://localhost/test.php|http://localhost/test.php]] ou [[http://adresse_ip_du_serveur/test.php|http://adresse_ip_du_serveur/test.php]] Une page contenant les infos sur PHP doit s'afficher {{:file:image006.jpg?nolink&540x666}} ====== Administration ====== ===== Installation de PHPmyadmin ===== aptitude install phpmyadmin Sélectionner le serveur web précédemment installé : Apache {{:file:image008.jpg?nolink&642x386}} Répondre **Oui ** à la question : Faut-il configurer la base de données de phpmyadmin avec dbconfig-common ? {{:file:image010.jpg?nolink&642x386}} Entrer le mot de passe administrateur de MySQL (celui créé à l'installation de MySQL) {{:file:image012.jpg?nolink&642x386}} Entrer un mot de passe de connexion MySQL pour phpmyadmin {{:file:image014.jpg?nolink&642x386}} Confirmer ce mot de passe {{:file:image016.jpg?nolink&642x386}} Dans un navigateur, entrer l'adresse de phpmyadmin sur votre serveur [[http://localhost/phpmyadmin|http://localhost/phpmyadmin]] ou [[http://adresse_ip_du_serveur/phpmyadmin|http://adresse_ip_du_serveur/phpmyadmin]] La page d'authentification de phpmyadmin doit s'afficher Se connecter avec le compte root et le mot de passe définit à l'installation de MySQL {{:file:image018.jpg?nolink&354x344}} ====== Paramétrage Apache ====== Source : [[http://doc.ubuntu-fr.org/tutoriel/virtualhosts_avec_apache2|http://doc.ubuntu-fr.org/tutoriel/virtualhosts_avec_apache2]] Après redémarrage d'Apache (**/etc/init.d/apache2 restart**) le message suivant apparaît: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName Il faut rajouter dans le fichier **/etc/apache2/apache2.conf** la ligne: ServerName localhost ===== Vistualhost ===== Pour chaque sites hébergés il faut ajouter une ligne dans le fichier **/etc/hosts** nano /etc/hosts taper le texte suivant: 127.0.0.1 monsite1.fr 127.0.0.1 monsite2.fr //Faire **Ctrl + O** pour enregistrer, puis E**ntrer** pour valider le nom du fichier à écrire// **//Ctrl + X// ** //pour fermer nano// Créer les répertoires correspondant à chaque site dans **/var/www/** mkdir /var/www/monsite1 mkdir /var/www/monsite2 Créer les fichiers de configuration pour chacun des sites dans **/etc/apache2/sites-available/** (un modèle existe : **/etc/apache2/sites-available/default**) nano /etc/apache2/sites-available/monsite1 taper le texte suivant: :80 ServerAdmin webmaster@monsite1.fr ServerName monsite1.fr ServerAlias www.monsite1.fr DocumentRoot /var/www/monsite1 Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all ErrorLog ${APACHE_LOG_DIR}/monsite1_error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /doc/ "/usr/share/doc/" Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 //Faire **Ctrl + O** pour enregistrer, puis E**ntrer** pour valider le nom du fichier à écrire// **//Ctrl + X// ** //pour fermer nano// Faire la même chose avec les autres sites Activer les sites : a2ensite monsite1 a2ensite monsite2 Recharger la configuration d'apache /etc/init.d/apache2 reload Vos sites doivent maintenant être accessibles ([[http://monsite1.fr|http://monsite1.fr]], [[http://monsite2.fr|http://monsite2.fr]] ) N'oublier pas de créer une page sur chacun des sites pour tester : nano /var/www/monsite1/index.html taper le texte suivant:

monsite1

//Faire **Ctrl + O** pour enregistrer, puis E**ntrer** pour valider le nom du fichier à écrire// **//Ctrl + X// ** //pour fermer nano// nano /var/www/monsite2/index.html taper le texte suivant:

monsite2

//Faire **Ctrl + O** pour enregistrer, puis E**ntrer** pour valider le nom du fichier à écrire// **//Ctrl + X// ** //pour fermer nano// Pour désactiver un site : a2dissite monsite1 /etc/init.d/apache2 reload ====== Sécuriser avec OpenSSL (https) ====== [[http://doc.ubuntu-fr.org/tutoriel/securiser_apache2_avec_ssl|http://doc.ubuntu-fr.org/tutoriel/securiser_apache2_avec_ssl]] ===== Installer OpenSSL ===== aptitude install openssl ===== Créer un certificat ===== openssl req -x509 -nodes –days 365 -newkey rsa:1024 –out /etc/apache2/server.crt -keyout /etc/apache2/server.key __Explications : __ - x509 -nodes donne le type de certificat voulu - days 365 indique la durée de validité (en jours) de votre certificat - newkey rsa:1024 demande une clé RSA de 1024 bits - d'après la doc apache, il est déconseillé de créer une clé plus grosse pour des histoires de compatibilité - out /etc/apache2/server.crt est le chemin de votre certificat - keyout /etc/apache2/server.key est le chemin de la clé privée Répondre aux questions : Country Name (2 letter code) [AU]: FR State or Province Name (full name) [Some-State]:FRANCE Locality Name (eg, city) []:TOULOUSE Organization Name (eg, company) [Internet Widgits Pty Ltd]:SOCIETE Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:mondomaine1.fr Email Address []:admin@mondomaine1.fr Protéger la clé privée : chmod 440 /etc/apache2/server.key ===== Activer le module SSL ===== a2enmod ssl ===== Ajout du port 443 en écoute ===== Editer le fichier /etc/apache2/ports.conf nano /etc/apache2/ports.conf ajouter la ligne **(si elle n'est pas déjà présente) **: Listen 443 //Faire **Ctrl + O** pour enregistrer, puis E**ntrer** pour valider le nom du fichier à écrire// **//Ctrl + X// ** //pour fermer nano// ===== Fichier de configuration ===== Ouvrir le fichier de configuration du site à sécuriser nano /etc/apache2/sites-available/monsite1 Modifier le port **80 ** **= 443** Ajouter les directives **SSLEngine** on : permet d'activer le moteur SSL au sein d'un hôte virtuel, Elle peut prendre deux arguments –> on/off **SSLCertificateFile** /etc/apache2/server.crt : définit le certificat authentifiant le Serveur auprès des clients **SSLCertificateKeyFile** /etc/apache2/server.key : définit la clé privée du Serveur utilisée pour signer l'échange de clé entre le client et le serveur Ce qui donne : ServerAdmin webmaster@monsite1.fr ServerName monsite1.fr ServerAlias www.monsite1.fr DocumentRoot /var/www/monsite1 Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all ErrorLog ${APACHE_LOG_DIR}/monsite1_error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /doc/ "/usr/share/doc/" Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 SSLEngine on SSLCertificateFile /etc/apache2/server.crt SSLCertificateKeyFile /etc/apache2/server.key Faire //**Ctrl + O** // pour enregistrer, puis //**Entrer** // pour valider le nom du fichier à écrire **//Ctrl + X// ** //pour fermer nano// ===== Recharger la configuration ===== /etc/init.d/reload ===== Test ===== Le site doit maintenant être accessible à l'adresse : [[https://monsite1.fr/|https://monsite1.fr]]