Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/01/2010, à 17:18

Wolf

Apache2 : utiliser les directives ou le htaccess ?

Bonjour,
J'étudie, à titre personnel, l'installation et l'utilisation d'un serveur Apache2 (sur une debian Etch).
Et j'aimerais réaliser la chose suivante :
- autorisé l'accès à Site1
- interdire l'accès à Site2
- autorisé l'affichage du index.html (linkant les site 1 & 2) (via la directive <Files "index.html">
- interdire l'accès à "Index Of" (parcours des dossiers).

Dois-je utiliser les directive comme :

## Site 1## 
<Directory "/usr/local/apache2/htdocs/site1"> 
    Options Indexes FollowSymLinks 
    AllowOverride None 
    Order allow,deny 
    Allow from all 
</Directory> 
## Fin Site 1 ##

ou plutôt un htaccess ? Ou les deux ?! Je sais pas trop à vrai dire.
Dans quel cas utiliser l'un ou l'autre ? Je sais qu'avec le htaccess, on peux gérer l'URLRewriting par exemple.

Merci.


"On a pas besoin de leurs dollars. Juste des rêves et sa guitare".

Hors ligne

#2 Le 14/01/2010, à 23:29

Yann

Re : Apache2 : utiliser les directives ou le htaccess ?

Salut, à priori si tu as accès a la configuration du virtual host, desactive les htaccess et met tout dans la configuration du vhost. Lorsque les htaccess sont activés, il va chercher dans le dossier courant ainsi que dans tous les dossiers parents jusqu a document_root pour voir si il y a un htaccess, a chaque requete - ca fait beaucoup d'acces disque pour rien. Si tu désactive les htaccess, tu ne fais pas tous ces accès disques, donc c'est "mieux". Après à moins que t'aies un très, très gros site, tu t'en fout smile


Et pourtant moi, jsuis pas du genre délicat,
Dans un coin de la musse, j'ai posé mon matelas
- Paulo Anarkao

Hors ligne

#3 Le 19/01/2010, à 17:38

Wolf

Re : Apache2 : utiliser les directives ou le htaccess ?

Bonjour,
Déjà, si j'ai bien compris, un vhost est un site virtuel défini sous Apache.
Mais moi, je n'ai pas défini de Virtual Host.
J'ai juste éditer le fichier de configuration d'Apache 2, soit : /usr/local/apache2/conf/httpd.conf.
Ca se trouve, je n'écris pas au bon endroit pour la configuration des différents sites roll ??


"On a pas besoin de leurs dollars. Juste des rêves et sa guitare".

Hors ligne

#4 Le 19/01/2010, à 17:47

Yann

Re : Apache2 : utiliser les directives ou le htaccess ?

Les fichiers de conf sont dans /etc/apache2 .... smile Tu utilies bien Ubuntu? Tu as bien installé un le package apache2?


Et pourtant moi, jsuis pas du genre délicat,
Dans un coin de la musse, j'ai posé mon matelas
- Paulo Anarkao

Hors ligne

#5 Le 19/01/2010, à 17:50

Wolf

Re : Apache2 : utiliser les directives ou le htaccess ?

oulala non, J'utilise une Debian (mais bon, ça devrait pas changer grand chose) et l'apache2 est compilé (je sais, prise de tête ect .. mais je voulais apprendre à le faire)


"On a pas besoin de leurs dollars. Juste des rêves et sa guitare".

Hors ligne

#6 Le 19/01/2010, à 17:53

Yann

Re : Apache2 : utiliser les directives ou le htaccess ?

Euh oui mais moi je sais pas comment t'as fait, et apparement c'est pas fait super proprement non plus sad Désolé, pas sur de pouvoir t'aider - good luck smile


Et pourtant moi, jsuis pas du genre délicat,
Dans un coin de la musse, j'ai posé mon matelas
- Paulo Anarkao

Hors ligne

#7 Le 19/01/2010, à 18:14

Wolf

Re : Apache2 : utiliser les directives ou le htaccess ?

Bah le serveur fonctionne bien. Et il s'est compilé correctement. Compiler ne rime pas forcement avec "saleté".
Sinon, je viens de lire ceci :

Selon la doc Apache : En géneral, vous ne devriez jamais utiliser les fichiers .htaccess à moins que vous n'ayez pas accès au fichier principal de configuration du serveur

De plus, si j'ai compris, on definit les directives uniquement dans les vhosts et pas directement dans le fichier principal de configuration ?

Dernière modification par Wolf (Le 19/01/2010, à 18:14)


"On a pas besoin de leurs dollars. Juste des rêves et sa guitare".

Hors ligne

#8 Le 19/01/2010, à 18:22

Yann

Re : Apache2 : utiliser les directives ou le htaccess ?

Wolf > Oui mais en general on met les fichiers de conf dans /etc, et y'a une certaine organisation des fichiers de conf propre a debian que tu n'as pas - vu que tu as tout dans un fichier. Et avoir tout dans un fichier,  c'est pas tres propre sad

Comme je dis, tu peux tout mettre dans un seul fichier ou bien séparer tout proprement. Les directives tu peux le mettre dans le http.conf normalement, tout dépend du "contexte" (au sens apache) dans lequel tu les met...

Regarde par exemple la: http://httpd.apache.org/docs/2.0/mod/mod_access.html
Pour chaque diretive il te donne un "contexte" dans lesquelles ces directives peuvent etre utilisées - http://httpd.apache.org/docs/2.0/mod/directive-dict.html#Context


Et pourtant moi, jsuis pas du genre délicat,
Dans un coin de la musse, j'ai posé mon matelas
- Paulo Anarkao

Hors ligne

#9 Le 20/01/2010, à 13:37

Wolf

Re : Apache2 : utiliser les directives ou le htaccess ?

Bonjour.
Je ne comprend la phrase suivante : "vu que tu as tout dans un fichier".
Enfait, dans le httpd.conf, j'ai la configuration du server : ServerRoot, Listen, Timeout ect ..
Et dans le fichier /etc/apache2/sites-enables/000-default, j'ai mon virtual Host avec les directives :
NameVirtualHost ..; VirtualHost ect ...

Veux-tu que je post quelques fichiers de configuration ?


"On a pas besoin de leurs dollars. Juste des rêves et sa guitare".

Hors ligne

#10 Le 20/01/2010, à 15:47

Elemmire

Re : Apache2 : utiliser les directives ou le htaccess ?

Configuration d'Apache 2 sous Debian Etch :
- /etc/apache2/apache2.conf = directives et parametres globales du serveur apache
- /etc/apache2/httpd.conf = ne sert que pour des raisons de compatibilité avec les versions précedentes

Pour parametrer un site, on créé un Virtual Host en créant un nouveau fichier dans /etc/apache2/sites-available/
par ex: /etc/apache2/sites-available/www.monsite.fr

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName www.monsite.fr
        ServerAlias monsite.fr
	DocumentRoot /var/www/monsite/
        <Directory /var/www/monsite/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
		<IfModule mod_rewrite.c>
		   Options +FollowSymLinks
		   Options +Indexes
		   RewriteEngine On
		   RewriteBase /
		   RewriteCond %{HTTP_HOST} ^monsite\.fr$
		   RewriteRule ^(.*)$ http://www.monsite.fr/$1 [R=301,L]
		</IfModule>

        </Directory>

	Alias /new "/var/www/monsite_v2"
	<Directory /var/www/monsite_v2/>
                  Options -Indexes FollowSymLinks MultiViews
                  AllowOverride None
                  Order allow,deny
                  allow from 192.168.1.10
                  deny from all
        </Directory>

	CustomLog /var/log/apache2/monsite-access.log combined	
	ErrorLog /var/log/apache2/monsite-error.log
