Tester en local sous Linux avec un LAMP votre CMS

Pour Information LAMP = Linux-Apache-Mysql-Php
Cette page utilise PHP 5.6.x
- Pour PHP 7.x consulter Tester en local sous Linux PHP 7.0
- Pour PHP 7.1.x consulter Tester en local sous Linux PHP 7.1


Avant de mettre en ligne ou en production un site Web, il est préférable de réaliser et tester en local (sur son ordinateur).
En général les tests peuvent se faire sous Windows avec un WAMP, mais il est plus commode de tester dans un environnement proche du futur serveur en utilisant une distribution Linux avec Apache+MySql+Php.


Installer les programmes

Utiliser la fonction mail() de PHP avec Ssmtp


Exemple avec une distribution Ubuntu ou Debian (éventuellement cela peut être sur une clef USB)
Nota suivant la distribution Linux le logiciel éditeur de texte gedit peut être remplacer par mousepad ou autre.
- Note Debian 8.x propose PHP 5.6.x et Apache 2.4.x



A - Installer les programmes
, soit par le gestionnaire de paquets ou par la ligne de commande (Ici plus simple à décrire)

1 - Installer Apache + PHP + Mysql
sudo apt-get install apache2 mysql-server php5 php5-mysql
Suivre les instructions et laisser le mot passe pour MySql vide
Un dossier /var/www sera créé
Tester l'installation dans le navigateur avec l’adresse http://127.0.0.1/ ou http://le_nom_machine/

2- Installer PhpMyAdmin *
sudo apt-get install phpmyadmin
Suivre les instructions et à la question : Faut-il configurer la base de données de PhpMyAdmin avec dbconfig-common ?  Répondre OUI
Tester http://127.0.0.1/phpmyadmin/
Il est possible que le message suivant apparaisse : La configuration interdit une connexion sans mot de passe (voir AllowNoPassword)
Alors
gksudo gedit /etc/phpmyadmin/config.inc.php
Et dé-commenter les lignes 78 107  // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE;
A nouveau tester http://127.0.0.1/phpmyadmin/, vous devez avoir accès

* NOTA : vous pouvez en remplacement de PhpMyAdmin, utiliser Adminer qui fonctionne avec MySQL, PostgreSQL, SQLite, ... (il se compose d’un seul fichier prêt à être déployé )


B - les tests

3- Création d'un dossier de test dans home/utilisateur/
Créer un dossier home/utilisateur/sites (par exemple)
Ajouter un fichier phpinfo.php
<?php phpinfo();  ?>


4- [Attention uniquement avec Apache 2.2] Modification de la "Directory" de travail
gksudo gedit /etc/apache2/sites-available/default
et ajoutez à la suite de <Directory /var/www>….</Directory> :
#++
Alias /sites/ "/home/utilisateur/sites/"
<Directory "/home/jutilisateur/sites/">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
#++

4- [Attention avec Apache 2.4] Modification pour "Virtual Hosts" Pour ( Debian 8.x)
- dans /etc/apache2/sites-available
sudo cp 000-default.conf sites.local.conf 
sudo gedit /etc/apache2/sites-available/sites.local.conf
Créer
ServerAdmin sites@localhost
DocumentRoot /home/utilisateur/sites
ServerName sites
#si besoin de logs
#ErrorLog ${APACHE_LOG_DIR}/sites.error.log
#CustomLog ${APACHE_LOG_DIR}/sites.access.log combined
<Directory /home/utilisateur/sites/>
Require all granted

</Directory>
</VirtualHost>
puis
sudo a2ensite sites.local.conf
Nota pour information virtualhosts_avec_apache2

Et modifier le fichier hosts

 gksudo gedit /etc/hosts
Ajouter
127.0.0.1 sites


Ensuite
sudo service apache2 restart

Tester http://127.0.0.1/sites/phpinfo.php, ou http://sites/phpinfo.php, vous devez voir les informations PHP Version...

5 - Puis tester avec votre CMS


Pour activer les URLs propres (pretty-url) utilisation du mode rewrite
Activation
 sudoa2enmod rewrite
Éventuellement pour désactivation
sudo a2dismod rewrite
Et dans le fichier .htaccess à la racine pour activer les URLs propres (pretty-url)
 sudoa2enmod rewrite
(pour désactivation gksudo a2dismod rewrite)

Et dans le fichier .htaccess à la racine du site de test :
<IfModule mod_rewrite.c>
RewriteEngine on
# Atttention à RewriteBase
RewriteBase /utilisateur/sites/webtest/
RewriteCond % {REQUEST_FILENAME} !-f
RewriteCond % {REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [QSA]
</IfModule>



Utiliser la fonction mail() de PHP avec Ssmtp
1- Installer ssmtp
sudo apt-get install ssmtp
2- Vérifier
sudo whereis sendmail
Vous devez avoir quelque chose comme : sendmail: /usr/sbin/sendmail
3- Si vous tapez
sudo ls -la /usr/sbin/sendmail
Vous devez avoir : /usr/sbin/sendmail -> ssmtp
4- Configuration de ssmtp
gksudo gedit /etc/ssmtp/ssmtp.conf
Modifier ou ajouter suivant votre fournisseur
Exemple Gmail (port sécurité TLS) ou Free(port normal)
root=votre_email@gmail.com # root=votre_email@free.fr
mailhub=smtp.gmail.com:587 # smtp.free.fr:25
AuthUser=nom_utilisateur # rien
AuthPass=votrepasse # rien
rewriteDomain=gmail.com #rewriteDomain=free.fr
hostname=votre_machine #hostname=votre_machine
FromLineOverride=YES #FromLineOverride=YES
UseSTARTTLS=YES # rien

5- Configuration de revaliases
gksudo gedit /etc/ssmtp/revaliases
votre_email@gmail.com:smtp.gmail.com:587 #root:votre_email@free.fr:smtp.free.fr:25

6- Paramétrer la fonction mail() de PHP (Ouvrez le fichier php.ini)
sgksudo gedit /etc/php5/apache2/php.ini
et éditez la ligne suivante1) : sendmail_path = /usr/sbin/ssmtp -t et ne pas oublier de redémarrer le serveur PHP avec la commande
sudo service apache2 restart

7- Tester avec votre CMS


Note : Passer error_reporting en mode développement
1 ouvrir le fichier php.ini
2 Mettre error_reporting= E_ALLL | E_NOTICE (Pour afficher les erreurs et message d'alertes)
3 Mettre display_errors = On
4 redémarrer le serveur PHP avec la commande
  sudo service apache2 restart

Top

Document http://jc.etiemble.free.fr/abc/ JCE - version 2017-02-26-0 CC_licence




Page précédente : Wamp et MariaDB
Page suivante : Debian8+PHP7.0