Héberger un Site ou Forum avec LAMP sous Ubuntu Server 9.10

Pour parler de l'OS libre ensemble.
chatonhub
    unknown unknown

Héberger un Site ou Forum avec LAMP sous Ubuntu Server 9.10

Message par chatonhub »

INSTALLER SERVEUR LAMP:

sudo apt-get install lamp-server^ (avec le ^)



CONFIGURATION DU SERVEUR APACHE 2:


1. INSTALLER LA BIBILOTHEQUE LE SERVEUR ET SES OUTILS

sudo apt-get install libapr1 apache2 apache2.2-common apache2-utils


2. INSTALLER LE MPM (Moteur du Serveur)

apache2-mpm-prefork : Modèle traditionnel pour Apache2 version sans thread, intercepte les requêtes à la manière Apache 1.3, utile pour éviter la mise en thread pour la compatibilité avec les bibliothèques non-thread-safe. C'est le meilleur mpm pour isoler les requêtes.

apache2-mpm-worker : Modèle à processus haute vitesse pour Apache2 version avec thread, il est considérablement plus rapide que la version traditionnelle et c'est le MPM recommandé.

sudo apt-get install apache2-mpm-prefork
sudo apt-get install apache2-mpm-worker


3. INSTALLER LES MODULES NECESSAIRES AUX DIFFERENTES APPLICATIONS

LA BASE:

Sécurité
sudo apt-get install libapache2-mod-chroot

PAM
sudo apt-get install libapache2-mod-auth-pam
sudo apt-get install libapache2-mod-auth-sys-group

LANGUAGES DE SCRIPTS:

Installer PHP5
sudo apt-get install libapache2-mod-php5

Lors de l'installation de LAMP, si vous rencontrez des problèmes avec l'interprétation de vos pages portant l'extension .php5, vérifiez d'abord si ce module est activé par apache grâce à la commande :

sudo a2enmod php5

Si la console vous renvoie ceci : Module php5 already enabled
Alors cela signifie que le module est activé. Dans ce cas, ouvrez le fichier httpd.conf :


sudo nano /etc/apache2/httpd.conf

Si il est vide, collez le contenu ci-dessous dans ce fichier:

<IfModule mod_mime.c>
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz

AddType application/x-httpd-php .php

AddType application/x-httpd-php .php3

AddType application/x-httpd-php .php5

AddLanguage ca .ca
AddLanguage cs .cz .cs
AddLanguage da .dk
AddLanguage de .de
AddLanguage el .el
AddLanguage en .en
AddLanguage eo .eo
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
AddLanguage zh-CN .zh-cn
AddLanguage zh-TW .zh-tw
</IfModule>

Redémarrez apache avec:

sudo /etc/init.d/apache2 restart

Installer PERL

sudo apt-get install libapache2-mod-perl2

Installer PYTHON

sudo apt-get install libapache2-mod-python


BASE DE DONNEES:

Installer MySQL

sudo apt-get install libapache2-mod-auth-mysql

Installer POSTGRESQL

sudo apt-get install libapache2-mod-auth-pgsql



4. INSTALLATION APACHE 2

Apache2, les bases et le mod chroot:

sudo apt-get install apache2 apache2-utils apache2-mpm-prefork libapache2-mod-chroot libapache2-mod-auth-pam libapache2-mod-auth-sys-group

Si vous voulez utiliser PHP5:

sudo apt-get install php5-common php5 php5-gd libapache2-mod-php5

Pour permettre l'interface entre php et MySQL, installer le module php5-mysql:

sudo apt-get install php5-mysql

Si vous voulez utiliser MYSQL:

sudo apt-get install mysql-server libapache2-mod-auth-mysql

Si vous voulez utiliser POSTGRESQL:

sudo apt-get install postgresql libapache2-mod-auth-pgsql


5. UTILISATION

sudo service apache2 start (ou) stop (ou) restart


Erreur au démarrage
Au démarrage d'Apache, il est possible que celui-ci ne soit pas capable de déterminer un nom de domaine. Ce message sera affiché dans le terminal :

Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

Pour corriger l'erreur, on doit éditer le fichier /etc/apache2/httpd.conf


sudo nano /etc/apache2/httpd.conf

>> Ajouter cette ligne:

ServerName localhost

>>Enregistrez et Quittez

>>redémarrez le service

sudo /etc/init.d/apache2 restart


6. CONFIGURATION

Tous les fichiers de configuration de Apache2 sont dans le dossier /etc/apache2.

/etc/apache2
Rendez-vous dans le répertoire /etc/apache2/, et regardez les fichiers le composant :