</VirtualHost>

ensuite pour activer le site tu fais :

sudo a2ensite www.monsite.fr

Cela va créer le liens necessaire dans /etc/apache2/sites/enabled/ vers le fichier www.monsite.fr
ensuite tu fais :

apache2ctl -t

pour vérifier que ta syntaxe est correcte
puis tu redémarre le serveur apache :

apache2ctl restart

Il est important de comprendre que la configuration d'apache (et pas seulement apache) doit etre le plus modulaire possible afin de faciliter l'exploitation du service.

Dernière modification par Elemmire (Le 20/01/2010, à 15:48)

Hors ligne

#11 Le 21/01/2010, à 12:10

Wolf

Re : Apache2 : utiliser les directives ou le htaccess ?

Bonjour,
Merci Elemmire pour ta réponse complète.
Concernant mon Apache2, comme précisé, je l'ai compiler puis installé comme ceci :

Téléchargement et préparation des sources

wget http://apache.crihan.fr/dist/httpd/httpd-2.2.11.tar.gz # téléchargement des sources
md5sum httpd-2.2.11.tar.gz # vérification MD5
tar xvfz httpd-2.2.11.tar.gz # décompression de l'archive

Installation, compilation et construction d'Apache

cd /http-2.2.11.tar.gz
./configure # configuration pré-installation
make # création des variables d'environnements
male install # installation d'Apache

D'après la documentation, l'installation est effectuée (par défaut) dans /usr/local/apache2.

Je sais pas à quoi correspond /etc/apache2/apache2.conf dans mon cas mais, si dans ce fichier, je modifie une variable, par exemple ServerRoot "/etc/apache2" en "/etc/apache3" et que je relance apache, il fonctionne encore.
Donc ce n'est pas ce fichier qui est utilisé apparemment.
Dans mon cas, ça serait plutôt /usr/local/apache2/conf/httpd.conf.

Voici un extrait du fichiers httpd.conf

ServerRoot "/usr/local/apache2"

Listen 192.168.xx.xx:80

Timeout 300
LoadModule php5_module        modules/libphp5.so

<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>

User www-data
Group www-data

</IfModule>
</IfModule>


ServerAdmin you@example.com

ServerName localhost 

# DocumentRoot: The directory out of which you will serve your documents. 
DocumentRoot "/usr/local/apache2/htdocs"

## Site 1 ##
#<Directory "/usr/local/apache2/htdocs/site1">
#    Options Indexes FollowSymLinks
#    AllowOverride None
#    Order allow,deny
#    Allow from all
#</Directory>
## Fin Site1 ##

## Site2 ##
#<Directory "/usr/local/apache2/htdocs/site2">
#    Options Indexes FollowSymLinks
#    AllowOverride None
#    Order allow,deny
#    Allow from all
#</Directory>
## Fin Site2 ##


## Autoriser l'affichage du index.html se trouvant à la racine du serveur & info.php ## 
#<Files "index.html">
#    Options Indexes FollowSymLinks
#    Order allow,deny
#    Allow from all
#</Files>

#<Files "info.php">
#	Options Indexes FollowSymLinks
#	Order allow,deny
#	Allow from all
#</Files>

## Interdit la connexion à la racine du serveur "/"
#<Directory "/usr/local/apache2/htdocs">
#    Options Indexes FollowSymLinks
#    AllowOverride None
#    Order allow,deny
#    Deny from all
#</Directory>

## essai : Interdire l'acces au fichier /site2/seance.php ##
#<Files "/usr/local/apache2/htdocs/site2/seance.php">
#	Order allow,deny
#	Deny from all
#</Files>	

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.php index.htm index.html 
</IfModule>

#
# The following lines prevent .htaccess and .htpasswd files from being 
# viewed by Web clients. 
#
<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>

#
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog "logs/error_log"

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn

<IfModule log_config_module>
    #
    # The following directives define some format nicknames for use with
    # a CustomLog directive (see below).
    #
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    #
    # The location and format of the access logfile (Common Logfile Format).
    # If you do not define any access logfiles within a <VirtualHost>
    # container, they will be logged here.  Contrariwise, if you *do*
    # define per-<VirtualHost> access logfiles, transactions will be
    # logged therein and *not* in this file.
    #
    CustomLog "logs/access_log" common

    #
    # If you prefer a logfile with access, agent, and referer information
    # (Combined Logfile Format) you can use the following directive.
    #
    #CustomLog "logs/access_log" combined
</IfModule>

<IfModule alias_module>
    #
    # Redirect: Allows you to tell clients about documents that used to 
    # exist in your server's namespace, but do not anymore. The client 
    # will make a new request for the document at its new location.
    # Example:
    # Redirect permanent /foo http://www.example.com/bar

    #
    # Alias: Maps web paths into filesystem paths and is used to
    # access content that does not live under the DocumentRoot.
    # Example:
    # Alias /webpath /full/filesystem/path
    #
    # If you include a trailing / on /webpath then the server will
    # require it to be present in the URL.  You will also likely
    # need to provide a <Directory> section to allow access to
    # the filesystem path.

    #
    # ScriptAlias: This controls which directories contain server scripts. 
    # ScriptAliases are essentially the same as Aliases, except that
    # documents in the target directory are treated as applications and
    # run by the server when requested rather than as documents sent to the
    # client.  The same rules about trailing "/" apply to ScriptAlias
    # directives as to Alias.
    #
    ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"

</IfModule>

<IfModule cgid_module>
    #
    # ScriptSock: On threaded servers, designate the path to the UNIX
    # socket used to communicate with the CGI daemon of mod_cgid.
    #
    #Scriptsock logs/cgisock
</IfModule>

#
# "/usr/local/apache2/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/usr/local/apache2/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

#
# DefaultType: the default MIME type the server will use for a document
# if it cannot otherwise determine one, such as from filename extensions.
# If your server contains mostly text or HTML documents, "text/plain" is
# a good value.  If most of your content is binary, such as applications
# or images, you may want to use "application/octet-stream" instead to
# keep browsers from trying to display binary files as though they are
# text.
#
DefaultType text/plain

<IfModule mime_module>
    #
    # TypesConfig points to the file containing the list of mappings from
    # filename extension to MIME-type.
    #
    TypesConfig conf/mime.types

    #
    # AddType allows you to add to or override the MIME configuration
    # file specified in TypesConfig for specific file types.
    #
    #AddType application/x-gzip .tgz
    #
    # AddEncoding allows you to have certain browsers uncompress
    # information on the fly. Note: Not all browsers support this.
    #
    #AddEncoding x-compress .Z
    #AddEncoding x-gzip .gz .tgz
    #
    # If the AddEncoding directives above are commented-out, then you
    # probably should define those extensions to indicate media types:
    #
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz

    #
    # AddHandler allows you to map certain file extensions to "handlers":
    # actions unrelated to filetype. These can be either built into the server
    # or added with the Action directive (see below)
    #
    # To use CGI scripts outside of ScriptAliased directories:
    # (You will also need to add "ExecCGI" to the "Options" directive.)
    #
    #AddHandler cgi-script .cgi

    # For type maps (negotiated resources):
    #AddHandler type-map var

    #
    # Filters allow you to process content before it is sent to the client.
    #
    # To parse .shtml files for server-side includes (SSI):
    # (You will also need to add "Includes" to the "Options" directive.)
    #
    #AddType text/html .shtml
    #AddOutputFilter INCLUDES .shtml
	
    # Ajout du PHP 
    AddType application/x-httpd-php .php
