Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Créer son site web en php _ prendre en main Apache2 sur Jessie

Introduction

Un serveur LAMP

est un serveur Web. Historiquement, l'acronyme « LAMP » fait référence aux quatre composantes d'un tel serveur Web :

  • Linux : le système d'exploitation constituant la base du système.
  • Apache : le serveur HTTP qui gère la communication avec le client.
  • MySQL : le système de gestion de base de données.
  • PHP : le langage de script utilisé pour générer les pages dynamiques.

Pré-requis

apt-get update && apt-get dist-upgrade
  • Installer les librairies de base :
apt-get install build-essential 
apt-get install apache2

Dans ce wiki : la prise en main d'apache2 qui est le serveur web !

Créer son site web rapidement

Création dossier pour les fichiers de code du site

cd /var/www/
mkdir hypathie.net
chown -R hypathie:www-data hypathie.net/
chmod -R 750 hypathie.net/
vim hypathie.net/index.html
<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title>hypathie.net _ index.html</title>
 </head>
 
 <body>
    <h1>Bienvenue sur le site hypathie ! </h1>
 </body>
</html>

A savoir !

Pour régler définitivement les problèmes d'encodage, au cas où l'on oublie la balise <meta charset=“UTF-8”> du head, on édite le fichier /etc/apache2/conf-availables/charset.conf

vim /etc/apache2/conf-available/charset.conf

Et on dé-commente la ligne :

AddDefaultCharset UTF-8
service apache2 reload

Création d'un virtualhost en local pour le site dans /etc/apache2/sites-available/

cd /etc/apache2/sites-available
vim hypathie.net.conf
<VirtualHost *:80>
        ServerName hypathie.net

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/hypathie.net/

        <Directory /var/www/hypathie.net>
          require all granted
          AllowOverride All
        </Directory>

        LogLevel info

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Explications

  • VirtualHost *:80
    L'étoile signifie toutes les adresses écoutées par apache et auxquelles il répond. Ce sont les adresses des clients qui consultent les sites servis par apache, sur le port 80.
  • ServerName and ServerAlias :
    Let Apache know the domain to match to this virtual host by setting the ServerName. Optionally also use ServerAlias to tell apache to listen to other domains and point them to this virtual host as well, such as a “www” subdomain.
  • DocumentRoot:
    Change to suit your needs. I often have a “public_html” or “public” directory which is the web root. Then I can encapsulate related files which stay behind the web-root within the sites directory. (site.com directory, with site.com/public_html directory as the web-root). This is how Laravel works by default.

Options -Indexes:: -Indexes stops people from being able to go to a directory and see files listed in there. Instead they see a Forbidden error. This can stops users view all your files in your /images directory, for instance.

  • AllowOverride:
    Set to “all” to allow .htaccess files in your virtual host (And sub-directories)

ErrorLog, CustomLog: Create log files specifically for your domain, so they don't get mixed in with traffic / errors from other sites running on the server.

Activer le site (cela crée un lien symbolique dans /etc/apache2/sites-enabled/)

a2ensite hypathie.net.conf
service apache2 reload

Ajouter son domaine dans /etc/hosts

Le domaine n'a pas à être loué forcément, mais le nom du site pour Apache2.

vim /etc/hosts
127.0.0.1       localhost
127.0.1.1       db
127.0.1.1       hypathie.net


# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

  • db : c'est le hostname de la machine sur laquelle tourne apache2 et pour laquelle on vient de modifier le fichier /etc/hosts.

Vérifications

Si l'on tombe sur sur la page d'accueil du site de test d'apache2
dont le code source est placé dans /var/www/html/index.html

On désactive ce site :

cd /etc/apache2/sites-enabled/ && a2dissite 000-default.conf && service apache2 reload

Création de plusieurs virtualhosts accessibles depuis d'une autre machine du réseau local

Remarques sur la configuration physique

  • Il n'y a pas à modifier le fichier /etc/hosts de la machine sur laquelle tourne apache2 qui désert le site web:
less /etc/hosts
127.0.0.1       localhost
127.0.1.1       db
127.0.1.1       hypathie.net


# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
  • On part du principe que :
    • la machine sur laquelle tourne apache2 a pour ip :192.168.0.17
    • la machine distante du réseau local a pour ip : 192.168.0.14
  • Qu'on a créé plusieurs fichiers de code source pour les différents sites qui correspondront aux virtualhosts qui vont être créés plus bas.

Par exemple, on a créé les dossiers essai et test dans le dossier /var/www/, avec dans chacun d'eux un dossier public qui contient une page web d'accueil.

ls /var/www/
essai  html  hypathie.net  test

Créations de plusieurs virtualhosts pour une même ip

Comme plus haut :

vim essai.conf
<VirtualHost *:80>
        ServerName essai.local
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/essai/public

        <Directory /var/www/essai/public/>
          require all granted
          AllowOverride All
        </Directory>

        LogLevel info

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>
vim test.conf
<VirtualHost *:80>
        ServerName test.local
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/test/public

        <Directory /var/www/test/public/>
          require all granted
          AllowOverride All
        </Directory>

        LogLevel info

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>
  • On active ces deux sites :
a2ensite essai.conf
a2ensite test.conf
  • On modifie le fichier /etc/hosts des machines du réseau local avec lesquelles on souhaite se connecter au site web.
service apache2 reload

fichier hosts sur debian

On configure le fichier hosts des ordinateurs distants du réseau local susceptibles de se connecter aux sites test.local et essai.local :

Par exemple pour la machine d'ip : 192.168.0.14, qui se connectera sur le serveur d'ip 192.168.0.17 sur lequel tourne apache2 :

