Astuces de Webmaster

Tag: Architecture

Mon site est lent, que faire (serveurs dédiés)

by Rom's on 24 nov 2011, under Architecture

Si votre site est lent, il peut y avoir plusieurs raisons :
- ça peut être un problème serveur, un problème de connexion Internet ou une lenteur d’affichage

Pour les problèmes de connexion Internet, on ne peut pas faire grand chose
Pour les problèmes de lenteur d’affichage, les outils Yslow et PageSpeed (en ligne via gtmetrix.com ou couplés à Firebug pour Firefox) vous donneront toutes les informations utiles pour optimiser votre site, la CSS, les images, etc.
On s’intéressera ici à la partie Serveur, les raisons sont souvent parmi les suivantes :
- des requêtes trop lourdes ou trop fréquentes, ou les deux
- des processus (tâches, générations de fichiers) trop longs (parfois à cause des requêtes)
- des serveurs « extérieurs » qui appellent vos scripts/images trop souvent (un gros site qui appelle vos images fera planter votre serveur si vous n’êtes pas dimensionné pour son trafic)

Requêtes trop lourdes

Connectez-vous en ligne de commande (SSH) à votre console MySQL (ou via phpMyAdmin dans l’onglet processus sur l’accueil) et regardez les processus en cours (commande SQL « SHOW FULL PROCESSLIST; »), vous en verrez peut-être des récurrentes, ou des longues. Maintenant, vous savez quoi optimiser.

Si votre processlist est souvent vide ou pleine de « sleep », tout va bien. S’il y a trop de sleep avec une durée trop longue, réduisez votre timeout ou utilisez mysql_connect plutôt que mysql_pconnect. 2mn peut être une durée honnête pour un timeout.

Identifier les scripts consommateurs

Pour identifier les scripts consommateurs, il est intéressant d’utiliser un petit programme : Apachetop (apt-get install apachetop sous debian – comment installer ?)

Pour voir l’état du serveur, il est bon d’utiliser htop (apt-get install htop sous Debian),

Identifier les extérieurs

Pour voir les extérieurs qui appellent vos scripts, rien de tel qu’un bon vieux tail -f /var/log/apache2/error.log (à modifier par votre nom de fichier d’erreur)

Laisser un commentaire :, , , , , , Lien Permanent

Synchronisez vos serveurs !

by Rom's on 29 mar 2011, under Architecture

Lorsque vous vous échangez des fichiers avec des partenaires, etc. il est plutôt de bon ton d’être synchro.

Pour cela, rien de plus simple, une commande vous permet de vous synchroniser avec un serveur donné.

Exemple :
ntpdate ntp.univ-lyon1.fr

Après, il vous suffit de programmer un cron (automate) tous les jours à 2, 3 et 4h et vous êtes relativement tranquilles.

Pour rappel, vous pouvez souvent programmer un cron grâce au webmin de votre serveur, rubrique Système > taches cron (si vous n’avez pas webmin, installez-le !) ou en ligne de commande (man crontab si ça vous amuse)

Pour vérifier l’heure de votre serveur, il vous suffit d’afficher la date courante :

echo $(date '+%H.%M.%S')

Laisser un commentaire :, , , , , , Lien Permanent

Créer un serveur FTP sous Debian (2011)

by Rom's on 03 mar 2011, under Architecture

Je connais pas mal de développeurs plus ou moins bons qui ne savent pas commenter monter un FTP, j’ai décidé de suivre les étapes de bout en bout en suivant des tutoriels déjà rédigés, qui posent tous des problèmes du fait qu’ils sont datés. J’ai ici remis à jour tout ce qu’il faut avec les bonnes versions, etc. Vous devriez avoir dans cette page tout ce qu’il faut pour créer FTP à partir de rien. J’ai mis les tutoriels source par respect pour les auteurs. J’ai modifié les tutoriels d’origine en ajoutant des informations qui m’ont semblé utiles.