apache2.conf conf.d envvars httpd.conf mods-available mods-enabled ports.conf sites-available sites-enabledLa plupart de ces fichiers sont plus ou moins spécifiques à Debian/Ubuntu et nous permettent de séparer la configuration en plusieurs parties.

•httpd.conf est le fichier utilisé par apache1, il est conservé vide dans Apache2 pour assurer la rétrocompatibilité. Il ne nous servira pas ;
•envvars est utilisé pour définir des variables d'environnement propres à Apache ;
•ports.conf contient la directive listen qui spécifie les adresses et les ports d'écoutes ;
•apache2.conf est le fichier principal de configuration c'est à partir de lui que tous les autres fichiers sont chargés ;
•conf.d est un répertoire qui contient plusieurs petits fichiers qui seront analysés par apache. Le seul fichier pour le moment est charset, qui spécifie l'encodage à utiliser par défaut ;
•mods-available contient la liste des modules d'apache installés ;
•mods-enabled celle des modules utilisés ;
•sites-available contient la liste des vhosts installés ;
•sites-enabled celle des vhosts utilisés.

Configuration des interfaces
La spécification des interfaces sur lesquelles Apache2 écoutera les requêtes se fait dans ports.conf avec la directive Listen.
Vous devez spécifier au moins le port. Apache écoutera alors sur toutes les interfaces.


Pour restreindre l'utilisation à une ou plusieurs interfaces il suffit de les spécifier, suivies du port. Il faut une directive Listen par interface.
- Si le serveur est connecté avec une ip internet et que l'on souhaite écouter sur cette interface on ajoute la directive Listen Ip.Internet .
- Si le serveur est connecté avec une ip local et que l'on souhaite écouter sur cette interface on ajoute la directive Listen Ip.Local .
- Si l'on souhaite écouter sur un certain port on rajoute :Le_Port . Il est aussi possible de ne spécifier que le port Listen Le_Port.