</IfModule>

#
# The mod_mime_magic module allows the server to use various hints from the
# contents of the file itself to determine its type.  The MIMEMagicFile
# directive tells the module where the hint definitions are located.
#
#MIMEMagicFile conf/magic

#
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
#

#
# EnableMMAP and EnableSendfile: On systems that support it, 
# memory-mapping or the sendfile syscall is used to deliver
# files.  This usually improves server performance, but must
# be turned off when serving from networked-mounted 
# filesystems or if support for these functions is otherwise
# broken on your system.
#
#EnableMMAP off
#EnableSendfile off

# Supplemental configuration
#
# The configuration files in the conf/extra/ directory can be 
# included to add extra features or to modify the default configuration of 
# the server, or you may simply copy their contents here and change as 
# necessary.

# Server-pool management (MPM specific)
#Include conf/extra/httpd-mpm.conf

# Multi-language error messages
#Include conf/extra/httpd-multilang-errordoc.conf

# Fancy directory listings
#Include conf/extra/httpd-autoindex.conf

# Language settings
#Include conf/extra/httpd-languages.conf

# User home directories
#Include conf/extra/httpd-userdir.conf

# Real-time info on requests and configuration
#Include conf/extra/httpd-info.conf

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

# Local access to the Apache HTTP Server Manual
#Include conf/extra/httpd-manual.conf

# Distributed authoring and versioning (WebDAV)
#Include conf/extra/httpd-dav.conf

# Various default settings
#Include conf/extra/httpd-default.conf

# Secure (SSL/TLS) connections
#Include conf/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
#       starting without SSL on platforms with no /dev/random equivalent
#       but a statically compiled-in mod_ssl.
#
<IfModule ssl_module>
Listen 443
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

Les sites sont mis en commentaire car, justemment, ça ne semble pas etre le bon fichier pour les directives

Un extrait du fichier 000-default :

NameVirtualHost debian-jo:80
<VirtualHost debian-jo:80>
	ServerName debian-jo	
	ServerAdmin uneadressemail
	DocumentRoot /usr/local/apache2/htdocs

	### Site1 ###
	<Directory /usr/local/apache2/htdocs/site1>
		Options Indexes FollowSymLinks
		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
               Redirection ^/$ /index.html
	</Directory>
	### Fin Site1 ###	

	### Site2 ###
	<Directory /usr/local/apache2/htdocs/site2>
		Options Indexes FollowSymLinks
		AllowOverride None
		Order allow,deny
		Allow from all
	#	Redirection ^/$ /index.php
	</Directory>	
	### Fin Site2 ###

	## Autoriser affichage du index.html a la racine ##
	<Files index.html>
		Options Indexes FollowSymLinks
		Order allow,deny	
		Allow from all
	</Files>
	## Fin Autoriser index.html ##
	
	## Interdire connexion racine server ## 
	<Directory /usr/local/apache2/htdocs>
		Options Indexes FollowSymLinks
		AllowOverride None
		Order allow,deny
		Deny from all
	</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 On

    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>

</VirtualHost>

Ma question : est-ce que, maintenant, mes fichiers sont correctement organisés et est-ce que les directives pour la gestion des sites sont bonnes ?

Merci smile


"On a pas besoin de leurs dollars. Juste des rêves et sa guitare".

Hors ligne

#12 Le 21/01/2010, à 20:13

Elemmire

Re : Apache2 : utiliser les directives ou le htaccess ?

Là j'ai pas vraiment le temps pour regarder en détail mais une question me vient quand meme :
Pourquoi avoir compiler apache au lieu profiter de l'excellent système d'installation de logiciels fournit par Debian (cad APT) ?
La maintenance en ai bien plus simple et la structure des fichiers de configuration déjà prête. De plus la configuration par défaut n'est pas mauvaise et l'ajout de modules se fait simplement.

Hors ligne

#13 Le 22/01/2010, à 00:15

Wolf

Re : Apache2 : utiliser les directives ou le htaccess ?

La réponse est simple : je voulais apprendre ce qu'étais la compilation, ses avantages et bien sur, tous ses déboires.
Une fois que mon apache compilé sera fonctionnel, il sera surement viré pour un apache provenant des dépôts mais entre temps, j'aurais appris et compris plein de choses cool


"On a pas besoin de leurs dollars. Juste des rêves et sa guitare".

Hors ligne

#14 Le 22/01/2010, à 11:43

Elemmire

Re : Apache2 : utiliser les directives ou le htaccess ?

Alors concernant ton httpd.conf je ferai quelques remarques (en gras )

ServerRoot "/usr/local/apache2"

# A moins d'avoir plusieurs interfaces réseau il n'est pas nécessaire de préciser l'IP
Listen 192.168.xx.xx:80

Timeout 300
LoadModule php5_module        modules/libphp5.so

# A priori tu est sur Linux donc pas là peine de vérifier si tu es sur Netware ou windows ... donc je supprimerai les ligne IfModule ci-dessous

<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>

User www-data
Group www-data

</IfModule>
</IfModule>

# Essaye de mettre un mail qui existe
ServerAdmin you@example.com

# Il vaut mieux mettre un FQDN ici type  : ServerName serverweb.monsite.fr
ServerName localhost

# DocumentRoot: The directory out of which you will serve your documents.
DocumentRoot "/usr/local/apache2/htdocs"

# Définit le fichier par défaut qui sera lu lors de l'accès à un répertoire
<IfModule dir_module>
    DirectoryIndex index.php index.htm index.html
</IfModule>

[...]


<IfModule ssl_module>
Listen 443
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

# Je rajouterai la directive suivante qui permet de définir un répertoire contenant les différent Vhosts:
Include /usr/local/apache2/sites-enabled/
# Je rajouterai la directive ci-dessous afin de m'n affranchir dans les fichiers de conf des sites :
NameVirtualHost *:80


Commentaires sur 000-default :

# Je supprimerrai cette directive car elle est transféré dans httpd.conf
NameVirtualHost debian-jo:80

# Je n'indiquerai dans virtualhost pas l'IP ou le nom de host ... sauf si tu as plusieurs IP (par ex une IP public pour le site internet et une IP privée pour l'intranet)

<VirtualHost debian-jo:80>
#pour le ServerName il faut mettre le FQDN de ton site par ex site1.monsite.fr ou www.monsite.fr
# tu peux également rajouter un ServerAlias xxx.monsite.fr

    ServerName debian-jo   
    ServerAdmin uneadressemail
# Pourquoi positionner la racine du site à un endroit ou il n'y a rien et que tu interdit par la suite ?
#moi je définirai DocumentRoot à /usr/local/apache2/htdocs/site1

    DocumentRoot /usr/local/apache2/htdocs

    ### Site1 ###
    <Directory /usr/local/apache2/htdocs/site1>
# je mettrai Options -Indexes FollowSymLinks
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        allow from all
# pas besoin car un module gere déjà l'ouverture des fichiers par défaut
               Redirection ^/$ /index.html
    </Directory>
    ### Fin Site1 ###   
