Installation d'un serveur LAMP sous Debian Linux (Lenny)
Par zokar le mardi, avril 6 2010, 16:03 - Sysadmin - Lien permanent
Je vous expliquerai dans ce tutoriel comment installer et configurer un serveur LAMP complet comprenant :
- Apache 2 (serveur Web)
- PHP 5 (langage)
- MySQL (base de données)
- PhpMyAdmin (gestion de bases de données)
- AwStats (stats web ultra complètes)
- Munin (monitoring)
- Squid (proxy web)
- ProFTPd (transfert de fichiers)
- et bien d'autres joyeusetés
Disclaimer
Ce tutoriel n'a pas pour prétention d'être LE tuto a suivre par excellence, et peut présenter des erreurs et/ou incohérences. Il vous est donc fourni tel quel en insistant sur le fait que vous suivrez ce tuto à vos risques et périls, car il peut engendrer des soucis de compatibilité avec des fichiers que vous auriez déjà utilisé sur un autre serveur Web, notamment au niveau des droits
Voici donc ma manière de procéder lors de l'installation d'un serveur LAMP.
Vous noterez que je sépare bien souvent les paquets lors des commandes aptitude install. Ceci a été fait pour une aisance de lecture, les paquets pouvant bien évidemment être installés tous en même temps dans un même bloc.
Pré-requis
Nous partons du postulat que vous avez en possession un serveur Debian Lenny fonctionnant parfaitement avec un compte ayant les droits d'accès de niveau super-utilisateur. Vous avez également la possibilité de vous connecter directement à la machine en console ou bien par le biais de SSH pour exécuter les commandes que nous trouverons ci-dessous.
Compte tenu de la masse de fichiers à modifier et de paquets à installer, passez directement en root.
Nous allons commencer par mettre à jour la liste des paquets ainsi que votre distribution
root@> aptitude update root@> aptitude dist-upgrade
Nous allons également installer VIM, évolution de VI, un éiteur de texte plutôt utile, ainsi que APG, générateur de mots de passe.
root@> aptitude install vim root@> aptitude install apg
Voila, tout est prêt pour commencer l'installation !
APACHE 2
Installation
Pour installer Apache2, saisissez les commandes suivantes :
root@> aptitude install apache2-mpm-itk root@> aptitude install libwww-perl
Nous choisissons la version ITK d'Apache2, notamment pour sa gestion des droits de fichiers et la possibilité d'affecter un utilisateur particulier au processus Apache (plutôt que de tout faire tourner en tant qu'utilisateur www-data). Pour plus d'information : http://mpm-itk.sesse.net
Là votre serveur Web Apache2 est installé. Mais rien n'est encore configuré (sans blagues !)
Configuration
Nous allons donc commencer la configuration
root@> a2enmod rewrite root@> echo #AddDefaultCharset UTF-8 > /etc/apache2/conf.d/charset
Tapez maintenant la commande :
root@> apg -a 1 -M n -m 4 -x 4
Cette commande vous donnera une suite aléatoire de 4 chiffres à conserver tout au long de ce tutoriel et qui remplacera les XXXX que vous rencontrerez.
Ouvrez le fichier /etc/apache2/apache2.conf, puis cherchez et remplacez ou ajoutez le cas échéant les lignes suivantes :
ServerTokens Prod ServerAdmin [vous]@[votre_domaine].[extension] <IfModule mpm_itk_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 250 MaxRequestsPerChild 0 </IfModule>
Sauvez le fichier, puis éditez le fichier /etc/apache2/envvars et modifiez-le pour qu'il ressemble à :
# envvars - default environment variables for apache2ctl # Since there is no sane way to get the parsed apache2 config in scripts, some # settings are defined via environment variables and then used in apache2ctl, # /etc/init.d/apache2, /etc/logrotate.d/apache2, etc. export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data export APACHE_PID_FILE=/var/run/apache2.pid umask 007
Votre Apache est quasiment configuré et il nous reste la dernière partie qui est la plus importante ; la sécurisation. Pour cela, nous allons installer le module Apache2 mod-security (original hein ?)
Commencez par ajouter le dépôt Debian Backports pour mod-security dans votre fichier /etc/apt/sources.list :
deb http://backports.debian.org/debian-backports squeeze-backports main
Ensuite, on oblige aptitude à utiliser ce dépôt pour installer mod-security en éditant/créant le fichier /etc/apt/preferences:
Package: libapache-mod-security Pin: release a=lenny-backports Pin-Priority: 999
On installe maintenant le jeu de clés GPG pour se connecter au dépôt:
root@> aptitude update root@> aptitude install debian-backports-keyring
Puis on installe le module :
root@> aptitude update root@> aptitude install libapache-mod-security
Ouvrez/créez le fichier /etc/apache2/conf.d/mod-security2.conf et modifiez/ajoutez les lignes suivantes :
<IfModule mod_security2.c> # enable mod_security SecRuleEngine On # access to request bodies SecRequestBodyAccess On #SecRequestBodyLimit 134217728 #SecRequestBodyInMemoryLimit 131072 # access to response bodies SecResponseBodyAccess On #SecResponseBodyLimit 524288 SecResponseBodyMimeType (null) text/html text/plain text/xml #SecServerSignature "Apache/2.2.0 (Fedora)" SecUploadDir /tmp SecUploadKeepFiles Off # default action SecDefaultAction "log,auditlog,deny,status:406,phase:2,t:none" SecAuditEngine RelevantOnly #SecAuditLogRelevantStatus "^[45]" # use only one log file SecAuditLogType Serial # audit log file SecAuditLog /var/log/apache2/modsec_audit.log # what is logged SecAuditLogParts "ABIFHZ" #SecArgumentSeparator "&" SecCookieFormat 0 SecDebugLog /var/log/apache2/modsec_debug.log SecDebugLogLevel 0 SecDataDir /tmp SecTmpDir /tmp ######### # RULES ######### # File name SecRule REQUEST_FILENAME "modsecuritytest1" # Complete URI SecRule REQUEST_URI "modsecuritytest2" SecRule REQUEST_FILENAME "(?:n(?:map|et|c)|w(?:guest|sh)|cmd(?:32)?|telnet|rcmd|ftp)\.exe" </IfModule> ErrorDocument 406 http://SERVERNAME/406.html
PHP 5
Installation
Pour installer PHP5, tapez la commande suivante :
root@> aptitude install php5 php5-gd php5-imap root@> aptitude install php5-ldap php5-mcrypt root@> aptitude install php5-mhash php5-mysql root@> aptitude install php5-pgsql php-gettext
Simple et efficace...
Configuration
Ouvrez le fichier /etc/php5/apache2/php.ini et modifiez les valeurs suivantes ;
short_open_tags = Off disable_functions = exec, shell-exec, system, passthru, putenv, popen expose_php = Off display_errors = Off log_errors = On allow_url_fopen = Off
Voilà, c'est tout pour PHP5. Maintenant, il faut un outil pour voir si votre serveur Web mérite de tourner
Munin
Installation
Comme d'habitude, l'installation se fait avec aptitude
root@> aptitude install munin
Configuration
Pour commencer, éditez le fichier /etc/apache2/mods-available/status.conf pour le remplacer par :
<IfModule mod_status.c> <Location /server-status-XXXX> SetHandler server-status Order deny,allow Deny from all Allow from 127.0.0.1 </Location> ExtendedStatus On </IfModule>
Sauvez votre fichier et ouvrez le fichier /etc/munin/plugin-conf.d/munin-node puis ajoutez en fin de fichier la ligne
[apache_*] # (XXXX = suite de chiffres générés plus haut) env.url http://127.0.0.1:%d/server-status-XXXX?auto # (changer si vous mettez votre apache sur un autre port) env.port 80
Si vous utilisez un noyau GRSEC (visible avec la commande uname -a) ajoutez en fin du fichier /etc/munin/plugin-conf.d/munin-node
[processes] user root
Sauvez le fichier, et créez les liens symboliques suivants :
root@> cd /etc/munin/plugins root@/etc/munin/plugins> ln -sf /usr/share/munin/plugins/apache_accesses root@/etc/munin/plugins> ln -sf /usr/share/munin/plugins/apache_processes root@/etc/munin/plugins> ln -sf /usr/share/munin/plugins/apache_volume
Redémarrez enfin Munin et Apache par la commande :
root@> /etc/init.d/munin-node restart root@> /etc/init.d/apache2 restart
Voila, c'est configuré... Pour tester que cela fonctionne :
root@> sudo -u munin munin-run apache_accesses
Ceci doit vous renvoyer une valeur du type :
accesses80.value 19372070
Si la commande vous renvoie U, vous avez un soucis d'accès à la page serveur-status-XXXX.
Vérifiez alors que vous avez bien ouvert les ports sur votre serveur Web en local. Vérifiez aussi que le répertoire par défaut (ici /var/www) autorise bien tout le monde a lire et exécuter (755 étant sans doute le plus approprié)
Pour terminer, il nous faut une page qui nous permettra d'accéder rapidement à tous nos outils, car on se souviendra sans doute pas des XXXX rajoutés lors de l'installation.
Pour cela, créez/éditez le fichier /var/www/index.html et placez-y le code suivant :
[html] <html> <head> <title>Hosting</title> </head> <body> <h1>Accès rapide</h1> <ul> <li><a href="/munin/">Stats système</a></li> <li><a href="/phpmyadmin-XXXX/">Acces PhpMyAdmin</a></li> <li><a href="/cgi-XXXX/awstats.pl">Stats web</a></li> <!-- <li><a href="/cgi-XXXX/awstats.pl?config=toto">Stats web du site TOTO.com</a></li> --> <li><a href="/info.php">Infos PHP</a></li> </ul> <p> Powered by <a href="http://www.evolix.fr/">Evolix</a> </body> </html>
Puis, créez le fichier /var/www/info.php avec le contenu suivant :
<?php phpinfo(); ?>
Vous noublierez pas de donner les droits de lecture (je conseille les droits 750) sur les fichiers contenus dans /var/www/
Ouvrez un navigateur à l'adresse : http://votre_site_ou_adresse_IP/
Vous devriez avoir une page HTML toute simple, avec des liens qui ne fonctionneront pas pour le moment (nous installerons les services plus tard). Testez le lien "Infos PHP". Si tout se passe bien, vous aurez un grand tableau. C'est que PHP fonctionne :).
AwStats
Installation
Pour installer Awstats, saisissez la commande :
root@> aptitude install awstats
Toujours aussi dur hein ? Mais là, on va bien moins rire avec la configuration
Configuration
Pour commencer, on va déplacer la configuration d'origine dans un autre fichier afin de pouvoir créer de multiples configurations qui se baseront sur la configuration d'origine.
root@> cd /etc/awstats root@/etc/awstats> mv awstats.conf awstats.conf.local
Ensuite, créez le fichier /etc/awstats/awstats.conf et placez-y le contenu suivant :
Include "/etc/awstats/awstats.conf.local" LogFile="/var/log/apache2/access.log" SiteDomain="votre.site.web.SANS.le.HTTP" DirData="/var/lib/awstats/" ShowHostsStats=0 ShowOriginStats=0 ShowPagesStats=0 ShowKeyphrasesStats=0 ShowKeywordsStats=0 ShowHTTPErrorsStats=0
Ce fichier de configuration représentera les statistiques de votre serveur GLOBAL. Nous verrons plus tard comment créer des fichiers de configuration par sous-domaine.
Une fois fait, nous allons quelque peu modifier le fichier /etc/awstats/awstats.conf.local :
LogFormat=1 AllowFullYearView=3 WarningMessages=1 ErrorMessages="An error occured. Contact your Administrator" DNSLookup=0 #Include "/etc/awstats/awstats.conf.local"
Bien. Seul soucis que j'ai rencontré lors de toutes mes installations, Awstats ne configure pas lui-même Apache2 pour lui faire comprendre qu'il a des images. Créez le fichier /etc/apache2/conf.d/awstats-icon.conf et mettez-y le contenu suivant :
Alias /awstats-icon/ /usr/share/awstats/icon/ <Directory /usr/share/awstats/icon/> Order deny,allow Allow from all </Directory>
Awstats ne fonctionne pas tout seul, il s'agit d'un simple script Perl. Pour le lancer, vous avez besoin de dire a Apache que le CGI est activé :
root@> cd /etc/apache2/mods-enabled root@> ln -sf /etc/apache2/mods-available/cgi.load cgi.load
Enfin, pour lancer régulièrement AwStats, éditez la crontab /etc/cron.d/awstats et placez-y la ligne suivante :
0 * * * * root umask 033; [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache2/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=awstats -update >/dev/null
Pour les personnes qui ne sont pas habituées avec les cron, je vous conseille de faire un petit tour sur cette page (notamment pour la compréhension de 10 * * * *).
Sauvez la contab (comme un fichier avec VI). Votre AwStats se lancera aux moments que vous aurez défini (dans mon exemples toutes les heures). Seulement, il n'y a rien pour visualiser les résultats. Il va donc falloir ajouter un alias dans votre configuration d'Apache2 (/etc/apache2/sites-avaiable/default) :
# CGI ScriptAlias /cgi-XXXX/ /usr/lib/cgi-bin/ <Directory /usr/lib/cgi-bin/> Options ExecCGI -MultiViews AllowOverride None AuthName "Restricted" AuthUserFile /var/www/.htpasswdXXXX AuthGroupFile /dev/null AuthType Basic require valid-user Order Deny,Allow Deny from all Allow from 127.0.0.1 Allow from [votre_IP] Satisfy any </Directory>
Vous voyez que pour vous conecter, on demande une authentification par mot de passe (avec le fichier .htpasswdXXXX). Il vous faudra le créer en saisissant la commande :
root@> htpasswd -c /var/www/.htpasswdXXXX [utilisateur]
Là, le script vous demande de taper et de confirmer un mot de passe, qui sera crypté dans le fichier.
Maintenant, redémarrez Apache2 :
root@> /etc/init.d/apache2 restart
Si aucune erreur n'apparaît, c'est que vous êtes très bien parti pour faire afficher votre première page !
Rendez-vous sur la page de liens mise en place lors de l'installation d'Apache et cliquez sur le lien "Stats web" et croisez les doigts.
Logiquement, on doit vous demander un login et un mot de passe (ceux saisis dans la commande "htpasswd". Renseignez-les et appréciez le spectacle (ou pas :-D).
Vous pouvez faire des stats séparées site par site. Imaginons que vous ayez un site toto.com (dont les fichiers seront dans /home/toto/www/, les logs dans /home/toto/log/ et les données AwStats stockées dans /home/toto/awstats/). Créez le fichier /etc/awstats/awstats.toto.conf qui sera :
Include "/etc/awstats/awstats.conf.local" LogFile="/home/toto/log/access.log" SiteDomain="www.toto.com" DirData="/home/toto/awstats"
Une fois fait, vous devrez ajouter dans la crontab :
5 * * * * root umask 033; [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.toto.conf -a -r /home/toto/log/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=toto -update >/dev/null
Bien, si vous n'avez pas d'erreur, continuons par l'application de MySQL pour gérer une base de données.
L'add-on GeoIP
Cet aadd-on permet de voir de quel pays/ville les visiteurs proviennent. Il permet notamment de s'affranchir du paramètre DNSLookup qui est extrêmement gourmand en ressources (de part ses multiples requêtes Reverse DNS)
Voici comment procéder:
root@> aptitude install libgeo-ip-perl geoip-bin libgeoip1
Une fois fait, nous allons créer un script qui nous permettra de télécharger et/ou mettre à jour les bases de données de GeoIP, car aucun processus automatique n'est prévu.
J'ai pour ma part choisi de le mettre à jour toutes les semaines. Au cours de mes lectures sur le net, il est souvent préconisé de le mettre à jour tous les mois.
Voici donc le script en question :
#!/bin/bash cd /usr/share/GeoIP # GeoIP API wget --quiet http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz if [ $? -eq 0 ] then rm GeoIP.dat gunzip GeoIP.dat.gz else rm GeoIP.dat.gz fi # GeoIP Cities wget --quiet http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz if [ $? -eq 0 ] then rm GeoLiteCity.dat gunzip GeoLiteCity.dat.gz else rm GeoLiteCity.dat.gz fi # GeoIP Organisations wget --quiet http://geolite.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz if [ $? -eq 0 ] then rm GeoIPASNum.dat gunzip GeoIPASNum.dat.gz else rm GeoIPASNum.dat.gz fi
C'est tout bête, mais placé dans /etc/cron.weekly sous le nom de votre choix (chez moi updateGeoIP), il fera le boulot tout seul. On va le lancer à la main une fois pour installer le tout (bah oui, rien n'est présent!) :
root@> chmod +x /etc/cron.weekly/updateGeoIP root@> /etc/cron.weekly/updateGeoIP
Le script ne doit renvoyer aucun output... Si tout se passe bien, vous devriez avoir trois fichiers dans /usr/share/GeoIP :
- GeoIPASNum.dat
- GeoIP.dat
- GeoLiteCity.dat
Une fois fait, ouvrez le fichier /etc/awstats/awstats.conf.local et localisez la ligne commentée :
#LoadPlugin="geoip GEOIP_STANDARD /usr/share/GeoIP/GeoIP.dat"
Remplacez-la par :
LoadPlugin="geoip GEOIP_STANDARD /usr/share/GeoIP/GeoIP.dat" LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /usr/share/GeoIP/GeoLiteCity.dat" LoadPlugin="geoip_org_maxmind GEOIP_STANDARD /usr/share/GeoIP/GeoIPASNum.dat"
Vous pourrez commenter la troisième ligne si celle-ci ne vous interresse pas (savoir a qui appartient la plage IP en terme de provider).
AwStats sur des sites à très fortes visites
Il se peut que vous ayez des soucis quand vous essayez de faire tourner AwStats avec d'importants volumes de log (on parle la de millions de lignes de logs quotidiens).
Si comme moi (nan, pas sur ce blog...), aux alentours du 15 du mois, AwStats prend de plus en plus de temps et de RAM, et que vous souhaitez rendre AwStats plus rapide, vous pouvez, au sacrifice des unique IP, accélérer grandement la vitesse d'exécution de votre AwStats en lancant juste avant le parsing des logs ce script :
#!/bin/bash #Logs de la veille MaDate=`awk 'BEGIN{ printf("%s\n", strftime("%m%Y", systime()-86400)) }'` #Logs du jour #MaDate=`date +%m%Y` for fichier in `ls /var/lib/awstats/awstats${MaDate}.*.txt` do sed -i '/^BEGIN_VISITOR/,/^END_VISITOR/d' $fichier done
Il ne vous reste plus qu'a décommenter la ligne qui vous convient pour la variable MaDate et le tour est joué !
Merci a jfroot pour le conseil !
Et voilà !
MySQL 5 & PHPMyAdmin
Installation
Comme d'habitude, il est très difficile d'installer ce genre d'application.... Cependant, lors des différentes demandes de mot de passe (de mémoire 5 ou 6 fois) pour le compte "root", n'en saisissez pas !!! En effet, le compte root sera a terme supprimé dans notre tuto, il est donc inutile de le sécuriser.
root@> aptitude install mysql-server phpmyadmin mytop
Une fois fait, nous allons tout de suite rajouter une petite couche sécurité.
Configuration
Commencez par taper la commande :
root@> apg -p [uneSeriEdeCaRacTèResComMeVousVoul€z]
Cette commande vous enverra une liste de 6 mots de passe différents, choisissez-en un que nous identifierons par MDP dans le reste du tutoriel.
Effectuez maintenant les opérations suivantes :
root@> mysql mysql> use mysql; mysql> GRANT ALL PRIVILEGES ON *.* TO mysqladmin@localhost IDENTIFIED BY 'MDP' WITH GRANT OPTION; mysql> delete from user where user='root'; mysql> flush privileges; mysql> \q
Comme vous venez de le voir, vous avez supprimé les droits de l'utilisateur root et ajouté un super-utilisateur nommé mysqladmin avec un mot de passe assez hardu.
Comme je suis persuadé que vous aurez un mal fou à le retenir, créez le fichier /root/.my.cnf (attention au POINT avant my) et placez-y les lignes suivantes :
[client] user=mysqladmin password=MDP
Créez également un fichier /root/.mytop dans lequel vous saisirez les commandes suivantes :
user = mysqladmin pass = MDP db = mysql
Cela vous permettra de vous connecter à MySQL et a MyTop sans taper votre mot de passe, mais uniquement en console en ayant effectué un sudo su.
Une fois fait, ajouter l'accès à PhpMyAdmin. Editez le fichier /etc/apache2/sites-avaiable/default et ajoutez le contenu suivant :
Alias /phpmyadmin-XXXX /usr/share/phpmyadmin/
Sauvez le fichier et rechargez Apache2 :
root@> /etc/init.d/apache2 force-reload
Et voila! En vous rendant à l'adresse : http://www.domaine.tld/phpmyadmin-XXXX vous pourrez administrer votre base de données en vous identifiant avec l'utilisateur mysqladmin et le mot de passe MDP.
Passons ensuite au dernier élément qui vous permettra de mettre en place votre premier site : ProFTPd
Squid
Installation
Toujours pareil :
root@> aptitude install squid
Configuration
Pour la configuration, voici le fichier squid.conf que je conseille :
# ports http_port 8888 transparent icp_port 0 # ACL acl all src 0.0.0.0/0.0.0.0 acl localhost src 127.0.0.1/255.255.255.255 acl INTERNE src ADRESSE_IP/32 127.0.0.0/8 acl Safe_ports port 80 # http acl SSL_ports port 443 563 acl WHITELIST url_regex "/etc/squid/whitelist.conf" http_access deny !WHITELIST http_access allow INTERNE http_access deny all access_log /var/log/squid/access.log squid
Il vous suffit de remplacer ADRESSE_IP par l'adresse IP de votre serveur.
Créez ensuite un fichier /etc/squid/whitelist.conf et rajoutez les adresses web externes auxquelles votre serveur aura le droit de se connecter (généralement des adresses de webservices ou de dépôts de paquets). Exemples :
http://.*.facebook.com/.* http://.*.twitter.com/.* http://rss.laposte.net/.*
Et redémarrer Squid après avoir modifié la whitelist
root@> /etc/init.d/squid restart
ProFTPd
Installation
Je suis sur que vous avez déjà deviné que cela allait se passer de la sorte :
root@> aptitude install proftpd
Si si, j'vous jure.
A la question fatidique "inetd ou standalone?" répondez "standalone", Si vous ne savez pas pourquoi... Moi non plus Non pour faire bref, le fait de choisir "standalone" permet une plus grande souplesse pour le redémarrage du service.
Configuration
Ouvrez le fichier de configuration et cherchez les lignes suivantes (ou ajoutez-les le cas échéant):
ServerName "[Votre Nom/Site] FTP Server" ServerType standalone PassivePorts 60000 61000 UseReverseDNS off IdentLookups off #restrictions en kB/s #up #TransferRate APPE,STOR 100 #down #TransferRate RETR 100 <IfModule mod_ctrls_admin.c> AdminControlsEngine on </IfModule> DefaultRoot ~ RequireValidShell on UseFtpUsers off ServerIdent on "FTP Server Ready" AccessGrantMsg "Hey, bienvenue %u sur le serveur FTP de [Votre Nom/Site] !" Umask 027 027
Une fois fait, relancez ProFTPd :
root@> /etc/init.d/proftpd restart
Et voila, vous pouvez vous connecter sur votre FTP à l'adresse : ftp://www.domaine.tld:21/
Vous disposez maintenant de votre serveur Web installé et configuré pour un site dont les fichiers seront a déposer dans /var/www/.
Dans un futur très proche, je rédigerai un tutoriel sur la manière de rajouter un site pouvant être totalement autonome sur la même plateforme que nous venons d'installer.
Si vous avez des remarques, questions, corrections à apporter au sujet, n'hésitez pas à me contacter !
Bonne journée !
Commentaires
Bon tuto ,super merci pour toi !
genial !!! bravo
nouvelle adresses backports...
deb http://backports.debian.org/debian-... squeeze-backports main
Merci Emile Markus pour l'update
Super tuto
j'adore le geoIP
Continue tes tutos si tu peux ils sont génials !
Cordialement
Tout d'abords, un tutoriel magnifique
J'ai juste une question, j'ai fait aussi la partie Teamspeak 3 et je voulais savoir si il était possible d'utiliser awstats pour le serveur Teamspeak
Encore bravo
Super tuto rien à dire
Bravo ! j'avoue l'utiliser quand j'oublie le chemin de certaine config ect..
Cordialement
lors de la creations des lien symboliques pour munin le shell m'envoi paitre avec un "ln: impossible de créer le lien symbolique « ./apache_volume »: Le fichier existe"...
comment resoudre ça ?
Bonjour GrosNoob
2 solutions :
- Ne pas en tenir compte... Le lien existe déjà
- Si le lien symbolique ne fonctionne pas, on peut faire un "ln -sf" pour forcer l'écrasement.
Bonne journée