Éditez le fichier /etc/apache2/ports.conf.(remplacer les X.X.X.X par l'ip de l 'interface d'écoute )


sudo nano /etc/apache2/ports.conf

Code : Tout sélectionner

#interface (local ou internet) connectée sur port standard
 Listen X.X.X.X:80

 # toutes les interfaces connectées sur port ssl
 Listen 443
>>Sauvez et Quittez

Attention Il faut que les interfaces aient été démarrées avant Apache


7. FICHIER DE CONFIGURATION

Éditez le fichier /etc/apache2/apache2.conf afin qu'il ressemble a ceci.

Les explications des différentes lignes sont données dans le fichier de configuration.

Les directives <IfModule !nom.c> testent la présence du module afin de s'adapter aux configurations.
Les autres lignes commençant par # sont des commentaires


sudo nano /etc/apache2/apache2.conf

Code : Tout sélectionner

# Répertoire Racine du serveur
ServerRoot "/etc/apache2"
 
# Fichier de vérrouillage (lock) du serveur 
# IL DOIT SE TROUVER SUR LE DISQUE LOCAL
#<IfModule !mpm_winnt.c>
#<IfModule !mpm_netware.c>
LockFile /var/lock/apache2/accept.lock
#</IfModule>
#</IfModule>
 
# Fichier du PID: endroit où, à son démarrage, apache doit stocker
# son numéro d'identification de processus
PidFile /var/run/apache2.pid
 
# Delai d'attente dépassé : nombre de secondes avant de recevoir et d'envoyer
# un message de "Délai d'attente dépassé" (timeout)
Timeout 300
 
# Connexion persistante: Alloue ou non les requêtes persistantes
# (plus d'une requête par connexion ).
# Mettre à "Off" pour désactiver.
KeepAlive On
 
# Nombre Maximum de requêtes allouées durant une connexion persistante.
# 0 = non limité
# Il est recommandé de garder ce nombre assez haut pour des performances maximales
MaxKeepAliveRequests 100
 
# Nombre de secondes d'attente pour la prochaine requête
# d'un même client sur une même connexion avant un timeout
KeepAliveTimeout 15
 
# Configuration du mpm chargé
<IfModule mpm_prefork_module>
# Nombre de processus serveurs fils à créer au démarrage.
   StartServers          5
# Nombre minimum de processus en attente d'intercepter des requêtes
   MinSpareServers       5
# Nombre maximum de processus en attente
   MaxSpareServers      15
# Nombre maximum processus fils créés
# pour intercepter les requêtes simultanément
   MaxClients          150
# Limite le nombre de requête qu'un processus fils intercepte 
# durant son temps de vie. Si 0 alors le processus n'expirera jamais.
    MaxRequestsPerChild   0
</IfModule>
 
<IfModule mpm_worker_module>
    StartServers          2
    MaxClients          150
# Nombre minimum de processus en attente d'intercepter les piques de requêtes
    MinSpareThreads      25
# Nombre maximum de processus en attente
    MaxSpareThreads      75 
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>
 
# Utilisateur et Group sous lesquels les processus du serveur seront lancés
User www-data
Group www-data
 
# Fichier de restriction des accès 
# non conseillé, préferer les directives internes au fichier de configuration
# voir [[http://httpd.apache.org/docs/2.2/howto/htaccess.html]]
AccessFileName .htaccess
 
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>
 
# Restriction de la racine du serveur
<Directory />
  Order Deny,Allow
  Deny from all
  Options None
  AllowOverride None
</Directory>
 
# Fichier contenant la liste des conversions des extensions de fichiers vers le type de contenu.
# par défaut ce fichier est relié au contenu enregistré à l'IANA. http://www.iana.org/assignments/media-types/index.html.
TypesConfig /etc/mime.types
 
# définit le type par défaut des fichiers dont le type ne peut être déterminé
# par le serveur.
# Il convient de le mettre à "none" afin de ne pas fournir d'informations erronées.
DefaultType none
 
# Active la résolution DNS pour les noms d'hôtes
HostnameLookups Off
 
# chemin du fichier de log des erreurs du serveur.
ErrorLog /var/log/apache2/error.log
 
# niveau de log du serveur 
# emerg  	Messages Urgents - Le système est inutilisable.
# alert 	Messages d'actions qui doivent être effectuées immédiatement.
# crit 	        Messages critiques.
# error 	Messages d'erreurs.
# warn 	        Messages d'avertissement.
# notice 	Messages normales mais significatives.
# info 	        Messages d'informations.
# debug 	Messages de débogage
LogLevel warn
 
# format des lignes contenues dans les logs
# %a 	        Adresse ip distante.
# %A 	        Adresse ip local.
# %B 	        Taille de la réponse en octets, excluant l'entête HTTP.
# %b 	        Taille de la réponse en octets, excluant l'entête HTTP au format CLF.
# %{Foobar}C 	Contenu du cookie "Foobar" de la requête envoyée au serveur.
# %D 	        Le temps mis à servir la requête .
# %{FOOBAR}e 	Contenue de la variable d'environnement "FOOBAR".
# %f 	        Nom du fichier.
# %h 	        Hôte distant.
# %H 	        Le protocole demandé.
# %{Foobar}i 	Le contenu de "Foobar": Ligne(s) d'en-tête de la requête envoyée au serveur.
# %l 	        nom du fichier de log distant (de identd, si il est fournit).
# cela retournera un tiret tant que //mod_ident// n'est pas présent 
# et //IdentityCheck// n'est pas mis à ON.
# %m 	        Méthode de la requête.
# %{Foobar}n 	Contenu de la note "Foobar" provenant d'un autre module.
# %{Foobar}o 	Le contenu de "Foobar": Ligne(s) d'entête dans la réponse.
# %p 	        Port canonique du serveur qui sert la réponse.
# %P 	        Id du processus fils qui a servi la requête.
# %{format}P 	Id du processus ou du thread fils qui a servi la requête.
# Les formats valides sont pid, tid, et hextid.
# hextid nécessite APR 1.2.0 ou supérieur.
# %q 	        Chaînes de la requête (Commençant avec un ? si une chaine de requête existe, sinon une chaîne vide)
# %r 	        Première ligne de la requête.
# %s 	        Statut. Pour les requête redirigées en interne, ceci est la requête originale --- %>s pour la dernière.
# %t 	        Heure à laquelle la requête a été reçue (format standard anglais mois jour année )
# %{format}t 	L'heure, au format précisé, qui doit être dans les formats de strftime(3). (potentiellement localisé).
# %T 	        Le temps mis pour répondre à la requête.
# %u 	        Utilisateur distant (de l'authentification; peut être faux si le  code de retour de statut (%s) est 401)
# %U 	        Url demandée, n'inclue aucune chaîne de requête.
# %v 	        Nom canonique de ServerName du serveur qui répond à la requête.
# %V 	        Nom du serveur en fonction du paramètre UseCanonicalName.
# %X 	        Statut de la connexion une fois la réponse envoyée.
#               X = connexion annulée avant la réponse complète.
#               + = la connexion peut être maintenue après l'envoi de la réponse.
#               - = la connexion sera fermée après l'envoi de la réponse.
# %I 	        Octets reçus, incluant l'entête et la requête, ne peut être nul. Vous devez activer //mod_logio// pour l'utiliser.
# %O 	        Octets envoyés, incluant l'entête, ne peut être nul. Vous devez activer //mod_logio// pour l'utiliser.
 
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
 
# entête envoyée au client à propos du serveur
# Prod                    Server: Apache
# Major                   Server: Apache/2
# Minor                   Server: Apache/2.0
# Min                     Server: Apache/2.0.41
# OS                      Server: Apache/2.0.41 (Unix)
# Full (ou non spécifié)  Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2 
ServerTokens Prod
 
# Pied de page renvoyé par le serveur 
# utile afin de déterminer quelle est le serveur 
# qui dans une chaîne (proxy) qui génère une erreur
ServerSignature Off
 
# Inclusion des fichiers, contenus dans le dossier des mods, qui sont activés
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
 
# Inclusion de l'ancien fichier de configuration de apache
# à des fins de compatibilités ascendantes.
Include /etc/apache2/httpd.conf
 
# Inclusion du fichier de configuration des adresses et ports
# sur lesquels le serveur sera à l'écoute
Include /etc/apache2/ports.conf
 
# Inclusion d'autres fichiers de configuration
Include /etc/apache2/conf.d/
 
# inclusion des configurations des sites actifs
Include /etc/apache2/sites-enabled/
 
# Directive des alias
<IfModule alias_module>
# alias des icones d'apache
# nom de l'alias , répertoire vers lequel pointe l'alias
    Alias /icons "/usr/share/apache2/icons/"
    <Directory "/usr/share/apache2/icons">
        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
 
# alias pour awstats 
    Alias /awstats-icon "/usr/share/awstats/icon"
    ScriptAlias /awstats "/usr/lib/cgi-bin/"
	<Directory "/usr/share/awstats/icon">
   	     Options None
#Indexes MultiViews
		AllowOverride None
		Order allow,deny
		Allow from all
	</Directory>
</IfModule>
 
# Types images d'icône
<IfModule mod_autoindex.c>
 
    IndexOptions FancyIndexing VersionSort HTMLTable NameWidth=*
 
    AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
 
    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
    AddIcon /icons/bomb.gif core
 
    AddIcon /icons/back.gif ..
    AddIcon /icons/hand.right.gif README
    AddIcon /icons/folder.gif ^^DIRECTORY^^
    AddIcon /icons/blank.gif ^^BLANKICON^^
 
 
    DefaultIcon /icons/unknown.gif
 
    ReadmeName README.html
    HeaderName HEADER.html
 
    IndexIgnore .??* *~ *# RCS CVS *,v *,t 
</IfModule>
 
# Type langages
<IfModule mod_mime.c>
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
 
    AddLanguage ca .ca
    AddLanguage cs .cz .cs
    AddLanguage da .dk
    AddLanguage de .de
    AddLanguage el .el
    AddLanguage en .en
    AddLanguage eo .eo
    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
    AddLanguage zh-CN .zh-cn
    AddLanguage zh-TW .zh-tw
</IfModule>
 
# Langue prioritaire pour les pages de réponses (choisir l'ordre des langues des pages)
<IfModule mod_negotiation.c>
 
    LanguagePriority fr ca cs da de el eo es et en he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
 
    ForceLanguagePriority Prefer Fallback
 
</IfModule>
 
# Type d'encodage de caractères 
<IfModule mod_mime.c>
    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 type-map var
 
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>
 
<IfModule mod_setenvif.c>   
    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
 
    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 "^XML Spy" redirect-carefully
    BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully
</IfModule>
 
# module d'information sur le statut du serveur
<IfModule mod_status.c>
    <Location /server-status>
        SetHandler server-status
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Location>
</IfModule>
 
# module des informations du serveur
<IfModule mod_info.c>
    <Location /server-info>
        SetHandler server-info
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Location>
</IfModule>
>>Sauvez et Quittez

Sites-Avaiable: Si vous voulez utiliser plusieurs hôtes virtuel voire virtualhosts_avec_apache2
Éditez le fichier /etc/apache2/sites-available/default (le seul vhost existant pour le moment).


sudo nano /etc/apache2/sites-available/default

Code : Tout sélectionner

# NameVirtualHost définit les IPs à utiliser par apache,
# * signifie qu'on utilise n'importe quel IP pour acceder au serveur
# 127.0.0.1 (boucle locale), 192.168.x.x (ip reseau local), ou une IP externe.
# Cette directive est en dehors du Vhost, on pourrait donc la déplacer dans apache2.conf.
# Dans tous les cas si elle est définie à * , elle ne doit pas être reprise dans les autres vhosts.
NameVirtualHost *:80
 
# Le vhost proprement dit : il est compris dans un bloc <VirtualHost>,
# Ces blocs définissent la "portée" de la validité des directives qui y sont définies.
# Le * derrière VirtualHost définit ici que le vhost est valable pour toutes les IPs sur lesquelles apache écoute.
<VirtualHost *:80>
# ServerName définie le nom utilisé pour le vhost. Mettez le nom de l'hote du domaine
ServerName www.domain.tld
# ServerAlias définie les autres sous domaines pour lesquels le serveur répondra.
ServerAlias domain.tld *.domain.tld
# ServerAdmin vous permet de spécifier un email à utiliser en cas de problème, sur une page d'erreur 404 par exemple.
ServerAdmin administrateur.web@domain.tld
# DocumentRoot définit le dossier racine dans lequel seront stockés les fichiers du site.
DocumentRoot /var/www/htdocs
        # Directory définit les options par défaut du répertoire
	<Directory /var/www/htdocs>
                # Active les options:
                # FollowSymLinks permet de suivre les liens symboliques.
                # Indexes autorise le listage de fichiers d'un répertoire qui ne contient pas d'index.
		Options Indexes FollowSymLinks MultiViews
                # AllowOverride permet de surcharger certaines options en utilisant des fichiers .htaccess dans le répertoire du site.
		AllowOverride None
                # Droits par defaut
		Order allow,deny
		allow from all
		# permet de rediriger les requêtes vers un fichier d'index precis 
		RedirectMatch ^/$ /index.php
	</Directory>
 
	ErrorLog /var/log/apache2/error.domain.tld.log
	CustomLog /var/log/apache2/access.domain.tld.log combined
</VirtualHost>
>>Sauvez sous un autre nom (ex: nomduvhost) et Quittez

>>Supprimer l'ancien lien symbolique de la configuration
d'origine


sudo a2dissite default

Il faut maintenant activer le vhost. Pour cela il faut créer un lien symbolique du fichier de sites-available/ vers sites-enabled/.
En utilisant:


sudo a2ensite nomduvhost

>>Éditez le fichier /etc/hosts et modifier la ligne avec nomduvhost le ServerName que vous avez choisi:

sudo nano /etc/hosts

Code : Tout sélectionner

127.0.0.1 localhost nomduvhost
>>Sauvez et Quittez


8. ACTIVER LES SCRIPTS CGI

>>Ales lignes suivantes à votre "apache2.conf" :

sudo /etc/apache2/apache2.conf

Code : Tout sélectionner

ScriptAlias /cgi-bin/ /var/www/votre_site/cgi-bin/
	<Directory /var/www/votre_site/cgi-bin/>
	Options ExecCGI
	AddHandler cgi-script cgi pl py
	</Directory>

9. SECURITE DES PAGES

Afin de modifier les pages nous allons créer un utilisateur webadmin le seul à pouvoir en créer, en supprimer et en modifier.
En faisant de webadmin le propriétaire et de www-data le groupe, tous les autres utilisateurs du système ne pourront accèder aux fichiers grâce aux droits appliqués ensuite.
Nous interdirons à apache2 de modifier les pages en autorisant seulement la lecture au groupe www-data (l'utilisateur sous lequel tourne apache et qui est aussi son groupe), et en donnant tous les droits au propriétaire.


Création de l'utilisateur webadmin:

sudo adduser webadmin

Modification des propriétaires de tous les fichiers et dossiers du répertoire:

sudo chown -Rf webadmin:www-data /var/www/htdocs

RÉPERTOIRES lecture et exécution pour le group www-data et écriture pour le propriétaire 750 :

sudo find /var/www/htdocs -type d -exec chmod 750 {} \;

FICHIERS lecture pour www-data et creation pour le propriétaire 640 :

sudo find /var/www/htdocs -type f -exec chmod 640 {} \;

alternativement, pour modifier les droits (mais pas les propriétaires), il est possible d'utiliser les deux commandes suivantes:

sudo chmod -R 644 /var/www/htdocs

l'interet est de ne pas lancer une multitude de commandes pour changer les droits (find lance la commande à chaque fois qu'il trouve un fichier correspondant) qui a pour effet de mettre le propriétaire comme étant le seul avec droit de lecture et

sudo chmod a+X /var/www/htdocs

>>Redémarrez Apache2

sudo /etc/init.d/apache2 restart

Il est aussi possible de redémarrer apache2 sans "tuer" les requêtes en cours :

apache2ctl graceful


10. ACTIVEZ LES FICHIERS .htaccess

>>Les .htaccess permettent de créer des zones administrateur protégées très facilement ou aussi d'activer des configurations de façon localisées.

éditez le fichier /etc/apache2/sites-enabled/000-default


sudo nano /etc/apache2/sites-enabled/000-default

Code : Tout sélectionner

<Directory /var/www/le_rep_ou_vous_voulez_activer_le_.htaccess>
    AllowOverride all
</Directory>
>>Redémarrez Apache

sudo /etc/init.d/apache2 restart


11. LES MODULES

Activer L'url rewriting

sudo a2enmod rewrite

Mod_bw - Limiter la bande passante

>>Ajouter quelques lignes dans les Vhost de vos domaines :

cd /etc/apache2/sites-enabled/
sudo nano votredomaine.tls.conf

Juste avant </VirtualHost>, ajouter :

•Limiter tous les utilisateurs à 1OKb/s :

Code : Tout sélectionner

BandwidthModule On
ForceBandWidthModule On
Bandwidth all 10240
•Limiter tous les utilisateurs à 50Kb/s pour les fichiers supérieurs à 8000Kb :

Code : Tout sélectionner

BandwidthModule On
ForceBandWidthModule On
LargeFileLimit * 8000 50000
•Limiter les fichiers .avi et .mpg à 20Kb/s :

Code : Tout sélectionner

BandwidthModule On
ForceBandWidthModule On
LargeFileLimit .avi 1 20000
LargeFileLimit .mpg 1 20000
>>Redémarrez Apache 2

sudo /etc/init.d/apache2 restart

Mod_deflate - Compression gzip

Le mod_deflate sur apache2 permet de gagner en rapidité et en bande passante grâce à la compression des données qui transitent entre le serveur et les clients. La compression utilisée est gzip. L'installation ci-dessous permet de compresser les fichiers texte (css,…).

Activation des modules deflate et headers:

sudo a2enmod headers
sudo a2enmod deflate

Configuration de deflate:

>>Créez ou modifiez le fichier /etc/apache2/conf.d/mod_deflate.conf et ajoutez:

sudo nano /etc/apache2/conf.d/mod_deflate.conf

Code : Tout sélectionner

<Location />
    # Insert filter
    SetOutputFilter DEFLATE
    # Netscape 4.x has some problems...
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    # Netscape 4.06-4.08 have some more problems
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    # MSIE masquerades as Netscape, but it is fine
    # BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    # NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
    # the above regex won't work. You can use the following
    # workaround to get the desired effect:
    BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
    # Don't compress images
    SetEnvIfNoCase Request_URI \
    \.(?:gif|jpe?g|png)$ no-gzip dont-vary
    # Make sure proxies don't deliver the wrong content
    Header append Vary User-Agent env=!dont-vary
 </Location>
Redémarrage de apache2:

sudo /etc/init.d/apache2 restart


mod_userdir gerer les dossiers utilisateur

Activer le module userdir

sudo a2enmod userdir

Editez le fichier suivant qui contient sa configuration /etc/apache2/mods-available/userdir.conf

sudo nano /ect/apache2/mods-available/userdir.conf

Code : Tout sélectionner

<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root

        <Directory /home/*/public_html>
                AllowOverride FileInfo AuthConfig Limit Indexes
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                <Limit GET POST OPTIONS>
                        Order allow,deny
                        Allow from all
                </Limit>
                <LimitExcept GET POST OPTIONS>
                        Order deny,allow
                        Deny from all
                </LimitExcept>
        </Directory>
</IfModule>

>>Redémarrer apache 2

sudo /etc/init.d/apache2 restart

Créez un dossier nommé public_html dans votre home et essayer, ca devrait marcher :)


mod_proxy ou comment rediriger certains domaines vers certaines machines

Mon probleme etait le suivant :

routeur :

•renvoi du port 80 sur la machine 192.168.0.10
machine 192.168.0.10 :

•virtualhosts renvoyant vers plusieurs dossiers
•toto.mondomaine.com va vers /home/toto/www
•titi.mondomaine.com va vers /home/titi/www
•etc…
•et 000-default va vers /var/www
machine 192.168.0.11 :

•virtualhosts renvoyant vers plusieurs dossiers
•tata.mondomaine.com va vers /home/tata/www
•tutu.mondomaine.com va vers /home/tutu/www
•etc…
•et 000-default va vers /var/www
Sauf que si on met http://tata.mondomaine.com" onclick="window.open(this.href);return false; dans son navigateur on se retrouve avec le site par defaut de 192.168.0.10….

Donc, il faut appeller mod_proxy a la rescousse.

sur 192.168.0.10 : activer le module proxy avec :


a2enmod proxy

créer un virtualhost /etc/apache2/sites-available/tata.mondomaine.com qui contient:

Code : Tout sélectionner

<VirtualHost 192.168.0.10:80>
        ProxyRequests Off
        ProxyPreservehost on
        ServerName tata.mondomaine.com
        ProxyPass  / http://192.168.0.11/
        ProxyPassReverse / http://192.168.0.11/
        <Proxy>
            Order Allow,Deny
            Allow from all
        </Proxy>
</VirtualHost>
Activer ce fichier :

sudo a2ensite mondomaine.com

Redémarrer apache

Et c'est tout :)

Si ca veut pas, activer aussi les modules proxy_http et proxy_connect

bien sûr on peut rajouter dans /etc/hosts:


192.168.0.11 mondomaine.com


12. OPTIMISER VOTRE SERVEUR APACHE 2

Accélérateurs PHP

Permet de mettre en cache le code PHP déjà compilé. Ceci évitera de recompiler les fichiers PHP à chaque fois, ce qui augmente de façon considérable les performances de votre serveur et donc de vos sites.

Voici un comparatif de ce qui existe actuellement :


http://dotclear.placeoweb.com/post/PHP- ... ator-cache


XCache

Plus moderne et a été réécrit de zéro récemment. Il assure un meilleur support des versions récentes de PHP, au contraire des anciens eaccelerator and co. Cliquez sur le lien suivant:

http://doc.ubuntu-fr.org/xcache


eAccelerator

http://doc.ubuntu-fr.org/eaccelerator


>>Editez le fichier /var/www/config.php

sudo nano /var/www/config.php

Code : Tout sélectionner

<?php
// phpBB 3.0.x auto-generated configuration file
// Do not change anything in this file!
$dbms = 'mysql';
$dbhost = 'localhost';
$dbport = '3306';
$dbname = 'forum';
$dbuser = 'root';
$dbpasswd = 'password;
$table_prefix = 'phpbb_';
$acm_type = 'file';
$load_extensions = '';

@define('PHPBB_INSTALLED', true);
// @define('DEBUG', true);
// @define('DEBUG_EXTRA', true);
?>

CONFIGURATION DE MySQL:


CONFIGURATION DE PHP:


1. INSTALLATION

PHP étant principalement utilisé comme langage de script serveur, seule son installation dans ce cadre là est présentée ici.

Installation minimale
Pour installer la version 5 de PHP (dernière version stable), il suffit d'installer le paquet suivant:

sudo apt-get install php5


CREER UN/DES REPERTOIE(S) DE TRAVAIL:


Protection de /var/www

Dans un premier temps nous allons donc rendre le dossier /var/www inaccessible. Pour cela, on édite en super utilisateur le fichier : /etc/apache2/sites-available/default et dans la section <Directory /var/www> on va modifier les accès :

Changez :

Code : Tout sélectionner

<Directory /var/www/>
	Options Indexes FollowSymLinks MultiViews
	AllowOverride None
	Order allow,deny
	Allow from all
</Directory>
en:

Code : Tout sélectionner

<Directory /var/www/>
	Options Indexes FollowSymLinks MultiViews
	AllowOverride None
	Order Deny,Allow
	Deny from all
	Allow from 127.0.0.1		# local
	Allow from 192.168.1.0/24	# reseau
</Directory>

1. AJOUT DE LIENS SYMBOLIQUES

A présent les espaces sont valides, mais non visible depuis la racine de votre serveur (c.f.: http://localhost" onclick="window.open(this.href);return false;). Il serait donc judicieux et pratique d'y avoir accès directement, plutôt que de devoir taper manuellement 'http://localhost/public' ou 'http://localhost/private'.
Il suffit tout simplement de créer un lien symbolique dans /var/www

sudo ln -s /media/www-dev/public /var/www/public
sudo ln -s /media/www-dev/private /var/www/private

>>Il vous faudra également effacer le fichier index.html pour que cela prenne effet :

sudo rm /var/www/index.html

2. FINALISATION

sudo /etc/init.d/apache2 force-reload


by M0rph/chatonhub
Modifié en dernier par chatonhub le sam. 12 mars 2011 16:31, modifié 1 fois.
Ikki
    unknown unknown

Re: Héberger un Site ou Forum avec LAMP sous Ubuntu Server 9

Message par Ikki »

Merci chaton, très intéressant..
Avatar du membre
richess
Visiteurs
Visiteurs
Messages : 2574
Enregistré le : lun. 2 août 2010 21:06
Localisation : Alsace
    unknown unknown

Re: Héberger un Site ou Forum avec LAMP sous Ubuntu Server 9

Message par richess »

salut
merci du tuto
Avatar du membre
Prof
Administrateur du site
Administrateur du site
Messages : 8259
Enregistré le : lun. 5 avr. 2010 20:07
Localisation : Vosges
A remercié : 3 fois
A été remercié : 8 fois
Contact :
    unknown unknown

Re: Héberger un Site ou Forum avec LAMP sous Ubuntu Server 9

Message par Prof »

Merci pour le partage, beau tuto :clap:
Règlement du forum
Toute demande d'aide ou de liens par MP est inutile !
AigletoN
    unknown unknown

Re: Héberger un Site ou Forum avec LAMP sous Ubuntu Server 9

Message par AigletoN »

bonjou
ServerName sert a rediriger l'url de type monsite.com etc....
on peut aussi ajouter ServerAlias si il a d'autre redirection vers le meme repertoire:

ServerName monsite.com
ServerAlias http://www.monsite.com" onclick="window.open(this.href);return false; http://www.monsite.fr" onclick="window.open(this.href);return false; monsite.no-ip.org monsite.ath.cx


Pourquoi installer lamp-server ?
en voyant que l'on doit installer apache2,php,mysql manuellement et que sans installer lamp-server ca devrai fonctionner donc .on economise un processus,non ?

sinon bon tuto
Avatar du membre
Prof
Administrateur du site
Administrateur du site
Messages : 8259
Enregistré le : lun. 5 avr. 2010 20:07
Localisation : Vosges
A remercié : 3 fois
A été remercié : 8 fois
Contact :
    unknown unknown

Re: Héberger un Site ou Forum avec LAMP sous Ubuntu Server 9

Message par Prof »

hihi revoilà le professionnel du pingouin ;)

Désolé je ne peux pas te répondre
Règlement du forum
Toute demande d'aide ou de liens par MP est inutile !
chatonhub
    unknown unknown

Re: Héberger un Site ou Forum avec LAMP sous Ubuntu Server 9

Message par chatonhub »

Les serveurs Linux/Apache/MySQL associés à Python ou Perl au lieu de PHP sont également appelé serveur "LAMP". Cependant, pour des soucis de simplicité, seul le cas (majoritaire) où PHP est utilisé comme langage de script présent
chatonhub
    unknown unknown

Re: Héberger un Site ou Forum avec LAMP sous Ubuntu Server 9

Message par chatonhub »

sudo aptitude install mysql-server mysql-client apache2 php5 libapache2-mod-php5 php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json phpmyadmin

pour les fleignard^^
AigletoN
    unknown unknown

Re: Héberger un Site ou Forum avec LAMP sous Ubuntu Server 9

Message par AigletoN »

loll ca c'est un bon coup de pioche
en lisant le tuto je m'apercoit d'un truc
au debut tu demande de desactivé le site par default
a2dissite defaut
ensuite tu demande de modifié le fichier 000.default hors si je ne m'abuse c'est justement le virtualhost par défault
voici le truc qui me chagrine
éditez le fichier /etc/apache2/sites-enabled/000-default

sudo nano /etc/apache2/sites-enabled/000-default

Code:
<Directory /var/www/le_rep_ou_vous_voulez_activer_le_.htaccess>
AllowOverride all
</Directory>


>>Redémarrez Apache
ne serait ce pas plutot le virtualhost ajouter qu'il faudrai ajouter cela ?
AllowOverride All
quand a moi je fait plus simple
aptitude install apache2 mysql-server php5 phpmyadmin
et il m'install les dépendance .ensuite pour du spécifique perl etc...la oui faut installer

edit
je vait faire peu etre surement probablement mon chieur :D
mais idem a la fin pour modifier le repertoire tu demande de modifier mais on a desactiver le virtualhost defaut :$
désolé :s soit j'ai toujours rien compris à apache ou alors y'a un os .non ?
chatonhub
    unknown unknown

Re: Héberger un Site ou Forum avec LAMP sous Ubuntu Server 9

Message par chatonhub »

Bonsoir je vais peaufiné le tuto ,pour que se sois plus kler
merci des précisions je regarde sa rapidement ^^
Répondre