# Je créerai un nouveau fichier dans /usr/local/apache2/sites-enabled/ (possibilité d'utiliser un systeme de liens symbolique avec un répertoire /usr/local/apache2/sites-available/)
# dans lequel je positionnerai la configuration des 2  sites (1 fichier par site) :


    ### Site2 ###
<VirtualHost *:80>
         ServerName    www2.monsite.fr
         DocumentRoot /usr/local/apache2/htdocs/site2

    <Directory /usr/local/apache2/htdocs/site2>
        Options -Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>   

# Directive inutile
    ## Autoriser affichage du index.html a la racine ##
    <Files index.html>
        Options Indexes FollowSymLinks
        Order allow,deny   
        Allow from all
    </Files>
    ## Fin Autoriser index.html ##
#pas vraiment utile à mon sens mais bon ca doit pas poser de pb outre mesure
    ## Interdire connexion racine server ## 
    <Directory /usr/local/apache2/htdocs>
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Deny from all
    </Directory>
#Si tu n'utilise pas les CGI je pense qu'il vaut mieux les désactiver
    # 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>
# Les logs doivent etre configurer pour les 2 sites avec des fichiers différents pour les 2 sites   
    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
# Cette directive à plutot sa place dans httpd.conf et je la positionnerai plutot à OFF
    ServerSignature On

# Inutile = à supprimer
    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>

</VirtualHost>

j'espère que mes indications t'aideront. L'important à comprendre c'est que dans httpd.conf tu doit indiquer toutes les directives global au serveur Apache et ensuite tu doit faire un Vhost par site web. Ca sera plus facile à gérer en fin de compte.

Dernière modification par Elemmire (Le 22/01/2010, à 11:44)

Hors ligne

#15 Le 22/01/2010, à 12:55

Wolf

Re : Apache2 : utiliser les directives ou le htaccess ?

Wahouuuu; merci beaucoup pour cette réponse complète.
Je vais prendre le temps de bien analyser, faire mes modifications et je reviendrais surement avec de nouvelles questions ou avec de bonnes nouvelles smile
Merci !


"On a pas besoin de leurs dollars. Juste des rêves et sa guitare".

Hors ligne

#16 Le 22/01/2010, à 17:36

Wolf

Re : Apache2 : utiliser les directives ou le htaccess ?

Bonsoir,
Si j'ai bien compris, comme j'ai deux sites, il est mieux de créé deux virtualHost et un fichier PAR site..

Fichiers httpd.conf
:

<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>

User www-data
Group www-data

</IfModule>
</IfModule>

Si j'ai bien compris, il vérifie si les modules netware & winnt sont présent.Si c'est le cas, ils leur dit que l'utilisateur et le groupe sont www-data ?
J'imagine que pour ma debian, l'utilisateur et le group sont donc implicitement trouvés ? Donc je peux commenter / supprimer le groupe de lignes <IfModule ...> </IfModule> ?

# Il vaut mieux mettre un FQDN ici type  : ServerName serverweb.monsite.fr
ServerName localhost

J'avais eu des soucis avec ça. En mettant debian-jo par exemple ou monmegasite, apache ne tournait plus. Mais, ses noms là ne sont pas FQDN .. ?! Il me semble qu'il y ai un souci avec les enregistrement DNS lorsque l'on indique des noms comme ça ?

Fichier 000-default, changé en site1 et site2 ..

#pour le ServerName il faut mettre le FQDN de ton site par ex site1.monsite.fr ou www.monsite.fr
# tu peux également rajouter un ServerAlias xxx.monsite.fr
    ServerName debian-jo

J'ai mis, à la place, ServerName www.site1.fr ; mais si ce nom de domaine existe pas, cela va quand même fonctionner ??
J'ai un peu de mal à comprendre..

# Pourquoi positionner la racine du site à un endroit ou il n'y a rien et que tu interdit par la suite ?
#moi je définirai DocumentRoot à /usr/local/apache2/htdocs/site1

    DocumentRoot /usr/local/apache2/htdocs

Enfaite, dans le htdocs, j'ai un fichier index.html content des liens vers les sites 1 et 2 .. c'est pour cela. Et après, je veux pas interdire htdocs mais interdire son parcours (index of /).


# je mettrai Options -Indexes FollowSymLinks :
        Options Indexes FollowSymLinks

-Indexes = pas d'indexation ?

# pas besoin car un module gere déjà l'ouverture des fichiers par défaut
               Redirection ^/$ /index.html

Puis-je connaître le nom de ce module ?

Au final, j'ai donc créé deux fichiers distincts pour les site : site1 et site2.
Sauf que maintenant, lorsque je veux démarrer Apache, j'ai des messages d'erreur. Et je mets en cause les nom donnés aux variables ServerName !
Voici les erreurs :

/usr/local/apache2/bin/apachectl start
[Fri Jan 22 16:25:59 2010] [error] (EAI 5)No address associated with hostname: Could not resolve host name *.80 -- ignoring!
[Fri Jan 22 16:25:59 2010] [warn] _default_ VirtualHost overlap on port 80, the first has precedence
[Fri Jan 22 16:25:59 2010] [warn] _default_ VirtualHost overlap on port 80, the first has precedence
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

"On a pas besoin de leurs dollars. Juste des rêves et sa guitare".

Hors ligne

#17 Le 22/01/2010, à 19:21

Elemmire

Re : Apache2 : utiliser les directives ou le htaccess ?

Wolf a écrit :

Bonsoir,
Si j'ai bien compris, comme j'ai deux sites, il est mieux de créé deux virtualHost et un fichier PAR site..

Tout à fait !!!

Wolf a écrit :


Fichiers httpd.conf
:

<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>

User www-data
Group www-data

</IfModule>
</IfModule>

Si j'ai bien compris, il vérifie si les modules netware & winnt sont présent.Si c'est le cas, ils leur dit que l'utilisateur et le groupe sont www-data ?
J'imagine que pour ma debian, l'utilisateur et le group sont donc implicitement trouvés ? Donc je peux commenter / supprimer le groupe de lignes <IfModule ...> </IfModule> ?

En fait, cela veux dire que si les module NetWare ou WinNT NE sont PAS chargé ( néfation indiqué par !) alors on définit le User et le Group à www-data. Il ne sont pas implicite du tout.
Mais comme tu es sur un Linux tu peux très bien enlever les 2 ligne <IfModule ...> et les 2 autre </IfModule>
mais en laissant

User www-data
Group www-data
Wolf a écrit :
# Il vaut mieux mettre un FQDN ici type  : ServerName serverweb.monsite.fr
ServerName localhost

J'avais eu des soucis avec ça. En mettant debian-jo par exemple ou monmegasite, apache ne tournait plus. Mais, ses noms là ne sont pas FQDN .. ?! Il me semble qu'il y ai un souci avec les enregistrement DNS lorsque l'on indique des noms comme ça ?

J'ai pas ce genre de problème ... La directive ServerName n'est pas obligatoire dans httpd.conf ! du moment qu'elle est définie au niveau du Vhost

Wolf a écrit :

Fichier 000-default, changé en site1 et site2 ..

elemmire a écrit :

#pour le ServerName il faut mettre le FQDN de ton site par ex site1.monsite.fr ou www.monsite.fr
# tu peux également rajouter un ServerAlias xxx.monsite.fr
    ServerName debian-jo

J'ai mis, à la place, ServerName www.site1.fr ; mais si ce nom de domaine existe pas, cela va quand même fonctionner ??
J'ai un peu de mal à comprendre..

