Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
|
lamp-install [2013/06/19 13:33] yannick [Tester PHP] |
— (Version actuelle) | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{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 ===== | ||
| - | <code>aptitude install apache2 php5 mysql-server php5-mysql</code> | ||
| - | 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 : | ||
| - | |||
| - | <code> | ||
| - | ** 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 | ||
| - | </code> | ||
| - | |||
| - | <code>/etc/init.d/apache2 restart</code> | ||
| - | |||
| - | ===== Tester PHP ===== | ||
| - | Créez le fichier /var/www/test.php contenant : **<? phpinfo(); ?>** | ||
| - | <code>nano /var/www/test.php</code> | ||
| - | taper le texte suivant: | ||
| - | <code><? phpinfo(); ?></code> | ||
| - | //Faire **Ctrl + O** pour enregistrer, puis E**ntrer** 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 ===== | ||
| - | <code>aptitude install phpmyadmin</code> | ||
| - | 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: | ||
| - | <code>apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName</code> | ||
| - | |||
| - | Il faut rajouter dans le fichier **/etc/apache2/apache2.conf** la ligne: | ||
| - | <code>ServerName localhost</code> | ||
| - | ===== Vistualhost ===== | ||
| - | Pour chaque sites hébergés il faut ajouter une ligne dans le fichier **/etc/hosts** | ||
| - | <code>nano /etc/hosts</code> | ||
| - | taper le texte suivant: | ||
| - | <code> | ||
| - | 127.0.0.1 monsite1.fr | ||
| - | 127.0.0.1 monsite2.fr | ||
| - | </code> | ||
| - | |||
| - | //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/** | ||
| - | <code> | ||
| - | mkdir /var/www/monsite1 | ||
| - | mkdir /var/www/monsite2 | ||
| - | </code> | ||
| - | Créer les fichiers de configuration pour chacun des sites dans **/etc/apache2/sites-available/** | ||
| - | |||
| - | (un modèle existe : **/etc/apache2/sites-available/default**) | ||
| - | <code>nano /etc/apache2/sites-available/monsite1</code> | ||
| - | |||
| - | taper le texte suivant: | ||
| - | <code> | ||
| - | <VirtualHost *>:80 | ||
| - | ServerAdmin webmaster@monsite1.fr | ||
| - | ServerName monsite1.fr | ||
| - | ServerAlias www.monsite1.fr | ||
| - | DocumentRoot /var/www/monsite1 | ||
| - | <Directory /> | ||
| - | Options FollowSymLinks | ||
| - | AllowOverride None | ||
| - | </Directory> | ||
| - | <Directory /var/www/monsite1> | ||
| - | Options Indexes FollowSymLinks MultiViews | ||
| - | AllowOverride None | ||
| - | Order allow,deny | ||
| - | allow from all | ||
| - | </Directory> | ||
| - | ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ | ||
| - | <Directory "/usr/lib/cgi-bin"> | ||
| - | AllowOverride None | ||
| - | Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch | ||
| - | Order allow,deny | ||
| - | Allow from all | ||
| - | </Directory> | ||
| - | 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/" | ||
| - | <Directory "/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 | ||
| - | </Directory> | ||
| - | </VirtualHost> | ||
| - | </code> | ||
| - | |||
| - | //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 : | ||
| - | <code> | ||
| - | a2ensite monsite1 | ||
| - | a2ensite monsite2 | ||
| - | </code> | ||
| - | Recharger la configuration d'apache | ||
| - | <code>/etc/init.d/apache2 reload</code> | ||
| - | |||
| - | 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 : | ||
| - | <code>nano /var/www/monsite1/index.html</code> | ||
| - | taper le texte suivant: | ||
| - | <code><h1>monsite1</h1></code> | ||
| - | //Faire **Ctrl + O** pour enregistrer, puis E**ntrer** pour valider le nom du fichier à écrire// | ||
| - | |||
| - | **//Ctrl + X// ** //pour fermer nano// | ||
| - | <code>nano /var/www/monsite2/index.html</code> | ||
| - | taper le texte suivant: | ||
| - | <code><h1>monsite2</h1></code> | ||
| - | //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 : | ||
| - | <code> | ||
| - | a2dissite monsite1 | ||
| - | /etc/init.d/apache2 reload | ||
| - | </code> | ||
| - | ====== 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 ===== | ||
| - | <code>aptitude install openssl</code> | ||
| - | ===== Créer un certificat ===== | ||
| - | <code>openssl req -x509 -nodes –days 365 -newkey rsa:1024 –out /etc/apache2/server.crt -keyout /etc/apache2/server.key</code> | ||
| - | |||
| - | __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 : | ||
| - | <code> | ||
| - | 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 | ||
| - | </code> | ||
| - | Protéger la clé privée : | ||
| - | <code>chmod 440 /etc/apache2/server.key</code> | ||
| - | ===== Activer le module SSL ===== | ||
| - | <code>a2enmod ssl</code> | ||
| - | ===== Ajout du port 443 en écoute ===== | ||
| - | Editer le fichier /etc/apache2/ports.conf | ||
| - | <code>nano /etc/apache2/ports.conf</code> | ||
| - | ajouter la ligne **(si elle n'est pas déjà présente) **: | ||
| - | <code>Listen 443</code> | ||
| - | //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 | ||
| - | <code>nano /etc/apache2/sites-available/monsite1</code> | ||
| - | 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 : | ||
| - | <code> | ||
| - | <VirtualHost *:443> | ||
| - | ServerAdmin webmaster@monsite1.fr | ||
| - | ServerName monsite1.fr | ||
| - | ServerAlias www.monsite1.fr | ||
| - | DocumentRoot /var/www/monsite1 | ||
| - | <Directory /> | ||
| - | Options FollowSymLinks | ||
| - | AllowOverride None | ||
| - | </Directory> | ||
| - | <Directory /var/www/monsite1> | ||
| - | Options Indexes FollowSymLinks MultiViews | ||
| - | AllowOverride None | ||
| - | Order allow,deny | ||
| - | allow from all | ||
| - | </Directory> | ||
| - | ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ | ||
| - | <Directory "/usr/lib/cgi-bin"> | ||
| - | AllowOverride None | ||
| - | Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch | ||
| - | Order allow,deny | ||
| - | Allow from all | ||
| - | </Directory> | ||
| - | 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/" | ||
| - | <Directory "/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 | ||
| - | </Directory> | ||
| - | SSLEngine on | ||
| - | SSLCertificateFile /etc/apache2/server.crt | ||
| - | SSLCertificateKeyFile /etc/apache2/server.key | ||
| - | </VirtualHost> | ||
| - | </code> | ||
| - | Faire //**Ctrl + O** // pour enregistrer, puis //**Entrer** // pour valider le nom du fichier à écrire | ||
| - | |||
| - | **//Ctrl + X// ** //pour fermer nano// | ||
| - | ===== Recharger la configuration ===== | ||
| - | <code>/etc/init.d/reload</code> | ||
| - | ===== Test ===== | ||
| - | Le site doit maintenant être accessible à l'adresse : [[https://monsite1.fr/|https://monsite1.fr]] | ||