Table des matières
XAMPP : un serveur LAMP (Apache + MariaDB + PHP + Perl)
Le paquet open source XAMPP est un serveur LAMP complet et préconfiguré. Il contient :
- un serveur HTTP Apache
- une base de données MariaDB
- PHP
- Perl
- et un serveur FTP : ProFTPd.
XAMPP est très pratique pour créer un serveur local de développement : il fournit au néophyte un serveur de test en quelques clics, sans avoir à choisir ni à connaître les différents services à installer.
Il est multiplateforme : il existe pour Linux, Windows et OS X
Tout est installé de façon conjointe avec les emplacements et autorisations qui vont bien.
Remarque préliminaire importante : ne demandez pas à XAMPP ce pour quoi il n'est pas fait !
XAMPP n'est pas un serveur de production mais un petit serveur local perso. Pour cet usage, il est parfait.
Pour un serveur de production définitif, mieux vaut LAMP qui s'installe via les dépôts, plus riche de possibilités et de réglages, en particulier pour la sécurité.
Cependant, le serveur XAMPP installe des valeurs sûres :
- MariaDB avec phpMyAdmin,
- PHP,
- Perl,
- et de nombreuses bibliothèques
Les sites qui fonctionnent sur XAMPP fonctionneront donc sur LAMPP : il suffit de copier le répertoire et éventuellement de déplacer la base de données. A partir de là, vous pourrez mettre en place les réglages.
Vous pouvez cependant modifier XAMPP moyennant quelques “bidouilles” et une bonne connaissance de sa structure.
Pré-requis
- Une connexion internet
Installation
Tout XAMPP tient en un seul répertoire : /opt/lampp.
Son installation est donc d'une extrême simplicité (de même que sa désinstallation = supprimer le répertoire /opt/lampp).
Sur la page https://www.apachefriends.org/fr/index.html, choisissez la version 32 ou 64 bits selon votre système d'exploitation Linux.
Modifiez les autorisations du programme d'installation et lancez-le en mode super-utilisateur :
$ cd /répertoire/de/téléchargement/ $ sudo chmod +x xampp-linux-*-installer.run $ sudo ./xampp-linux-*-installer.run
Acceptez toutes les étapes en cliquant sur Next.
Pour la dernière fenêtre, cliquez sur Finish → le panneau de contrôle de XAMPP démarre :
Ouvrez l'onglet Manage Servers et cliquez sur Start All pour démarrer les serveurs :
Pour que Xampp se lance au démarrage, lancez dans un terminal :
$ sudo ln -s /opt/lampp/lampp /etc/init.d/lampp $ sudo update-rc.d lampp defaults
Au redémarrage, XAMPP sera démarré.
Aliases à créer
Créez les aliases en ajoutant au fichier ~/.bash_aliases les lignes :
- ~/.bash_aliases
... # Alias pour permettre sudo [un_alias] alias sudo='sudo ' # Aliases pour Xampp alias lampp='/opt/lampp/lampp' alias ctlampp='/opt/lampp/manager-linux-x64.run' # Aliases pour proftp alias ftpasswd='/opt/lampp/bin/ftpasswd'
L'alias sudo='sudo ' permet d'utiliser les autres aliases en sudo, comme avec
$ sudo lampp start
Activez les aliases par un
$ source ~/.bashrc
Arborescence créée par l'installation
L'installation a créé l'arborescence :
$ tree /opt/lampp/ -d -L 1 /opt/lampp/ ├── apache2 ├── bin ├── build ├── cgi-bin ├── docs ├── error ├── etc ├── htdocs ├── icons ├── img ├── include ├── info ├── lib ├── libexec ├── licenses ├── logs ├── man ├── manual ├── modules ├── mysql ├── pear ├── php ├── phpmyadmin ├── proftpd ├── sbin ├── share ├── temp └── var 28 directories
Configuration
Une suggestion
Pour vous simplifier la vie, créez des aliases en éditant ou créant le fichier ~/.bash_aliases pour y écrire :
- ~/.bash_aliases
# Alias pour permettre sudo [un_alias] alias sudo='sudo ' # Aliases pour Xampp alias lampp='/opt/lampp/lampp' alias ctlampp='/opt/lampp/manager-linux-x64.run' # Aliases pour proftp alias ftpasswd='/opt/lampp/bin/ftpasswd'
On obtient les raccourcis suivants :
Description | Raccourci | Effet |
---|---|---|
lampp | sudo lampp … | → sudo /opt/lampp/lampp … |
panneau de contrôle | sudo ctlampp | → sudo /opt/lampp/manager-linux-x64.run |
gérer les utilisateurs de proftpd | sudo ftpasswd … | → sudo /opt/lampp/bin/ftpasswd … |
L'alias sudo='sudo ' permet d'utiliser les autres aliases en sudo, comme avec
$ sudo lampp start
Activez les aliases par :
$ source ~/.bashrc
Accès FTP : proFTPD
XAMPP inclut proFTPD, un serveur FTP open source pour faciliter le transfert de fichiers.
Voir :
Le fichier de configuration est /opt/lampp/etc/proftpd.conf.
Nous choisissons de ne pas toucher au fichier principal et d'utiliser des fichiers de configuration que nous stockerons dans un répertoire /opt/lampp/etc/conf.d/ qui n’est pas affecté par les mises à jour.
Mise en place du répertoire /etc/proftpd/conf.d/
Donc :
- Créez les répertoires /opt/lampp/etc/conf.d/ :
$ sudo mkdir /opt/lampp/etc/conf.d/ $ sudo mkdir /opt/lampp/etc/proftpd/
- ajoutez la ligne suivante à la fin du fichier principal :
- /opt/lampp/etc/proftpd.conf
(...) # Inclure les fichiers de configuration personnalisés Include /opt/lampp/etc/conf.d/
Tous les fichiers contenus dans le répertoire /etc/proftpd/conf.d/ seront prises en compte.
- avec les droits d'administration, placez les fichiers de configuration dans le répertoire /opt/lampp/etc/conf.d/ (basic.conf, anonymous.conf, mysql.conf, virtual.conf, etc.) :
$ sudo cp <fichier.conf> /opt/lampp/etc/conf.d
Présentation
Supposons que vous ayez dans votre répertoire de base un script PHP simple, exemple.php, contenant le code suivant, que vous souhaitez transférer sur le serveur XAMPP.
- ~/exemple.php
<!-- example.php --> <html> <head></head> <body> <h2><?php echo "Bonjour. Nous sommes le " . date('l'); ?>.</h2> </body> </html>
Pour transférer des fichiers via proFTPD, vous devez d’abord configurer les règles d’accès FTP. Suivez ces étapes.
- Ouvrez un terminal.
- Créez un groupe ftp qui contiendra les utilisateurs autorisés à télécharger des fichiers via FTP:
$ sudo groupadd ftp
- Ajoutez votre compte (moi dans cet exemple) au nouveau groupe. Ajoutez d'autres utilisateurs si nécessaire.
$ sudo usermod -a -G ftp moi
- Modifiez le propriétaire et les permissions du sous-répertoire htdocs/ du répertoire d’installation de XAMPP (généralement, /opt/lampp) pour le rendre accessible en écriture au groupe ftp.
$ cd /opt/lampp $ sudo chown root:ftp htdocs $ sudo chmod 775 htdocs
Si vous utilisez XAMPP avec un seul utilisateur qui est seul à transférer des fichiers via FTP, vous pouvez ignorer la création d’un nouveau groupe et simplement rendre cet utilisateur propriétaire du répertoire htdocs/. Pour cela, utilisez la commande
$ sudo chown moi:moi htdocs.
Vous pouvez maintenant transférer des fichiers sur le serveur XAMPP en procédant comme suit :
- Démarrez un client FTP et entrez les détails de la connexion comme ci-dessous.
- adresse de l'hôte :
- 127.0.0.1 si vous vous connectez au serveur à partir du même système
- le nom d’hôte ou l’adresse IP du serveur XAMPP si vous vous connectez depuis un autre système.
port : 21votre nom d'utilisateur et votre mot de passe Linux comme informations d'identification FTP.
Votre client FTP se connecte maintenant au serveur dans le répertoire /opt/lampp/htdocs/, qui est la racine par défaut du serveur Web.Transférez les fichiers depuis votre ordinateur vers le serveur comme d'habitude. Si vous utilisez un client FTP graphique, vous pouvez généralement faire glisser le fichier d’un répertoire à l’autre. Si vous utilisez un client FTP de ligne de commande, vous pouvez utiliser la commande FTP PUT.Une fois le fichier transféré, il apparaît en naviguant sur http://localhost/example.php, comme indiqué ci-dessous :Utilisateurs virtuels
Créez le répertoire :
$ sudo mkdir /opt/lampp/etc/proftpd/
éditez avec les droits d'administration le fichier /opt/lampp/etc/conf.d/global.conf pour y ajouter les directives :
- /opt/lampp/etc/conf.d/global.conf
DefaultRoot ~ AuthUserFile /opt/lampp/etc/proftpd/ftpd.passwd AuthGroupFile /opt/lampp/etc/proftpd/ftpd.group
Vérifiez l'existence de l'utilisateur www-data et de son groupe :
$ id www-data uid=33(www-data) gid=33(www-data) groupes=33(www-data)
On constate que l’identifiant du groupe www-data est 33.
Créons l'utilisateur virtuel admiweb, de home /var/www/html, avec les uid et gid de www-data en lançant les commandes (le mot de passe du compte vous sera demandé) :
$ cd /opt/lampp/etc/proftpd $ sudo ftpasswd --passwd --name=admiweb --uid=33 --gid=33 --home=/var/www/html --shell=/bin/false ftpasswd: creating passwd entry for user admiweb ftpasswd: /bin/false is not among the valid system shells. Use of ftpasswd: "RequireValidShell off" may be required, and the PAM ftpasswd: module configuration may need to be adjusted. Password: Re-type password: ftpasswd: entry created
Vérifiez que l'utilisateur courant peut se connecter :
$ ftp localhost Connected to localhost.localdomain. 220 ProFTPD 1.3.4c Server (ProFTPD) [::ffff:127.0.0.1] Name (localhost:xxxxxxx): 331 Password required for xxxxxxx Password: 230 User xxxxxxx logged in Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 PORT command successful 150 Opening ASCII mode data connection for file list -rw-r--r-- 1 root root 3607 Feb 27 2017 applications.html -rw-r--r-- 1 root root 177 Feb 27 2017 bitnami.css drwxr-xr-x 21 root root 4096 Apr 4 11:48 dashboard -rw-r--r-- 1 root root 30894 May 11 2007 favicon.ico drwxr-xr-x 2 root root 4096 Apr 4 11:48 img -rw-r--r-- 1 root root 260 Jul 9 2015 index.php drwxr-xr-x 2 daemon daemon 4096 Apr 4 11:48 webalizer 226 Transfer complete ftp> bye 221 Goodbye.
De même pour admiweb :
$ ftp localhost Connected to localhost.localdomain. 220 ProFTPD 1.3.4c Server (ProFTPD) [::ffff:127.0.0.1] Name (localhost:xxxxxxx): admiweb 331 Password required for admiweb Password: 230 User admiweb logged in Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 PORT command successful 150 Opening ASCII mode data connection for file list -rw-r--r-- 1 root root 3607 Feb 27 2017 applications.html -rw-r--r-- 1 root root 177 Feb 27 2017 bitnami.css drwxr-xr-x 21 root root 4096 Apr 4 11:48 dashboard -rw-r--r-- 1 root root 30894 May 11 2007 favicon.ico drwxr-xr-x 2 root root 4096 Apr 4 11:48 img -rw-r--r-- 1 root root 260 Jul 9 2015 index.php drwxr-xr-x 2 daemon daemon 4096 Apr 4 11:48 webalizer 226 Transfer complete ftp> bye 221 Goodbye.
Vous pouvez maintenant créer tous les utilisateurs nécessaires en répétant cette commande.
Configuration
La configuration de proftpd se fait dans /opt/lampp/etc/ 1).
Pour faciliter la configuration, ajouter la répertoire /opt/lampp/etc/conf.d :
$ sudo mkdir /opt/lampp/etc/conf.d
Nous y placerons nos fichiers de configuration en les appelant par des Include. Ainsi, ils ne seront pas affectés par les mises à jour.
Liste des directives : Voir http://www.proftpd.org/docs/directives/linked/by-name.html
Contextes