Le ServerName et le ServerAlias permette de faire l'aiguillage pour les différent Vhost en fonction du nom de domaine par lequel le client arrive sur le serveur web.
Donc cela dépend du nom de domaine que tu utilise pour accéder au serveur ainsi que des sous domaines que tu as définit. tu peux très bien héberger sur le meme serveur apache 2 sites web avec des nom de domaine complètement différents : par ex. www.monsite.fr et www.unautresite.org ou avec 2 sous domaines différents www1.monsite.fr et www2.monsite.fr



elemmire a écrit :

# Pourquoi positionner la racine du site à un endroit ou il n'y a rien et que tu interdit par la suite ?
#moi je définirai DocumentRoot à /usr/local/apache2/htdocs/site1

    DocumentRoot /usr/local/apache2/htdocs

Wolf a écrit :

Enfaite, dans le htdocs, j'ai un fichier index.html content des liens vers les sites 1 et 2 .. c'est pour cela. Et après, je veux pas interdire htdocs mais interdire son parcours (index of /).

Le non parcours d'un répertoire ce fait grace à l'option -Indexes

Wolf a écrit :
elemmire a écrit :

# je mettrai Options -Indexes FollowSymLinks :
        Options Indexes FollowSymLinks

-Indexes = pas d'indexation ?

Cf ci-dessus

Wolf a écrit :
elemmire a écrit :

# pas besoin car un module gere déjà l'ouverture des fichiers par défaut
               Redirection ^/$ /index.html

Puis-je connaître le nom de ce module ?

dir_module (définit dans ton httpd.conf)

Wolf a écrit :

Au final, j'ai donc créé deux fichiers distincts pour les sites : site1 et site2.
Sauf que maintenant, lorsque je veux démarrer Apache, j'ai des messages d'erreur. Et je mets en cause les nom donnés aux variables ServerName !

Prend en compte mes remarques et redonne toute ta config pour vérifier ...

Hors ligne

#18 Le 26/01/2010, à 15:15

Wolf

Re : Apache2 : utiliser les directives ou le htaccess ?

Bonjour,
Voici mes derniers fichiers de configuration :
httpd.conf :

ServerRoot "/usr/local/apache2"

# A moins d'avoir plusieurs interface réseau, inutile d'indiquer lip complete du# server

Listen 80

Timeout 300

User www-data
Group www-data

ServerAdmin adressemailvalide.com

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#

ServerName 192.168.x.x

# DocumentRoot: The directory out of which you will serve your documents. 
DocumentRoot "/usr/local/apache2/htdocs"


#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.php index.htm index.html 
</IfModule>

#
# The following lines prevent .htaccess and .htpasswd files from being 
# viewed by Web clients. 
#
<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>

#
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog "logs/error_log"

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn

<IfModule log_config_module>
    #
    # The following directives define some format nicknames for use with
    # a CustomLog directive (see below).
    #
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    #
    # The location and format of the access logfile (Common Logfile Format).
    # If you do not define any access logfiles within a <VirtualHost>
    # container, they will be logged here.  Contrariwise, if you *do*
    # define per-<VirtualHost> access logfiles, transactions will be
    # logged therein and *not* in this file.
    #
    CustomLog "logs/access_log" common

    #
    # If you prefer a logfile with access, agent, and referer information
    # (Combined Logfile Format) you can use the following directive.
    #
    #CustomLog "logs/access_log" combined
</IfModule>

<IfModule alias_module>
    #
    # Redirect: Allows you to tell clients about documents that used to 
    # exist in your server's namespace, but do not anymore. The client 
    # will make a new request for the document at its new location.
    # Example:
    # Redirect permanent /foo http://www.example.com/bar

    #
    # Alias: Maps web paths into filesystem paths and is used to
    # access content that does not live under the DocumentRoot.
    # Example:
    # Alias /webpath /full/filesystem/path
    #
    # If you include a trailing / on /webpath then the server will
    # require it to be present in the URL.  You will also likely
    # need to provide a <Directory> section to allow access to
    # the filesystem path.

    #
    # ScriptAlias: This controls which directories contain server scripts. 
    # ScriptAliases are essentially the same as Aliases, except that
    # documents in the target directory are treated as applications and
    # run by the server when requested rather than as documents sent to the
    # client.  The same rules about trailing "/" apply to ScriptAlias
    # directives as to Alias.
    #
    ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"

</IfModule>

<IfModule cgid_module>
    #
    # ScriptSock: On threaded servers, designate the path to the UNIX
    # socket used to communicate with the CGI daemon of mod_cgid.
    #
    #Scriptsock logs/cgisock
</IfModule>

#
# "/usr/local/apache2/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/usr/local/apache2/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

#
# DefaultType: the default MIME type the server will use for a document
# if it cannot otherwise determine one, such as from filename extensions.
# If your server contains mostly text or HTML documents, "text/plain" is
# a good value.  If most of your content is binary, such as applications
# or images, you may want to use "application/octet-stream" instead to
# keep browsers from trying to display binary files as though they are
# text.
#
DefaultType text/plain

<IfModule mime_module>
    #
    # TypesConfig points to the file containing the list of mappings from
    # filename extension to MIME-type.
    #
    TypesConfig conf/mime.types

    #
    # AddType allows you to add to or override the MIME configuration
    # file specified in TypesConfig for specific file types.
    #
    #AddType application/x-gzip .tgz
    #
    # AddEncoding allows you to have certain browsers uncompress
    # information on the fly. Note: Not all browsers support this.
    #
    #AddEncoding x-compress .Z
    #AddEncoding x-gzip .gz .tgz
    #
    # If the AddEncoding directives above are commented-out, then you
    # probably should define those extensions to indicate media types:
    #
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz

    #
    # AddHandler allows you to map certain file extensions to "handlers":
    # actions unrelated to filetype. These can be either built into the server
    # or added with the Action directive (see below)
    #
    # To use CGI scripts outside of ScriptAliased directories:
    # (You will also need to add "ExecCGI" to the "Options" directive.)
    #
    #AddHandler cgi-script .cgi

    # For type maps (negotiated resources):
    #AddHandler type-map var

    #
    # Filters allow you to process content before it is sent to the client.
    #
    # To parse .shtml files for server-side includes (SSI):
    # (You will also need to add "Includes" to the "Options" directive.)
    #
    #AddType text/html .shtml
    #AddOutputFilter INCLUDES .shtml
	
    # Ajout du PHP 
    AddType application/x-httpd-php .php
</IfModule>

#
# The mod_mime_magic module allows the server to use various hints from the
# contents of the file itself to determine its type.  The MIMEMagicFile
# directive tells the module where the hint definitions are located.
#
#MIMEMagicFile conf/magic

#
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
#

#
# EnableMMAP and EnableSendfile: On systems that support it, 
# memory-mapping or the sendfile syscall is used to deliver
# files.  This usually improves server performance, but must
# be turned off when serving from networked-mounted 
# filesystems or if support for these functions is otherwise
# broken on your system.
#
#EnableMMAP off
#EnableSendfile off

# Supplemental configuration
#
# The configuration files in the conf/extra/ directory can be 
# included to add extra features or to modify the default configuration of 
# the server, or you may simply copy their contents here and change as 
# necessary.

# Server-pool management (MPM specific)
#Include conf/extra/httpd-mpm.conf

# Multi-language error messages
#Include conf/extra/httpd-multilang-errordoc.conf

# Fancy directory listings
#Include conf/extra/httpd-autoindex.conf

# Language settings
#Include conf/extra/httpd-languages.conf

