Un serveur LAMP est un serveur Web basé sur Apache
L'acronyme LAMP signifie Linux Apache MySQL PHP :
Pour d'autres solutions avec Lighttpd et Sqlite (moins gourmands en ressources) :
L'installation se fait nécessairement en ligne de commande, pour pouvoir répondre aux demandes.
...@...:~ $ sudo apt update ...@...:~ $ sudo apt upgrade ...@...:~ $ sudo apt dist-upgrade ...@...:~ $ sudo apt autoremove ...@...:~ $ sudo apt autoclean
...@...:~ $ sudo apt install {apache2,php,php-{pear,mysql},libapache2-mod-php,mariadb-server}
<?php phpinfo(); ?>
...@...:~ $ mysql -u admin -pVotreMotDePasse Welcome to the MariaDB monitor. Commands end with ; or \g. ...MariaDB [(none)]> quit;Bye ...@...:~ $
...@...:~ $ sudo cp /etc/apache2/sites-available/000-default /etc/apache2/sites-available/000-default.original
DocumentRoot /var/www/html
par
DocumentRoot /media/[DISQUE]/www
<Directory /var/www/>
par
<Directory /media/[DISQUE]/www/html/>
...@...:~ $ sudo apachectl restart
...@...:~ $ sudo a2enmod rewrite vhost_alias ...@...:~ $ sudo apachectl restart
(...) ServerName monsite.tld
...@...:~ $ sudo a2enconf monsite.tld ...@...:~ $ sudo apache2ctl restart
Exemple avec localhost :
ServerName localhost <Directory /> Options Indexes FollowSymLinks Multiviews AllowOverride All Require all denied </Directory> <Directory /var/www/html/> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory>
...@...:~ $ sudo a2enconf localhost ...@...:~ $ sudo apache2ctl restart
Vous pouvez installer des modules de PHP.
Pour lister les modules PHP5 disponibles, tapez ceci :
$ apt-cache search --names-only ^php-
cas particulier du Raspberry Pi
Installez ceux qui vous intéressent, en particulier :
$ sudo apt install php-dev php-gd php-curl php-pear dh-php dh-make
cas particulier du Raspberry Pi
Vous pouvez aussi installer les paquets :
$ sudo apt install php-cgi php-idn php-imagick php-imap php-intl php-mcrypt php-memcache php-ming php-ps php-pspell php-recode php-snmp php-tidy php-xmlrpc php-xsl
Nouveautés de la version 2 de Apache
Pour la configuration d'Apache 2, voir le paragraphe Configuration de Apache 2 de la page qui présente Apache 2.
Pour permettre à chaque utilisateur d'avoir son propre site dans public_html, voir la page Apache 2 : un serveur web HTTP.
Éditez avec les droits d'administration le fichier /etc/apache2/conf-available/security.conf pour mettre à Off les lignes :
ServerSignature Off (...) TraceEnable Off
Faites une copie de sauvegarde du fichier /etc/apache2/sites-available/default en la renommant, par exemple, default.original
, puis éditez avec les droits d'administration le fichier /etc/apache2/sites-available/default pour le modifier comme ceci :
$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/default.original
Pour sécuriser le site, il faut d'abord rendre inaccessible de l'extérieur la racine et spécifier les accès autorisés à cette racine.
Créez avec les droits d'administration le fichier /etc/apache2/conf-available/local pour y écrire :
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Require all deny Allow from 127.0.0.1 # local Allow from 192.168.0.0/24 # reseau </Directory>
source : http://doc.ubuntu-fr.org/tutoriel/lamp_repertoires_de_travail
Ainsi, seule la machine locale (127.0.0.1) et celles du réseau local (à condition que celui-ci utilise l'adresse 192.168.0.0) auront accès aux pages web situées dans le dossier /var/www/.
Le fichier /etc/hosts donne les correspondances entre les adresses IP et les noms de site.
Une petite modification est nécessaire pour un bon fonctionnement de Apache.
127.0.0.1 localhost ... 127.0.0.1 nom_réseau_du_pc
en la ligne :
127.0.0.1 localhost.localdomain localhost nom_réseau_du_pc
...@...:~ $ sudo apache2ctl restart
Dans nos exemples, nous parlerons :
Les hôtes virtuels d'Apache permettent d'exécuter sur le même ordinateur :
Pour chaque hôte virtuel, on crée un fichier de configuration dans /etc/apache2/sites-available. Le fichier config configure l'ensemble.
Activez les hôtes virtuels en lançant en ligne de commande :
$ sudo a2enmod vhost_alias Enabling module vhost_alias. To activate the new configuration, you need to run: service apache2 restart
Pour créer un hôte virtuel Apache, deux étapes :
<VirtualHost 10.1.2.3:80> ServerAdmin webmaster@host.example.com DocumentRoot "/www/docs/host.example.com" ServerName host.example.com ErrorLog "logs/host.example.com-error_log" TransferLog "logs/host.example.com-access_log" </VirtualHost>
<VirtualHost *:80> ServerName www.monsite.com ServerAlias monsite.com ServerAdmin admin@mail.fr VirtualDocumentRoot /var/www/html/monsite.com <Directory /> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all denied </Directory> <Directory /var/www/html/monsite.com> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> </VirtualHost>
ServerName www.exemple.com ServerAlias exemple.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html/exemple.com <Directory "/"> Require all denied </Directory> <Directory "/var/www/html/exemple.com"> Require all granted </Directory>
Pour cela :
Supposons que nous voulons créer le sous-domaine doc.localhost
tel qu'en utilisant l'adresse http://doc.localhost, on accède au répertoire /srv/www/dokuwiki (la racine a été déplacée en /srv/www et redirigée vers le home selon la méthode du paragraphe 2.
On commence par créer un sous-répertoire pour le sous-domaine :
$ sudo mkdir /srv/www/dokuwiki
(attention, il faut être root, d'où l'utilité de rediriger…)
ou plus simplement, si on a redirigé vers le home, on crée le sous-répertoire dokuwiki dans le répertoire ~/www (donc ~/www/dokuwiki)
Puis on modifie le fichier /etc/hosts en ajoutant à la fin la ligne :
127.0.0.1 doc.localhost
Faire une copie du fichier /etc/apache2/sites-available/default en la nommant par exemple doc.localhost :
$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/doc.localhost
Éditez avec les droits d'administration le fichier /etc/apache2/sites-available/doc.localhost pour y ajouter les lignes :
<VirtualHost *:80> DocumentRoot "/srv/www/html" ServerName localhost </VirtualHost> <VirtualHost *:80> DocumentRoot "/srv/www/html/dokuwiki" ServerName doc.localhost </VirtualHost>
Il ne reste plus qu'à enregistrer ce nouveau fichier et à relancer apache :
$ sudo a2ensite doc.localhost $ sudo /etc/init.d/apache2 reload
Le contenu de dokuwiki s'affiche désormais en tapant http://doc.localhost.
Voir la page : Apache 2 : sous-domaines (serveurs virtuels)
Pour créer un hôte virtuel, vous devrez modifier les lignes d'hôte virtuel, fournies à titre d'exemple, dans le fichier httpd.conf, ou créer votre propre section d'hôte virtuel. N'oubliez pas que vous ne pouvez utiliser des hôtes virtuels basés sur le nom qu'avec votre serveur Web non sécurisé ; vous devrez utiliser des hôtes virtuels basés sur adresse IP si vous avez besoin d'autres hôtes virtuels compatibles SSL. Les exemples de lignes se présentent comme suit :
<VirtualHost ip.address.of.host.some_domain.com> ServerAdmin webmaster@host.some_domain.com DocumentRoot /www/docs/host.some_domain.com ServerName host.some_domain.com ErrorLog logs/host.some_domain.com-error_log CustomLog logs/host.some_domain.com-access_log common </VirtualHost>
Ajoutez les informations correctes concernant votre ordinateur et/ou votre hôte virtuel à chaque ligne.
Vous devrez aussi supprimer le commentaire de l'une des lignes NameVirtualHost dans le fichier httpd.conf :
NameVirtualHost 12.34.56.78:80 #NameVirtualHost 12.34.56.78
Remplacez le l'exemple d'adresse IP par l'adresse IP (et le port, si nécessaire) correspondant à cet hôte virtuel.
Pour qu'un hôte virtuel travaille spécifiquement pour un port donné ajoutez le numéro de port à la première ligne de la configuration de l'hôte virtuel omme ceci :
<VirtualHost adresse_ip_du_serveur:12331>
Cette ligne créerait un hôte virtuel scrutant le port 12331. Ajoutez l'adresse IP de votre serveur et substituez le numéro de port que vous voulez utiliser à 12331 dans l'exemple précédent.
Sous les lignes Listen du fichier httpd.conf, ajoutez une ligne comme la suivante, qui donnera pour instruction au serveur Web de scruter le port 12331 :
Listen 12331
Installez le module vhost_alias :
...@...:~ $ sudo a2enmod vhost_alias ...@...:~ $ /etc/init.d/apache2 reload
Tout se passe dans le répertoire /etc/apache2/sites-available/ qui contient un fichier de configuration par serveur.
Le serveur par défaut est défini par le fichier default.
Nous prendrons comme exemple le sous-domaine doc.framboise.home pour un dokuwiki de racine /media/Reservoirs/www/doc.
# obtenir le nom du serveur à partir de l'entête "Host:" UseCanonicalName Off <VirtualHost *:80> DocumentRoot /media/Reservoirs/www ServerName framboise.home ServerAlias *.framboise.home VirtualDocumentRoot /media/Reservoirs/%-3 # format de journal avec l'appel LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon CustomLog access.log vcommon </VirtualHost> # réglages pour les répertoires du dokuwiki <Directory /media/Reservoirs/www/doc> Order deny,allow allow from all </Directory> <LocationMatch "/doc/(data|conf|bin|inc)/"> Order allow,deny Deny from all Satisfy All </LocationMatch>
Ici, %-3 permet d'éviter les problèmes dus à www.
...@...:~ $ sudo a2ensite framboise.home ...@...:~ $ sudo service apache2 restart
Pour créer un sous-domaine (par ex. doc.framboise), nous allons créer un fichier doc.framboise dans ce répertoire.
192.168.0.100 doc.framboise
...@...:~ $ sudo /etc/init.d/apache2 restart
...@...:~ $ scp framboise:/etc/apache2/sites-available/default /etc/apache2/sites-available/doc.framboise
NameVirtualHost doc.framboise <VirtualHost doc.framboise> ServerAdmin webmaster@domaine.fr ServerName www.doc.framboise ServerAlias doc.framboise DocumentRoot /media/Reservoirs/www/dokuwiki # réglages pour le répertoire <Directory /media/Reservoirs/www/dokuwiki> Order deny,allow allow from all </Directory> <LocationMatch "/dokuwiki/(data|conf|bin|inc)/"> Order allow,deny Deny from all Satisfy All </LocationMatch> </VirtualHost>
...@...:~ $ sudo a2ensite doc.framboise ...@...:~ $ sudo /etc/init.d/apache2 restart
NameVirtualHost doc.framboise NameVirtualHost 1.2.3.4 <VirtualHost 1.2.3.4 doc.framboise> ServerAdmin webmaster@domaine.fr ServerName www.doc.framboise ServerAlias doc.framboise DocumentRoot /media/Reservoirs/www/dokuwiki # réglages pour le répertoire <Directory /media/Reservoirs/www/dokuwiki> Order deny,allow allow from all </Directory> <LocationMatch "/dokuwiki/(data|conf|bin|inc)/"> Order allow,deny Deny from all Satisfy All </LocationMatch> </VirtualHost>
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin admin@domaine.com ServerName www.domaine.com ServerAlias domaine.com UseCanonicalName Off DocumentRoot /websites/www.domaine.com <Directory /websites/www.domaine.com> Options Indexes FollowSymlinks AllowOverride none Order deny,allow Allow from all </Directory> ErrorLog /var/log/apache2/www_error.log LogLevel warn CustomLog /var/log/apache2/www_access.log combined ServerSignature On </VirtualHost>
UseCanonicalName Off → le nom du serveur est déduit du contenu de l'entête Host: de la requête0.
<VirtualHost *:80> ServerName sql.domaine.com ServerAdmin "admin@domaine.com" DocumentRoot /websites/sql.domaine.com <Directory /websites/sql.domaine.com> Options Indexes FollowSymlinks AllowOverride none Order deny,allow Allow from all </Directory> ErrorLog /var/log/apache2/sql_error.log LogLevel warn CustomLog /var/log/apache2/sql_access.log combined </VirtualHost>
<VirtualHost *:80> ServerName dev.domaine.com ServerAdmin "admin@domaine.com" DocumentRoot /websites/dev.domaine.com <Directory /websites/dev.domaine.com> Options Indexes FollowSymlinks AllowOverride none Order deny,allow Allow from all </Directory> ErrorLog /var/log/apache2/dev_error.log LogLevel warn CustomLog /var/log/apache2/dev_access.log combined </VirtualHost>
<VirtualHost *:80> ServerName phpmyadmin.domaine.com ServerAdmin "admin@domaine.com" DocumentRoot /websites/phpmyadmin.domaine.com <Directory /websites/phpmyadmin.domaine.com> Options Indexes FollowSymlinks AllowOverride none Order deny,allow Allow from all </Directory> ErrorLog /var/log/apache2/phpmyadmin_error.log LogLevel warn CustomLog /var/log/apache2/phpmyadmin_access.log combined </VirtualHost>
<VirtualHost *:80> ServerName blog.domaine.com ServerAdmin "admin@domaine.com" DocumentRoot /websites/blog.domaine.com <Directory /websites/blog.domaine.com> Options Indexes FollowSymlinks AllowOverride none Order deny,allow Allow from all </Directory> ErrorLog /var/log/apache2/blog_error.log LogLevel warn CustomLog /var/log/apache2/blog_access.log combined </VirtualHost>
Pour rendre accessible votre serveur depuis internet, allez dans la gestion de votre box (livebox, freebox, etc.) et mettez en place la redirection des ports.
Nous allons configurer le routeur pour autoriser les connexions ssh et des trafics Web grâce à son pare-feu au Raspberry Pi.
Par sécurité, le mot de passe de l'utilisateur pi doit avoir été changé et éventuellement un nouvel utilisateur mis en place.
Il faut rediriger les adresses parvenant sur le routeur (la freebox) vers le Raspberry Pi.
Les ports à rediriger en TCP sont :
Lighttpd, sont installés. Nous allons optimiser lighttpd pour le Raspberry Pi en installant PHP APC, en activant fast cgi et en mettant en place la compression avec gzip.
Tout d'abord, Ouvrir avec les droits d'administration le fichier /etc/lighttpd/lighttpd.conf et remplir la section server.modules avec les modules suivants :
«code - > server.modules = (
#"mod_rewrite", "mod_redirect", "mod_alias", "mod_access", #"mod_auth", #"mod_status", #"mod_simple_vhost", #"mod_evhost", #"mod_userdir", #"mod_secdownload", #"mod_fastcgi", #"mod_proxy", #"mod_cgi", #"mod_ssi", #"mod_compress", #"mod_usertrack", #"mod_expire", #"mod_rrdtool", #"mod_accesslog"
) </code>
Le site par défaut de notre serveur LAMP utilise le protocole non-sécurisé HTTP et écoute sur le port 80.
Par souci de sécurité et de confidentialité, il peut être intéressant de le passer en HTTPS qui écoute sur le port 443.
Le plus rapide : utiliser les certificats SSL par défaut d’Apache 2.
Par défaut, Apache 2 contient deux sites préconfigurés : default et default-ssl qui pointent tous les deux vers le répertoire « /var/www » mais le premier écoute sur le port 80 (HTTP) et le second sur le port 443 (HTTPS).
Dans la configuration d’origine, seul le site default est actif, ce qui permet d’accéder à la page It Works ! après l’installation.
Pour activer l'accès en https :
Voici les commandes à saisir :
...@...:~ $ sudo a2enmod ssl ...@...:~ $ sudo a2ensite default-ssl.conf ...@...:~ $ sudo apachectl restart
</code>Pas besoin de générer de certificat SSL : il y en a déjà un par défaut (valable 10 ans). Son emplacement peut se lire dans le fichier /etc/apache2/sites-available/default-ssl
Créez les répertoires voulus : ici, un répertoire public et un répertoire privé :
$ mkdir /srv/www/html/public $ mkdir /srv/www/html/private
Donner les droits utilisateur :
$ sudo chown -R $USER:users /srv/www
Pour accéder à ces répertoires, il faut un alias de la forme : http://nom_de_domaine.tld/nom_de_redirection
Il faut donc ajouter deux alias, un pour public et un pour private.
Éditez avec les droits d'administration le fichier /etc/apache2/sites-available/default pour ajouter :
... ## ZONE PUBLIQUE Alias /public /srv/www/html/public <Directory /srv/www/html/public> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> ## ZONE PRIVEE Alias /private /srv/www/html/private <Directory /srv/www/html/private> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all deny Allow from 127.0.0.1 # Local Allow from 192.168.1.0/24 # Réseau Allow from .w3.org # W3C Allow from sandbox.paypal.com # Paypal </Directory>
Cela règle les accès à la zone privée.
Basé sur « http://howto.landure.fr_gnu-linux_debian-4-0-etch_installer-et-configurer-apache-2-sur-debian-4-0-etch » par Landure.