Wiki Linux SMH

   

Flux RSS

Serveur Web Avec Apache

Distribution : Debian
Niveau : Amateur
Commentaire :


Cet article nécessite encore des ajouts/modifications.
N'hésitez pas à apporter votre contribution en complétant cet article.


1 - Installer un serveur web basé sur Apache 1 avec le support mysql et php5

1.1 - Apache 1

Je vais installer apache

apt-get install apache

Pour configurer le dossier dans lequel se situe votre site, il faut modifier le fichier /etc/apache/sites-available/default

DocumentRoot /chemin/vers/mon/site
...
<Directory /chemin/vers/mon/site>
    ...
</Directory>

1.2 - Apache avec SSL

Apache avec SSL permet de créer un serveur web avec une connection cryptée. Les données qui sont échangées entre le client (la personne qui va sur le site) et le serveur sont cryptées, et les mots de passe et les données transmises sont donc protégées.

Apache (sans SSL) utilise le port 80, alors que Apache avec SSL utilise le port 443.

Pour installer apache avec SSL :

apt-get install apache-ssl

Répondez ensuite aux questions.
Pour modifier vos choix plus tard, vous pouvez reconfigurer de la manière suivante :

dpkg-reconfigure apache-ssl

Les fichiers de configuration sont semblables à Apache et sont dans /etc/apache-ssl/. Toutes les modifications peuvent être faites de la même façon sur les 2

Pour tester le bon fonctionnement du serveur, allez sur la page https://localhost ou https://<ip_de_votre_serveur_vu>

1.3 - Mysql

Voir la page MySQL

1.4 - PHP 4

On installe le plus simplement du monde :

apt-get install php4 php4-mysql

Puis, on va décommenter la ligne suivante du fichier /etc/apache/httpd.conf

AddType application/x-httpd-php .php

Et on ajoute au fichier /etc/apache/modules.conf :

LoadModule php4_module /usr/lib/apache/1.3/libphp4.so

1.5 - PHP 5

La Sarge ne dispose pas des paquets pour php5. On va donc ajouter ces lignes au fichier /etc/apt/source.list

deb http://people.debian.org/~dexter/ php5 sid
deb-src http://people.debian.org/~dexter/ php5 sid

Puis

apt-get update
apt-get install php5 php5-cli php5-cgi php5-dba php5-spl php5-mysql php5-simplexml php5-bz2 php5-gd

Puis, on va rajouter la ligne suivante au fichier /etc/apache/httpd.conf

AddType application/x-httpd-php5 .php

Et on ajoute au fichier /etc/apache/modules.conf :

LoadModule php5_module /usr/lib/apache/1.3/mod_php5.so

Note : ici j'ai choisis que mes fichiers .php soient interprétés avec Php 5. On pourrait très bien supposer que seuls les fichiers .php5 soient interprétés comme tels.

Et voilà ;)

Il ne reste plus qu'à faire

/etc/init.d/apache restart

pour que les changements soient pris en compte.

2 - Installer un serveur web basé sur Apache 2

Si vous préférez utiliser Apache 2 à la place de Apache, il faut suivre la procédure suivante :

2.1 - Apache 2

2.1.1 - Installation
# apt-get install apache2

Pour accéder à vos sites : http://localhost ou https://localhost si vous avez choisi d'utiliser le support SSL.

2.1.2 - Le support SSL

Pour mettre en place le support SSL avec Apache2, il faut créer un certificat. Pour cela, il faut installer openssl afin de pouvoir créer un certificat.

# apt-get install openssl ca-certificates

Maintenant, on crée le certificat :

sid:/etc/apache2# openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache2.pem -keyout /etc/apache2/apache2.pem
Generating a 1024 bit RSA private key
............++++++
.......................................................++++++
writing new private key to '/etc/apache2/apache2.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Bretagne
Locality Name (eg, city) []:Saint Malo
Organization Name (eg, company) [Internet Widgits Pty Ltd]:SmhTeam
Organizational Unit Name (eg, section) []:TH
Common Name (eg, YOUR name) []:thialme
Email Address []:.

Pour protéger le certificat des curieux, on lui affecte des droits plus restreints :

# chmod 600 /etc/apache2/apache2.pem

Maintenant, il faut activer le support SSL pour apache2 avec la commande suivante :

# a2enmod ssl

Il ne nous reste plus qu'à configurer apache2 pour prendre en compte le certificat et lui définir un virtualhost écoutant sur le port 443.

Par défaut, apache2 écoute sur le port 80, on a donc le fichier /etc/apache2/ports.conf :

Listen 80

Si on veut fonctionner sur le port 80 et 443(SSL), il suffit d'ajouter Listen 443 au fichier précédent. On obtient :

Listen 80
Listen 443

Une fois cela fait, il faut créer un nouveau virtualHost pour la prise en compte de l'écoute sur le port 443 dans le fichier /etc/apache2/sites-available/default.