# User home directories
#Include conf/extra/httpd-userdir.conf

# Real-time info on requests and configuration
#Include conf/extra/httpd-info.conf

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

# Local access to the Apache HTTP Server Manual
#Include conf/extra/httpd-manual.conf

# Distributed authoring and versioning (WebDAV)
#Include conf/extra/httpd-dav.conf

# Various default settings
#Include conf/extra/httpd-default.conf

# Secure (SSL/TLS) connections
#Include conf/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
#       starting without SSL on platforms with no /dev/random equivalent
#       but a statically compiled-in mod_ssl.
#
<IfModule ssl_module>
Listen 443
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

## ajout d'une directive permettant de definir un rep content les differents 
# vhost
Include /etc/apache2/sites-enabled/

# eviter de devoir specifier le ports pour chaque vhost ! port 80 pour tous
NameVirtualHost *.80

sites-enabled/site1

# NameVirtualHost debian-jo:80 inutile car defini dans http.conf
<VirtualHost *:80>
	ServerName site1.monsite.fr	
	ServerAdmin adressemail

	DocumentRoot /usr/local/apache2/htdocs/

	### Site 1 ###
	<Directory /usr/local/apache2/htdocs/site1>
		Options -Indexes FollowSymLinks
		AllowOverride None
		Order allow,deny
		allow from all
	        # Redirection ^/$ /index.html inutile car gerer par un mod
	</Directory>
	### Site 1 ###	

	## Interdire connexion racine server ## a voir si utile ...
	<Directory /usr/local/apache2/htdocs>
		Options Indexes FollowSymLinks
		AllowOverride None
		Order allow,deny
		Deny from all
	</Directory>

	# ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ pour les CGI. 
	# si pas CGI=> desactiver c'est mieux 
	#<Directory "/usr/lib/cgi-bin">
	#	AllowOverride None
	#	Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
	#	Order allow,deny
	#	Allow from all
	#</Directory>
	
	ErrorLog /var/log/apache2/site1.log

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

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

    #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>

</VirtualHost>

sites-enabled/site2

# NameVirtualHost debian-jo:80 inutile car defini dans http.conf
<VirtualHost *:80>
	ServerName site2.monsite.fr	
	ServerAdmin adressemail

	DocumentRoot /usr/local/apache2/htdocs/

	### Site 2 ###
	<Directory /usr/local/apache2/htdocs/site2>
		Options -Indexes FollowSymLinks
		AllowOverride None
		Order allow,deny
		allow from all
	        # Redirection ^/$ /index.html inutile car gerer par un mod
	</Directory>
	### Site 2 ###	

	## Interdire connexion racine server ## a voir si utile ...
	<Directory /usr/local/apache2/htdocs>
		Options Indexes FollowSymLinks
		AllowOverride None
		Order allow,deny
		Deny from all
	</Directory>

	# ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ pour les CGI. 
	# si pas CGI=> desactiver c'est mieux 
	#<Directory "/usr/lib/cgi-bin">
	#	AllowOverride None
	#	Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
	#	Order allow,deny
	#	Allow from all
	#</Directory>
	
	ErrorLog /var/log/apache2/site2.log

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

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

    #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>

</VirtualHost>

Et lorsque je démarre, j'ai des erreurs toujours :

[error] (EAI 5)No address associated with hostname: Could not resolve host name *.80 -- ignoring!
[warn] _default_ VirtualHost overlap on port 80, the first has precedence
[warn] _default_ VirtualHost overlap on port 80, the first has precedence

"On a pas besoin de leurs dollars. Juste des rêves et sa guitare".

Hors ligne

#19 Le 27/01/2010, à 00:09

Elemmire

Re : Apache2 : utiliser les directives ou le htaccess ?

bon rapide avant d'aller me coucher ...
dans httpd.conf mettre NameVirtualHost *:80 avant Include /etc/apache2/sites-enabled/
comme ça par ex :

NameVirtualHost *:80
Include /etc/apache2/sites-enabled/

redémarre apache et vois ce que ca donne ... on parle de la suite plus tard

Hors ligne

#20 Le 27/01/2010, à 09:57

Wolf

Re : Apache2 : utiliser les directives ou le htaccess ?

Bonjour,
Alors j'ai essayé de mettre NameVirtualHost *:80 avant Include /etc/apache2/sites-enabled/
mais cela change rien, j'ai toujours les même erreurs sad


"On a pas besoin de leurs dollars. Juste des rêves et sa guitare".

Hors ligne

#21 Le 27/01/2010, à 12:14

Elemmire

Re : Apache2 : utiliser les directives ou le htaccess ?

hmmm ...
je pense que le problème se trouve dans l'activation des modules.
Sur Debian, les modules sont géré comme les vhost ... un fichier par module pour le chargement et éventuellement un fichier de conf pour le module.
si tu tiens encore à tout mettre dans httpd.conf voila les modules par défaut qui sont activés sur mon serveur:

LoadModule alias_module /usr/lib/apache2/modules/mod_alias.so
LoadModule auth_basic_module /usr/lib/apache2/modules/mod_auth_basic.so
LoadModule authn_file_module /usr/lib/apache2/modules/mod_authn_file.so
LoadModule authz_default_module /usr/lib/apache2/modules/mod_authz_default.so
LoadModule authz_groupfile_module /usr/lib/apache2/modules/mod_authz_groupfile.so
LoadModule authz_host_module /usr/lib/apache2/modules/mod_authz_host.so
LoadModule authz_user_module /usr/lib/apache2/modules/mod_authz_user.so
LoadModule autoindex_module /usr/lib/apache2/modules/mod_autoindex.so
LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so
LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so
LoadModule dir_module /usr/lib/apache2/modules/mod_dir.so
LoadModule env_module /usr/lib/apache2/modules/mod_env.so
LoadModule mime_module /usr/lib/apache2/modules/mod_mime.so
LoadModule negotiation_module /usr/lib/apache2/modules/mod_negotiation.so
LoadModule php5_module /usr/lib/apache2/modules/libphp5.so
LoadModule setenvif_module /usr/lib/apache2/modules/mod_setenvif.so
LoadModule status_module /usr/lib/apache2/modules/mod_status.so

Biensur il te faut modifier les chemins d'accès aux modules pour qu'ils correspondent au chemins des modules sur ton poste.

ensuite il faudra configurer correctement les modules. Voici ma conf par défaut :

<IfModule alias_module>
#
# Aliases: Add here as many aliases as you need (with no limit). The format is 
# Alias fakename realname
#
# Note that if you include a trailing / on fakename then the server will
# require it to be present in the URL.  So "/icons" isn't aliased in this
# example, only "/icons/".  If the fakename is slash-terminated, then the 
# realname must also be slash terminated, and if the fakename omits the 
# trailing slash, the realname must also omit it.
#
# We include the /icons/ alias for FancyIndexed directory listings.  If
# you do not use FancyIndexing, you may comment this out.
#
Alias /icons/ "/usr/share/apache2/icons/"

<Directory "/usr/share/apache2/icons">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

</IfModule>
<IfModule mod_autoindex.c>
#
# Directives controlling the display of server-generated directory listings.
#

#
# IndexOptions: Controls the appearance of server-generated directory
# listings.
# Remove/replace the "Charset=UTF-8" if you don't use UTF-8 for your filenames.
#
IndexOptions FancyIndexing VersionSort HTMLTable NameWidth=* DescriptionWidth=* Charset=UTF-8