vim /etc/hosts
127.0.0.1       localhost
127.0.1.1       debian
192.168.0.17    db
192.168.0.17    test.local
192.168.0.17    essai.local



# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

  • debian : c'est le hostname de la machine cliente d'ip 192.168.0.14 qui va visiter les sites de la machine d'ip 192.168.0.17 sur laquelle tourne apache2 ;
  • db : c'est la hostname de la machine qui fait office de serveur qui a l'ip 192.168.0.17 et sur laquelle tourne apache2.
  • test.local : c'est le servername, le nom du serveur virtuel crée par apache2 et qui va permettre au client (distant) de demander à apache2 de visualiser ce site
  • essai.local : idem

fichier hosts sur windows

On édite le fichier hosts qui se trouve : C:\Windows\System32\drivers\etc

On y ajoute l'ip du serveur debian qui se trouve sur le sous-réseau :

# localhost name resolution is handled within DNS itself.
	127.0.0.1       localhost
	::1             localhost

	192.168.0.17    db
	192.168.0.17    test.local
	192.168.0.17    essai.local

On teste

  • Dans le navigateur de la machine d'ip 192.168.0.14 de son réseau local : essai.local
  • Dans le navigateur de la machine d'ip 192.168.0.14 de son réseau local : test.local

Pour ce faire, il faut configurer son routeur pour rediriger les connexions extérieures qui viennent toc-toquer sur sa box-machin, dans cet exemple vers l'ip 192.168.0.17 de la machine sur laquelle tourne apache2.

Installer son site dans son répertoire personnel

On crée un dossier Web

mkdir Web/

On donne propriétés et droits

chown -R hypathie:www-data /home/hypathie/Web/

Attention de modifier hypathie par l'utilisateur voulu !

chmod -R 750 /home/hypathie/Web/

On déplace le dossier du site

cd /var/www/ && mv essai/ ~/Web/

En user si on a modifier les droits sur www, sinon en root !

On crée un lien symbolique vers le répertoire utilisateur dans www

ln -s ~/Web/essai/ /var/www/essai

Il n'y a rien de plus à faire, ni à modifier le virtualhost ni à recharger apache.

Avec la configuration du virtualhost

On donne le chemin du dossier de son répertoire personnel dans le virtualhost.

<VirtualHost *:80>
        ServerName test.local
        ServerAdmin webmaster@localhost
        DocumentRoot /home/user/dossier-racine-du-site/

        <Directory /home/user/dossier-racine-du-site/
          require all granted
          AllowOverride All
        </Directory>

        LogLevel info

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Le module php5

Sur Jessie inutile d'activer le module avec a2enmod.

  • On installe les paquets nécessaires.
apt-get install php5 libapache2-mod-php5
  • Pour les autres paquets concernant php5 :
apt-cache search php5

Pour résumer

Propriétés et droits

  • On donne les propriétés : utilisateur du site et au groupe www-data :
    chown -R utilisateur:www-data /chemin/du/site/
  • On donne récursivement les droits 750 sur le dossier du site :
    chmod -R 750 /home/utilisateur/site/
    • les droits de lecture + écriture + exécution pour l'utilisateur (7)
    • les droits de lecture + exécution pour le groupe www-data (5)
    • aucun droit pour les autres (0)

Ne pas laisser les droits d’exécution sur les fichiers !

Si le droit d'exécution est nécessaire pour traverser les sous-dossiers du site, quand ceux-ci contiendront les fichiers de code source, mieux vaut retirer récursivement depuis le dossier racine du site le droit d'exécution sur tous les fichiers.

Pour ce faire :

cd /chemin/dossier/site_web && find . -type f -exec chmod 640 {} \;

Fichiers de configuration d'apache

  • Les fichiers de code source du site web sont placés sur le système dans : /var/www/
  • Il est conseillé d'approprier le dossiers www et à ses sous dossiers à l'utilisateur courant du système et au groupe www-data, ainsi que les droits 755 avec chmod.
  • Les fichiers de configuration d'un virtualhost qui permettent de servir le code source d'un site web se trouve dans : /etc/apache2/site-available. Lorsqu'on crée un fichier on lui donne l'extension .conf sur Jessie.
  • Dans le dossiers /etc/apache2/site-enabled/ on trouve des liens symboliques dont la présence prouve que le site correspondant a été mis en service avec la commande a2ensite le-site. On peut aussi crée manuellement un lien symbolique avec la commande linux ln
  • Le fichier de configuration d'apache qui gère le mapping des noms et de leurs extensions possibles pour le premier fichier présentant le site web (en général index.html ou index.php) se modifie à la dernière ligne :
vim /etc/apache2/apache2.conf
DirectoryIndex index.html default.html index.php default.php
  • Le fichier de démarrage du site web (par exemple index.php) doit se trouver dans le dossier déclaré dans la configuration du virtualhost dans la balise Directory, par exemple :
[...]
        <Directory /var/www/essai/public/>
[...]
  • Lister les modules d'apache :
ls /etc/apache2/mods-available/
  • Lister les modules d'apache activés :
ls /etc/apache2/mods-enabled/

Commandes de gestion d'apache

  • Relancer le service d'apache après une modification d'un ou plusieurs fichiers de configuration
service apache2 reload

On peut faire aussi :

{start|stop|graceful-stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean}

  • Mettre en service un site déjà configuré :
a2ensite le_site
  • Désactiver un site :
a2dissite le_site
  • Activer un module :
a2enmod nomModule
  • Désactiver un module :
a2dismod nomModule
utilisateurs/hypathie/tutos/creer-son-site-web-en-php-_-prendre-en-main-apache2-sur-jessie.txt · Dernière modification: 03/10/2016 10:04 par Hypathie

Pied de page des forums

Propulsé par FluxBB