On peut réaliser la manipulation suivante de manière légèrement différente. En effet, tous les fichiers présents dans le dossier sites-available sont prix en compte par Apache. On peut donc définir différents virtualHost dans différents fichier. L'intérêt de cette séparation est de pouvoir activer/désactiver facilement des virtualHost. En effet, les sites accessibles sont dans les fichiers du dossier sites-available qui on un lien symbolique dans le dossier _sites-enabled__. Ainsi si vous voulez activer un site présent dans sites-available, utiliser la commande a2ensite. De même, pour désactiver un site, vous pouvez utiliser a2dissite.

Pour activer un virtualHost écoutant sur le port 443 il faut ajouter la directive : NameVirtualHost *:443 et placer les deux lignes suivantes dans sa définition :

SSLEngine On
SSLCertificateFile /etc/apache2/apache2.pem

Voici un exemple de ce fichier tournant sur ma machine. Je possède deux virtualHost, le premier écoute sur le port 80 et le second sur la port 443.

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:443>
        __SSLEngine On__
        __SSLCertificateFile /etc/apache2/apache2.pem__
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/apache2_ssl/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/apache2_ssl/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                # This directive allows us to have apache2's default start page
                # in /apache2-default/, but still have / go to the right place
                #RedirectMatch ^/$ /index.html
        </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 /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature Off

    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>

    Alias /torrentflux  /usr/share/torrentflux/www/
    Alias /phpmyadmin   /usr/share/phpmyadmin/
    Alias /cacti        /usr/share/cacti/site/
</VirtualHost>

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/apache2/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/apache2/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                # This directive allows us to have apache2's default start page
                # in /apache2-default/, but still have / go to the right place
                #RedirectMatch ^/$ /index.html
        </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 /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature Off
</VirtualHost>

Si vous avez en plus un processeur genre le VIA C7 vous voudrez utiliser le module padlock qui permet de tirer partie du hard, il faut rajouter au fichier /etc/apache2/apache2.conf la ligne suivante :

SSLCryptoDevice padlock

Pour finir, il est nécessaire de recharger la configuration d'apache2 :

# /etc/init.d/apache2 reload
2.1.3 - Gestion multi-interfaces

Le serveur apache2, par défaut, écoute sur toutes les interfaces présentes. De ce fait, si vous configurez un serveur web pour votre réseau local et que votre serveur est aussi connecté à Internet (via une seconde interface), alors, celui-ci sera accessible depuis les deux interfaces. Pour sécuriser un peu tout cela rien de bien compliqué. Dans l'exemple précédent, j'avais mentionné un serveur apache2 fonctionnant sur le port 80 et 443. Ainsi, je veux rendre le virtualhost écoutant sur le port 80 disponible depuis le lan et l'Internet, tandis que celui présent sur le port 443 (support SSL) ne devra être accessible que depuis mon lan.

Il suffit de modifier les fichiers /etc/apache2/ports.conf et le fichier /etc/apache2/sites-available/default. Je considèere que mon interface du réseau local a pour adresse ip 192.168.0.1.

  • fichier /etc/apache2/ports.conf
Listen 80
Listen 192.168.0.1:443
  • /etc/apache2/sites-available/default

On fait la même chose que pour le fichier précédent pour la directive NameVirtualHost. Soit :

NameVirtualHost *:80
NameVirtualHost 192.168.0.1:443

<VirtualHost 192.168.0.1:443>
...
2.1.4 - Codage UTF-8

Si vous remarquez que le codage de vos pages web affiche des caractères bizzares, par exemple remplace les lettres avec des accents par des symboles, il ne sert à rien de s'escrimer à modifier le codage par défaut de votre navigateur web ; allez donc voir dans /etc/apache2/apache2.conf ou /etc/apache2/conf.d/charset et décommentez la ligne : AddDefaultCharset UTF-8

Et pour les index générés automatiquement il suffit de rajouter Charset=UTF-8 à la rubrique IndexOptions dans /etc/apache2/mods-available/autoindex.conf

2.2 - PHP

Pour installer Php (4 ou 5), il suffit de suivre la même procédure que pour Apache 1

Toutefois, pour activer le support MySQL de php4 avec Apache 2, il faut éditer le fichier /etc/php4/apache2/php.ini et décommenter les 2 lignes suivantes (c'est à dire enlever le point-virgule en début de ligne) :

extension=mysql.so
extension=gd.so

Puis, relancez Apache 2 :

/etc/init.d/apache2 restart

3 - Outils

Une façon classique de regarder les logs de son serveur web est d'editer les fichiers /var/log/apache2/access.log et /var/log/apache2/error.log avec la commande tail :

# tail -f /var/log/apache2/access.log

Cependant, j'ai aussi découvert un petit outil qui est un peu plus 'user-friendly', apachetop du package du même nom. Jetez-y un coup d'oeil.

4 - Ressources

Vous êtes : ec2-54-82-190-130.compute-1.amazonaws.com Dernière modification : 07/08/10 03:32 Propriétaire : Fritz Modifié par : esver

Commentaires

Afficher les commentaires
Il y a 1 commentaire(s)