#
# AddIcon* directives tell the server which icon to show for different
# files or filename extensions.  These are only displayed for
# FancyIndexed directories.
#
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip x-bzip2

AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*

AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
# It's a suffix rule, so simply matching "core" matches "score" as well !
AddIcon /icons/bomb.gif /core
AddIcon (SND,/icons/sound2.gif) .ogg
AddIcon (VID,/icons/movie.gif) .ogm

AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^

# Default icons for OpenDocument format
AddIcon /icons/odf6odt-20x22.png .odt
AddIcon /icons/odf6ods-20x22.png .ods
AddIcon /icons/odf6odp-20x22.png .odp
AddIcon /icons/odf6odg-20x22.png .odg
AddIcon /icons/odf6odc-20x22.png .odc
AddIcon /icons/odf6odf-20x22.png .odf
AddIcon /icons/odf6odb-20x22.png .odb
AddIcon /icons/odf6odi-20x22.png .odi
AddIcon /icons/odf6odm-20x22.png .odm

AddIcon /icons/odf6ott-20x22.png .ott
AddIcon /icons/odf6ots-20x22.png .ots
AddIcon /icons/odf6otp-20x22.png .otp
AddIcon /icons/odf6otg-20x22.png .otg
AddIcon /icons/odf6otc-20x22.png .otc
AddIcon /icons/odf6otf-20x22.png .otf
AddIcon /icons/odf6oti-20x22.png .oti
AddIcon /icons/odf6oth-20x22.png .oth

#
# DefaultIcon is which icon to show for files which do not have an icon
# explicitly set.
#
DefaultIcon /icons/unknown.gif

#
# AddDescription allows you to place a short description after a file in
# server-generated indexes.  These are only displayed for FancyIndexed
# directories.
# Format: AddDescription "description" filename
#
#AddDescription "GZIP compressed document" .gz
#AddDescription "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz

#
# ReadmeName is the name of the README file the server will look for by
# default, and append to directory listings.
#
# HeaderName is the name of a file which should be prepended to
# directory indexes. 
ReadmeName README.html
HeaderName HEADER.html

#
# IndexIgnore is a set of filenames which directory indexing should ignore
# and not include in the listing.  Shell-style wildcarding is permitted.
#
IndexIgnore .??* *~ *# RCS CVS *,v *,t 

</IfModule>
<IfModule mod_deflate.c>
          # these are known to be safe with MSIE 6
          AddOutputFilterByType DEFLATE text/html text/plain text/xml

          # everything else may cause problems with MSIE 6
          AddOutputFilterByType DEFLATE text/css
          AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
          AddOutputFilterByType DEFLATE application/rss+xml
</IfModule>
<IfModule mod_dir.c>

          DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

</IfModule>
<IfModule mod_mime.c>

#
# TypesConfig points to the file containing the list of mappings from
# filename extension to MIME-type.
#
TypesConfig /etc/mime.types

#
# AddType allows you to add to or override the MIME configuration
# file mime.types for specific file types.
#
#AddType application/x-gzip .tgz
#
# AddEncoding allows you to have certain browsers uncompress
# information on the fly. Note: Not all browsers support this.
# Despite the name similarity, the following Add* directives have
# nothing to do with the FancyIndexing customization directives above.
#
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
#AddEncoding x-bzip2 .bz2
#
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-bzip2 .bz2

#
# DefaultLanguage and AddLanguage allows you to specify the language of 
# a document. You can then use content negotiation to give a browser a 
# file in a language the user can understand.
#
# Specify a default language. This means that all data
# going out without a specific language tag (see below) will 
# be marked with this one. You probably do NOT want to set
# this unless you are sure it is correct for all cases.
#
# * It is generally better to not mark a page as 
# * being a certain language than marking it with the wrong
# * language!
#
# DefaultLanguage nl
#
# Note 1: The suffix does not have to be the same as the language
# keyword --- those with documents in Polish (whose net-standard
# language code is pl) may wish to use "AddLanguage pl .po" to
# avoid the ambiguity with the common suffix for perl scripts.
#
# Note 2: The example entries below illustrate that in some cases 
# the two character 'Language' abbreviation is not identical to 
# the two character 'Country' code for its country,
# E.g. 'Danmark/dk' versus 'Danish/da'.
#
# Note 3: In the case of 'ltz' we violate the RFC by using a three char
# specifier. There is 'work in progress' to fix this and get
# the reference data for rfc1766 cleaned up.
#
# Catalan (ca) - Croatian (hr) - Czech (cs) - Danish (da) - Dutch (nl)
# English (en) - Esperanto (eo) - Estonian (et) - French (fr) - German (de)
# Greek-Modern (el) - Hebrew (he) - Italian (it) - Japanese (ja)
# Korean (ko) - Luxembourgeois* (ltz) - Norwegian Nynorsk (nn)
# Norwegian (no) - Polish (pl) - Portugese (pt)
# Brazilian Portuguese (pt-BR) - Russian (ru) - Swedish (sv)
# Simplified Chinese (zh-CN) - Spanish (es) - Traditional Chinese (zh-TW)
#
AddLanguage ca .ca
AddLanguage cs .cz .cs
AddLanguage da .dk
AddLanguage de .de
AddLanguage el .el
AddLanguage en .en
AddLanguage eo .eo
# See README.Debian for Spanish
AddLanguage es .es
AddLanguage et .et
AddLanguage fr .fr
AddLanguage he .he
AddLanguage hr .hr
AddLanguage it .it
AddLanguage ja .ja
AddLanguage ko .ko
AddLanguage ltz .ltz
AddLanguage nl .nl
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pl .po
AddLanguage pt .pt
AddLanguage pt-BR .pt-br
AddLanguage ru .ru
AddLanguage sv .sv
# See README.Debian for Turkish
AddLanguage tr .tr
AddLanguage zh-CN .zh-cn
AddLanguage zh-TW .zh-tw

#
# Commonly used filename extensions to character sets. You probably
# want to avoid clashes with the language extensions, unless you
# are good at carefully testing your setup after each change.
# See http://www.iana.org/assignments/character-sets for the
# official list of charset names and their respective RFCs.
#
AddCharset us-ascii    .ascii .us-ascii
AddCharset ISO-8859-1  .iso8859-1  .latin1
AddCharset ISO-8859-2  .iso8859-2  .latin2 .cen
AddCharset ISO-8859-3  .iso8859-3  .latin3
AddCharset ISO-8859-4  .iso8859-4  .latin4
AddCharset ISO-8859-5  .iso8859-5  .cyr .iso-ru
AddCharset ISO-8859-6  .iso8859-6  .arb .arabic
AddCharset ISO-8859-7  .iso8859-7  .grk .greek
AddCharset ISO-8859-8  .iso8859-8  .heb .hebrew
AddCharset ISO-8859-9  .iso8859-9  .latin5 .trk
AddCharset ISO-8859-10  .iso8859-10  .latin6
AddCharset ISO-8859-13  .iso8859-13
AddCharset ISO-8859-14  .iso8859-14  .latin8
AddCharset ISO-8859-15  .iso8859-15  .latin9
AddCharset ISO-8859-16  .iso8859-16  .latin10
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5        .Big5       .big5 .b5
AddCharset cn-Big5     .cn-big5
# For russian, more than one charset is used (depends on client, mostly):
AddCharset WINDOWS-1251 .cp-1251   .win-1251
AddCharset CP866       .cp866
AddCharset KOI8      .koi8
AddCharset KOI8-E      .koi8-e
AddCharset KOI8-r      .koi8-r .koi8-ru
AddCharset KOI8-U      .koi8-u
AddCharset KOI8-ru     .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-7       .utf7
AddCharset UTF-8       .utf8
AddCharset UTF-16      .utf16
AddCharset UTF-16BE    .utf16be
AddCharset UTF-16LE    .utf16le
AddCharset UTF-32      .utf32
AddCharset UTF-32BE    .utf32be
AddCharset UTF-32LE    .utf32le
AddCharset euc-cn      .euc-cn
AddCharset euc-gb      .euc-gb
AddCharset euc-jp      .euc-jp
AddCharset euc-kr      .euc-kr
#Not sure how euc-tw got in - IANA doesn't list it???
AddCharset EUC-TW      .euc-tw
AddCharset gb2312      .gb2312 .gb
AddCharset iso-10646-ucs-2 .ucs-2 .iso-10646-ucs-2
AddCharset iso-10646-ucs-4 .ucs-4 .iso-10646-ucs-4
AddCharset shift_jis   .shift_jis .sjis