ATTENTION pour les débutants, si les commandes que vous faites ne fonctionnent pas, certaines nécessitent d’être connecté en « root ». Pour ce faire, tapez la commande « su » et tapez le mot de passe root pour avoir les pleins pouvoirs.

Nous allons utiliser Very Secure FTPd (autrement appelé vsftpd qui équipe des serveurs FTP tels que ceux Red Hat, Suse, OpenBSD, kernel.org et bien (bien sûr) Debian.

Loggez vous en root et tapez :
# apt-get install vsftpd

Une fois vsftpd installé, il faudra remplacer le fichier de configuration /etc/vsftpd.conf par le suivant :

# Nous voulons que le serveur fonctionne en mode standalone
listen=YES
#
# On ne veut surtout pas de connexions en mode anonymous
anonymous_enable=NO
#
# On veut que les utilisateurs locaux puissent se connecter
local_enable=YES
#
# On veut que les utilisateurs puissent remonter des fichiers sur le serveur
write_enable=YES
#
# On fixe le masque local a 022 (les fichiers remontés auront des droits en 755)
local_umask=022
#
# On interdit l’upload anonyme
anon_upload_enable=NO
#
# Idem pour la creation de repertoires
anon_mkdir_write_enable=NO
#
# On demande a ce que les actions des utilisateurs soient loggees
xferlog_enable=YES
#
# On verifie que la commande PORT provienne bien du port 20 de la machine cliente
connect_from_port_20=YES
#
# Les logs seront enregistres dans le fichier /var/log/vsftpd.log
xferlog_file=/var/log/vsftpd.log
#
# On declare les valeurs de timeout. Celles fournies par defaut sont ok pour notre utilisation
idle_session_timeout=300
data_connection_timeout=120
connect_timeout=60
accept_timeout=60
#
# Par securite, on interdit la commande ABOR
async_abor_enable=NO
#
# Les transferts en ASCII sont souvent source de confusions
ascii_upload_enable=NO
ascii_download_enable=NO
#
# Par securite, on change la banniere
ftpd_banner=Bienvenue sur le serveur Debian Addict
#
# On veut limiter les utilisateurs a leur repertoire
chroot_local_user=YES
chroot_list_enable=NO
#
# Les heures d’enregistrement des fichiers seront affichees a l’heure locale
use_localtime=YES

Une fois le fichier de configuration remplacé, on relance le serveur FTP en tapant en root :
# /etc/init.d/vsftpd restart

A partir de ce moment, les utilisateurs ont accès à leurs répertoires personnels via FTP et leurs actions sont enregistrées dans le fichier /var/log/vsftpd.log.

Il nous reste donc à créer un répertoire commun auquel chacun aura accès. Pour cela, on crée un utilisateur lambda que l’on appellera « commun » [1]. En root, tapez :
# adduser identifiantutilisateur

Le système demande ensuite le mot de passe de l’utilisateur puis différents renseignements qui sont à passer. Ce n’est PAS le mot de passe FTP, juste le mot de passe de l’utilisateur.

NB : Pour connaître les utilisateurs existants, en faisant cat /etc/passwd ou cat /etc/group, cela affiche les utilisateurs et les groupes qui existent dans ces fichiers, à savoir que les commandes getent passwd et getent group affichent en plus les utilisateurs de tous les annuaires connus.

Définition des droits sur le
# chmod -R 755 /home/identifiantutilisateur
# chown identifiantutilisateur:identifiantutilisateur -R /home/identifiantutilisateur

A ce stade, si on essaie de s’identifier avec un utilitaire FTP, le client arrivera à se connecter au serveur mais il proposera une belle erreur 530 vsftpd FAIL LOGIN: Client
Il faut donc continuer et préciser les utilisateurs/mots de passe que l’on veut pour le FTP

Nous allons utiliser une base de données pour les noms et mots de passe des utilisateurs virtuels.

On a besoin d’un utilitaire de base de données qui nous servira à hasher les couples identifiant/mot de passe.

Dans le répertoire /etc/vsftpd/ nous allons créer un fichier login.txt contenant les infos de login, il est formé sous cette forme :


user1
pass1
user2
pass2
user3
pass3

Attention, ici, l’éditeur de Winscp par exemple rajoute une ligne à la fin, même si on n’en a pas l’impression, ce qui affiche le message « db4.6_load: odd number of key/data pairs« , il suffit alors de vérifier en SSH en utilisant la fonction nano par exemple :

nano /etc/vsftpd/login.txt
une fois la dernière ligne vide supprimée s’il y en a une, faites Ctrl+X pour quitter, et confirmer avec un O majuscule puis entrée

Une fois le fichier fait, nous créons la base de données qui serat utilisé par PAM :
Installez db4.6 :
apt-get install db4.6-util
puis hashez les données du fichier login.txt dans un format sécurisé et compréhensible par vsftpd :

db4.6_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db

On sécurise les fichiers

chmod 600 /etc/vsftpd/login.db
sudo chmod 600 /etc/vsftpd/login.txt

Il faut informer le module PAM, dans le fichier etc/pam.d/vsftpd :

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/login

Et voilà, vous pouvez vous connecter via le port 21 normalement.

Merci pour vos retours !

Sources :
http://www.debianaddict.org/article47.html
http://olange.developpez.com/articles/debian/installation-serveur-dedie/?page=page_5
http://www.cpasdemoi.fr/securisation-ssl-et-utilisateurs-pour-le-serveur-ftp-vsftpd-sur-debian-lenny/
http://doc.fedora-fr.org/wiki/Vsftpd_:_Installation_et_configuration
http://www.developpez.net/forums/d744109/systemes/linux/reseau/vsftpd-serveur-dedie/

ATTENTION : vérifiez bien les droits d’accès autres que SSH aux utilisateurs que vous créez !!
Lire ceci : Autorisations SSH pour les utilisateurs (compatible Debian)
En deux mots :
1. précisez grâce à un AllowUsers monutilisateur1 monutilisateur2 dans /etc/ssh/sshd_config qui est autorisé
2. vous pouvez faire idem avec les groupes (AllowGroups group1 group2)
3. redémarrez ssh avec /etc/init.d/ssh restart
4. Faites des tests !

14 Comments :, , , Lien Permanent

Optimiser sa base de données MySQL

by Rom's on 04 oct 2010, under Architecture

Je viens de tomber sur un petit recueil d’astuces pour optimiser ses requêtes et sa base de données MySQL que j’aimerais partager avec vous.

Tout est ici : http://www.lephpfacile.com/manuel-mysql/mysql-optimization.php#tips

- vérifier les index / créés vs qui devraient exister
- types de tables (MyISAM,…)
- éviter les varchar et blob pour ce qui est régulièrement modifié
- pas forcément utile de scinder les grosses tables en plus petites
-…

Une petite check-list à se faire de temps en temps !

Laisser un commentaire :, , , Lien Permanent

Evolution Architecture Serveurs Web

by Rom's on 10 mar 2009, under Architecture

Tout au long de l’évolution d’un site Internet, on doit faire évoluer la structure technique de façon à pouvoir absorber le trafic et diminuer les risques qui deviennent de plus en plus coûteux.

Je vous invite à lire cet excellent article du site haute-disponibilite.net qui reprend un document de présentation d’une société spécialisée.

http://www.haute-disponibilite.net/2008/09/25/planning-des-evolutions-de-votre-architecture-web/

C’est un début et c’est une proposition, ça a le mérite d’exister.

Laisser un commentaire :, , , , Lien Permanent

Vous cherchiez ?

Recherche rapide :

Vous ne trouvez toujours pas ? Laissez un petit commentaire sur un article, qu'on puisse regarder ça de plus près !