Tag: SSH
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),
![htop-screen[1]](http://www.astucesdewebmaster.com/wp-content/uploads/2011/11/htop-screen1-300x164.jpg)
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)
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')
Commandes SSH pour MySQL
by Rom's on 19 oct 2010, under Développement Web
Se connecter en SSH à un SGBD MySQL lorsque l’on est connecté en SSH
mysql -u UTILISATEUR -p
Une invite vous demande alors de taper le mot de passe. Si vous ne vous trompez pas, le prompteur est précédé de mysql> dorénavant pour signifier que vous êtes en invite de commande MySQL.

Sélectionner une base de données
(vous pouvez également la passer en paramètre dans la ligne de commande plus haut mais cette méthode permet davantage d’utilisations).
mysql> USE NOMBDD
Ce qui devrait vous renvoyer « Database changed »
doc
Faire des requêtes
Contrairement à PHPMyAdmin et compagnie, vous devez absolument terminer vos requêtes par un point virgule. Si vous ne le faites pas et que vous faites entrer, l’invite vous proposera de compléter votre requête jusqu’à ce que vous terminiez votre requête par un point virgule et que vous validiez.


Exécuter une liste de requêtes MySQL
Il suffit d’exécuter une commande du type
mysql -u[nomUtilisateur] -p [nomBaseDeDonnees] < "/chemin/vers/fichier_contenant_requetes.txt"
L’invite de commande vous demandera votre mot de passe puit affichera de nouveau le prompteur si tout se passe bien Evidemment, chaque requête doit être terminée par un point virgule.


Pour exporter les résultats d’une requête vers un fichier texte ou autre
Il ne faut pas être connecté sur le serveur MySQL : si vous êtes connecté, tapez la commande « exit; » pour vous retrouver sur le shell standard puis tapez cette commande :
mysql -u[nomUtilisateur] -p [nomBaseDeDonnees] < /tmp/sql.sql > /tmp/outfile.txt;
ou si vous êtes déjà dans l’invite MySQL
SELECT * FROM table WHERE 1 INTO OUTFILE ‘/tmp/testRequeteExport.sql’;
Pour exporter une base vers un fichier
Il ne faut pas être connecté sur le serveur MySQL : si vous êtes connecté, tapez la commande « exit; » pour vous retrouver sur le shell standard puis tapez cette commande :
mysqldump -u[nomUtilisateur] -p [nomBaseDeDonnees] > /tmp/export_nomBaseDeDonnees.sql;
un prompt vous demandera le mot de passe de l’utilisateur en question