#
# AddHandler allows you to map certain file extensions to "handlers":
# actions unrelated to filetype. These can be either built into the server
# or added with the Action directive (see below)
#
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#
#AddHandler cgi-script .cgi

#
# For files that include their own HTTP headers:
#
#AddHandler send-as-is asis

#
# For server-parsed imagemap files:
#
#AddHandler imap-file map

#
# For type maps (negotiated resources):
# (This is enabled by default to allow the Apache "It Worked" page
#  to be distributed in multiple languages.)
#
AddHandler type-map var

#
# Filters allow you to process content before it is sent to the client.
#
# To parse .shtml files for server-side includes (SSI):
# (You will also need to add "Includes" to the "Options" directive.)
#
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

</IfModule>
<IfModule mod_negotiation.c>
#
# LanguagePriority allows you to give precedence to some languages
# in case of a tie during content negotiation.
#
# Just list the languages in decreasing order of preference. We have
# more or less alphabetized them here. You probably want to change this.
#
LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv tr zh-CN zh-TW

#
# ForceLanguagePriority allows you to serve a result page rather than
# MULTIPLE CHOICES (Prefer) [in case of a tie] or NOT ACCEPTABLE (Fallback)
# [in case no accepted languages matched the available variants]
#
ForceLanguagePriority Prefer Fallback

</IfModule>
<IfModule mod_php5.c>
  AddType application/x-httpd-php .php .phtml .php3 .php5
  AddType application/x-httpd-php-source .phps
</IfModule>
<IfModule mod_setenvif.c>

#
# The following directives modify normal HTTP response behavior to
# handle known problems with browser implementations.
#
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

#
# The following directive disables redirects on non-GET requests for
# a directory that does not include the trailing slash.  This fixes a 
# problem with Microsoft WebFolders which does not appropriately handle 
# redirects for folders with DAV methods.
# Same deal with Apple's DAV filesystem and Gnome VFS support for DAV.
#
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
BrowserMatch "^gvfs/1" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully

</IfModule>
<IfModule mod_status.c>
#
# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Uncomment and change the ".example.com" to allow
# access from other hosts.
#
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from localhost ip6-localhost
#    Allow from .example.com
</Location>
ExtendedStatus On

</IfModule>

Hors ligne

#22 Le 02/02/2010, à 11:52

Elemmire

Re : Apache2 : utiliser les directives ou le htaccess ?

Alors ? quelles sont les news ?

Hors ligne

#23 Le 02/02/2010, à 19:02

Wolf

Re : Apache2 : utiliser les directives ou le htaccess ?

Bonsoir Elemmire;
Merci de penser à moi ^^
Mais j'ai pas eu du tout le temps de m'en occuper. Entre les réunions et le reste, j'ai pas eu une minute à moi ..
En tout cas, le serveur à pas bouger.
Dès que j'ai du temps, je m'y repenche !!
Jte tiens au courant !!


"On a pas besoin de leurs dollars. Juste des rêves et sa guitare".

Hors ligne

#24 Le 10/02/2010, à 09:53

Wolf

Re : Apache2 : utiliser les directives ou le htaccess ?

Bonjour,
Il y a un truc que je pige pas : pourquoi aller tripatouiller dans les modules alors que je n'y ai jamais touché ?! J'ai peur que ça empire après cela, non ?!

Sinon, j'ai l'impression d'avoir deux apache sur le serveur.
En effet, pour que cela fonctionne, maintenant, je suis obligé de faire ceci :
- killall apache2
- /usr/local/apache2/bin/apachectl start

et là, le serveur démarre ... C'est très étrange quand même.

Un retour de commandes intéressant :

debian-jo:~# whereis apache
apache: /etc/apache /usr/lib/apache /usr/share/apache
debian-jo:~# whereis apache2
apache2: /usr/sbin/apache2 /etc/apache2 /usr/lib/apache2 /usr/include/apache2 /usr/local/apache2 /usr/share/apache2 /usr/share/man/man8/apache2.8.gz
debian-jo:~# whereis httpd
httpd:

Dernière modification par Wolf (Le 10/02/2010, à 10:25)


"On a pas besoin de leurs dollars. Juste des rêves et sa guitare".

Hors ligne

#25 Le 10/02/2010, à 13:19

Elemmire

Re : Apache2 : utiliser les directives ou le htaccess ?

Wolf a écrit :

Bonjour,
Il y a un truc que je pige pas : pourquoi aller tripatouiller dans les modules alors que je n'y ai jamais touché ?! J'ai peur que ça empire après cela, non ?!

ce n'est pas du tripatouillage de module !!! Apache est une serveur Web modulaire. Les modules sont le fondement meme de l'architecture d'Apache. lancer Apache tout seul sans module ... tu vas pas bien loin.

Pour faire fonctionner apache, il faut donc activer des modules qui vont apporter des fonctionnalités.
Les modules que je t'indique dans mon post précédent sont des modules de base d'apache. Il est necessaire pour toi de les utiliser.
Tu pourra ensuite t'amuser à les enlever ou à en rajouter pour modifier le comportement de ton serveur apache.

Il faut bien comprendre que GNU/Linux est un ensemble de briques modulaires qui ressemble plus à un Légo géant qu'à un jeu de playmobile déjà tout fait.

Si j'insiste sur la modularité des composants, des fichiers de conf ... c'est parce que c'est la meilleure manière de faire !!! Tous les projets sérieux utilisent maintenant cette approche et délaisse l'approche monolithique que l'on rencontrait il y a quelques années (et qu'on rencontre encore parfois hélas).

Maintenant, ta démarche de vouloir partir de zéro afin de comprendre le fonctionnement d'apache est louable mais je suis pas sur que ce soit le chemin le plus rapide.
Perso, je préconise à un débutant (et même à un initié) d'installer apache via le système de paquet. Cela permet de bien comprendre l'approche modulaire dont je viens de parler et cela permet une meilleure maitrise des modules chargé, de la configuration globale, de la configuration de chaque site ... sans rencontrer trop d'obstacles insurmontables.
Il est plus facile d'y aller étape par étape - c'est comme en bricolage : si tu commence par construire une maison juste pour apprendre à bricoler ... tu vas en chier !
la structure imposé par la modularité est "STRUCTURANTE" pour l'esprit de l'apprenti admin système !!! une fois les concepts bien compris, tu pourra t'amuser à compiler toi même ton apache.

Hors ligne