Pour exporter une table vers un fichier
Il ne faut pas être connecté sur le serveur MySQL : si vous êtes connecté, tapez la commande « exit; » pour vous retrouver sur le shell standard puis tapez cette commande :
mysqldump -u[nomUtilisateur] -p [nomBaseDeDonnees] [nomTable] > /tmp/export_nomBaseDeDonneesEtTable.sql;
un prompt vous demandera le mot de passe de l’utilisateur en question
MySQLDump – Sauvegarder sa base MySQL dans un fichier (Debian ou autre)
by Rom's on 06 oct 2010, under Architecture
MySQL est une des bases de données les plus utilisées sur Linux aujourd’hui, et une des problématiques les plus récurrentes est d’exporter sa base pour une raison ou une autre (exports sur d’autres serveurs, sauvegardes,…)
Une bonne commande pour faire cela est mysqldump, Pour faire cela, vous devez utiliser le shell (via putty par exemple) pour vous connecter sur votre serveur dédié ou sur votre poste de travail sous linux. Si vous êtes sur un serveur mutualisé, il faut que vous voyez avec votre hébergeur, pourquoi pas dans votre interface d’administration si vous en avez une.
MySQLDump prépare le script pour (re-)créer les tables et le contenu de celles-ci, prêt à être importé plus tard.
La commande au plus simple :
mysqldump -u [nomUtilisateur] -p [motDePasse] -B [nomBDD] > [fichierSauvegarde].dump
Si vous ne saisissez pas le mot de passe mais laissez -p il vous demandera de donner le mot de passe. Si vous souhaitez éviter de dévoiler le mot de passe dans l’historique, c’est mieux.
Vous pouvez également ajouter une option pour optimiser la requête.
mysqldump –opt -u [nomUtilisateur] -p [nomBDD] > [fichierSauvegarde].dump
Ceci permettra de supprimer les tables (DROP) avant qu’elles ne soient recréées puis remplies de leur contenu.
Pour des raisons évidentes de taille de base de données, il est parfois bien de compresser (gzipper) le fichier extrait :
mysqldump –opt -u [nomUtilisateur] -p [nomBDD] | gzip > [fichierSauvegarde].dump.gz
Le jour où vous souhaitez réimporter votre base, il suffit d’inverser la flèche. (Attention à dézipper le fichier au préalable – gunzip – s’il était gzippé)
mysql [nomBDD] < [fichierSauvegarde].dump
Pour savoir où sont les fichiers : commande pwd pour voir où vous êtes
La documentation Man de MysqlDump avec toutes les options :
Quelques commandes SSH utiles / Serveurs dédiés
by Rom's on 15 déc 2008, under Architecture, Développement Web, DSI
Quelques commandes SSH utiles pour tout adminstrateur de serveurs dédiés :
Pour utiliser SSH, utilisez Putty sur Windows, ou le terminal sur Mac et Linux; Sur le terminal, entrez la commande « ssh userSSH@ipServeur » ce qui vous invitera à entrer le mot de passe de l’utilisateur « userSSH ».
top
=> indique les processus appelés
=> pendant l’exécution, taper « A » pour avoir des informations sur les tâches, « U » pour classer les processus par %CPU
=> faire ctrl+C (même sur Mac) pour en sortir
time wget URL
=> vous indique le temps pris pour exécuter telle URL
ps aux
affiche des informations sur les processus en cours
==> ps aux | grep ssh vous permet d’afficher les utilisateurs SSH connectés
find /path/to/directory/ -type f -name « fichier.ext » -exec ls -alF {} \; | grep « toto »
==> permet de faire afficher sous forme de liste avec fichier et date les fichiers trouvés à l’aide de la commande find
stat /path/to/file.ext
==> permet d’avoir plus d’infos sur les dates de création, d’accès et de modification du fichier
ex :
Size: 48 Blocks: 8 IO Block: 4096 regular file
Device: ca01h/51713d Inode: 133791 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1001/masociete) Gid: ( 1001/masociete)
Access: 2011-12-13 16:13:58.000000000 +0100
Modify: 2011-08-01 12:46:01.000000000 +0200
Change: 2011-12-13 16:13:41.000000000 +0100
rename
==> permet de renommer des fichiers en ssh. La fonctionnalité la plus utile est la substitution de chaine
Exemple 1 : remplacer tout les fichiers
rename ‘s/_2\.txt/_6.txt/’ *.txt ==> remplace tous les fichiers « blabla_tout-ce que vous Voulez_2.txt » par « blabla_tout-ce que vous Voulez_6.txt »
la partie en gras est le format standard pour la substitution, la partie en italique indique ce qu’on veut remplacer et par quoi on veut le remplacer, séparés par un simple slashe. la partie soulignée indique dans quels fichiers on veut faire ce remplacement.
find ./ -name « *product*.tpl » -exec cat {} \; | grep « livraison gratuite »
==> permet de trouver toutes les chaines « livraison gratuite » se trouvant dans des *product*.tpl
NB : Cet article va être complété au fur et à mesure du temps et des besoins, n’hésitez pas à proposer des commandes en commentaires
Alsacreations a mis pas mal de commandes utiles aussi, voir ici : http://www.alsacreations.com/tuto/lire/613-Monitoring-serveur.html
voir aussi : http://wiki.debian-facile.org/manuel:commande

