Page d'accueil » comment » Mise au point d'un serveur Web virtuel dédié

    Mise au point d'un serveur Web virtuel dédié

    Lorsque vous avez un serveur virtuel dédié pour exécuter votre site Web, il y a de bonnes chances qu'il soit configuré pour tout le monde et non personnalisé pour optimiser les performances d'exécution d'un site Web..

    Contenu

    [cacher]

    • 1. Vue d'ensemble
    • 2 Configuration Linux
      • 2.1 Désactiver le DNS
      • 2.2 Désactiver SpamAssassain
      • 2.3 Désactiver xinetd
      • 2.4 Limiter l'utilisation de la mémoire Plesk
      • 2.5 Désactiver ou désactiver Plesk (facultatif)
    • 3 Configuration MySQL
      • 3.1 Activer le cache de requêtes
      • 3.2 Désactiver TCP / IP
    • 4 Configuration Apache
    • 5 configuration PHP
      • 5.1 Supprimer les modules PHP inutiles
      • 5.2 Cache PHP Opcode
    • 6 sauvegardes
      • 6.1 Créer un script de sauvegarde automatique
      • 6.2 Synchroniser les sauvegardes hors site avec Rsync
    • 7 sécurité
      • 7.1 Désactiver la connexion racine sur SSH
      • 7.2 Désactiver SSH Version 1
      • 7.3 Redémarrer le serveur SSH
      • 7.4 Vérifier les ports ouverts
      • 7.5 Configurer un pare-feu
    • 8 Voir aussi
    • 9 références

    Vue d'ensemble

    Nous voulons optimiser les performances pour un certain nombre de problèmes:

    • Configuration Linux
      Il y a généralement des services en cours d'exécution qui n'ont pas besoin d'être, gaspillant de la mémoire qui pourrait être utilisée pour plus de connexions.
    • Configuration de MySQL
      Les paramètres par défaut étant souvent basés sur un petit serveur, nous pouvons ajouter quelques modifications clés pour améliorer considérablement les performances..
    • Configuration Apache
      Par défaut, la plupart des hébergeurs installent apache avec presque tous les modules installés. Il n'y a aucune raison de charger des modules si vous n'allez jamais les utiliser.
    • Configuration PHP
      La configuration PHP par défaut est similaire, il y a généralement une tonne de modules supplémentaires inutiles installés.
    • Cache PHP Opcode
      Au lieu de permettre à PHP de recompiler les scripts à chaque fois, un cache opcode mettra en cache les scripts compilés en mémoire pour une amélioration considérable des performances..
    • Des sauvegardes
      Devrait probablement mettre en place des sauvegardes automatiques, car votre hébergeur ne le fera pas pour vous.
    • Sécurité
      Bien sûr, Linux est suffisamment sécurisé par défaut, mais il y a généralement des problèmes de sécurité criants que vous pouvez résoudre avec quelques paramètres rapides..

    Configuration Linux

    Vous pouvez effectuer un grand nombre de modifications, qui varient légèrement en fonction du serveur que vous utilisez. Ces réglages concernent un serveur exécutant CentOS, mais ils devraient fonctionner pour la majorité des serveurs DV..

    Désactiver le DNS

    Si votre fournisseur d'hébergement gère le DNS de votre domaine (probablement), vous pouvez désactiver l'exécution du service DNS..

    désactiver DNS /etc/init.d/named stop chmod 644 /etc/init.d/named

    La commande chmod supprime l'autorisation d'exécution du script, l'empêchant de s'exécuter au démarrage.

    Désactiver SpamAssassain

    Si vous n'utilisez pas de comptes de messagerie sur votre serveur, vous ne devriez pas vous préoccuper d'utiliser des outils anti-spam. (Vous devriez également consulter Google Apps, solution de messagerie beaucoup plus performante)

    /etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin

    Désactiver xinetd

    Le processus xinetd contient un certain nombre d’autres processus, dont aucun n’est utile pour un serveur Web classique..

    /etc/init.d/xinetd arrêter chmod 644 /etc/init.d/xinetd

    Limiter l'utilisation de la mémoire Plesk

    Si vous utilisez le panneau plesk, vous pouvez le forcer à utiliser moins de mémoire en ajoutant un fichier d'options..

    vi /usr/local/psa/admin/conf/httpsd.custom.include

    Ajoutez les lignes suivantes au fichier:

    MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5

    Notez que cette option est connue pour fonctionner sur les serveurs MediaTemple DV, mais n’a pas été cochée sur d’autres. (Voir références)

    Désactiver ou désactiver Plesk (facultatif)

    Si vous n’utilisez que Plesk une fois par an, il n’ya aucune raison de le laisser fonctionner. Notez que cette étape est complètement facultative et légèrement plus avancée.

    Exécutez la commande suivante pour désactiver plesk:

    /etc/init.d/psa stop

    Vous pouvez désactiver son exécution au démarrage en exécutant la commande suivante:

    chmod 644 /etc/init.d/psa

    Notez que si vous le désactivez, vous ne pourrez pas le démarrer manuellement sans redéfinir les autorisations de fichier (chmod u + x)..

    Configuration de MySQL

    Activer le cache de requêtes

    Ouvrez votre fichier /etc/my.cnf et ajoutez les lignes suivantes dans votre section [mysqld] comme ceci:

    [mysqld] query-cache-type = 1 query-cache-size = 8M

    Vous pouvez ajouter plus de mémoire au cache de requête si vous le souhaitez, mais n'utilisez pas trop.

    Désactiver TCP / IP

    Un nombre surprenant d'hôtes permet par défaut d'accéder à MySQL sur TCP / IP, ce qui n'a aucun sens pour un site Web. Vous pouvez déterminer si mysql écoute sur TCP / IP en exécutant la commande suivante:

    netstat -an | grep 3306

    Pour le désactiver, ajoutez la ligne suivante à votre fichier /etc/my.cnf:

    sauter le réseautage

    Configuration Apache

    Ouvrez votre fichier httpd.conf, qui se trouve souvent dans /etc/httpd/conf/httpd.conf

    Trouvez la ligne qui ressemble à ceci:

    Timeout 120

    Et changez ceci en ceci:

    Délai d'attente 20

    Recherchez maintenant la section contenant ces lignes et ajustez-vous à quelque chose de similaire:

    StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000

    Configuration PHP

    Une des choses à garder à l’esprit lorsque vous modifiez un serveur sur la plate-forme PHP est que chaque thread Apache va charger PHP dans un emplacement séparé en mémoire. Cela signifie que si un module inutilisé ajoute 256 Ko de mémoire à PHP, vous perdez 10 Mo de mémoire sur 40 threads Apache..

    Supprimer les modules PHP inutiles

    Vous aurez besoin de localiser votre fichier php.ini, qui se trouve généralement dans /etc/php.ini (notez que sur certaines distributions, il y aura un répertoire /etc/php.d/ avec un certain nombre de fichiers .ini, un pour chaque module.

    Mettez en commentaire toutes les lignes de module de chargement avec ces modules:

    • odbc
    • snmp
    • pdo
    • odbc pdo
    • mysqli
    • ioncube-loader
    • JSON
    • imap
    • LDAP
    • ncurses

    Todo: Ajoutez plus d'informations ici.

    Cache PHP Opcode

    Vous pouvez utiliser un certain nombre de caches d'opcode, notamment APC, eAccelerator et Xcache, le dernier étant ma préférence personnelle en raison de la stabilité..

    Téléchargez xcache et extrayez-le dans un répertoire, puis exécutez les commandes suivantes à partir du répertoire source xcache:

    phpize ./configure --enable-xcache make make install

    Ouvrez votre fichier php.ini et ajoutez une nouvelle section pour xcache. Vous aurez besoin d'ajuster les chemins si vos modules php sont chargés ailleurs.

    vi /etc/php.ini

    Ajoutez la section suivante au fichier:

    [xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "nomutilisateur" xcache.admin.pass = "putanmd5hashhere" [xcache]; Modifiez xcache.size pour ajuster la taille du cache d'opcode xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8 Ko xcache.ttl = 0 xcache.gc_interval = 0; Changez xcache.var_size pour ajuster la taille du cache variable xcache.var_size = 1M xcache.var_count = 1 xcache.var_slots = 8K xcache.var_ttl = 0 xcache.var_maxttl = 0 xcache.var_slots = 8 x Sur xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = on xcache.stat = on xcache.optimizer = off

    Todo: Besoin d’étendre ceci un peu et d’être lié à xcache dans les références.

    Des sauvegardes

    Il y a très peu plus important que d'avoir des sauvegardes automatisées de votre site Web. Vous pourrez peut-être obtenir des sauvegardes instantanées de votre fournisseur d'hébergement, qui sont également très utiles, mais je préfère également avoir des sauvegardes automatisées..

    Créer un script de sauvegarde automatique

    Je commence généralement par créer un répertoire / backups, avec un répertoire / backups / files en dessous. Vous pouvez ajuster ces chemins si vous voulez.

    mkdir -p / backups / files

    Créez maintenant un script backup.sh dans le répertoire backups:

    vi /backups/backup.sh

    Ajoutez ce qui suit au fichier, en ajustant les chemins et le mot de passe mysqldump si nécessaire:

    #! / bin / sh THEDATE = "date +% d% m% y% H% M" mysqldump -uadmin -pPASSWORD DATABASENAME> /backups/files/dbbackup$THEDATE.bak .tar / var / www / vhosts / chemin-mon-site / httpdocs gzip /backups/files/sitebackup$THEDATE.tar trouver / backups / files / site * -mtime +5 -exec rm  \; find / backups / files / db * -mtime +5 -exec rm  \;

    Le script créera d’abord une variable de date afin que tous les fichiers soient nommés de la même manière pour une sauvegarde unique, puis vide la base de données, prépare les fichiers Web et les gzippe. Les commandes de recherche permettent de supprimer les fichiers de plus de 5 jours, car vous ne voulez pas que votre lecteur manque d’espace..

    Rendre le script exécutable en exécutant la commande suivante:

    chmod u + x /backups/backup.sh

    Ensuite, vous devrez l'assigner pour qu'il s'exécute automatiquement par cron. Assurez-vous que vous utilisez un compte ayant accès au répertoire de sauvegarde..

    crontab -e

    Ajoutez la ligne suivante à la crontab:

    1 1 * * * /backups/backup.sh

    Vous pouvez tester le script à l'avance en l'exécutant alors que vous êtes connecté au compte d'utilisateur. (Je lance généralement les sauvegardes en tant que root)

    Synchroniser les sauvegardes hors site avec Rsync

    Maintenant que les sauvegardes automatisées de votre serveur sont en cours d'exécution, vous pouvez les synchroniser ailleurs à l'aide de l'utilitaire rsync. Vous voudrez lire cet article sur la configuration des clés ssh pour la connexion automatique: Ajouter une clé publique SSH au serveur distant en une seule commande

    Vous pouvez tester cela en exécutant cette commande sur une machine Linux ou Mac ailleurs (j'ai un serveur Linux à la maison, c'est là que je lance ceci)

    rsync -a [email protected]: / backups / files / * / offsitebackups /

    La première exécution prendra un certain temps, mais à la fin, votre ordinateur local devrait avoir une copie du répertoire de fichiers dans le répertoire / offsitebackups /. (Assurez-vous de créer ce répertoire avant d'exécuter le script)

    Vous pouvez planifier cela en l'ajoutant à une ligne crontab:

    crontab -e

    Ajoutez la ligne suivante, qui lancera rsync toutes les heures à la fin des 45 minutes. Vous remarquerez que nous utilisons le chemin complet de rsync ici.

    45 * * * * / usr / bin / rsync -a [email protected]: / backups / files / * / offsitebackups /

    Vous pouvez planifier son exécution à une heure différente ou une fois par jour. C'est vraiment à vous.

    Notez qu'il existe de nombreux utilitaires qui vous permettront de synchroniser via ssh ou ftp. Vous n'êtes pas obligé d'utiliser rsync.

    Sécurité

    La première chose que vous voulez faire est de vous assurer que vous avez un compte utilisateur normal à utiliser via ssh, et que vous pouvez utiliser su pour passer à la racine. C'est une très mauvaise idée d'autoriser la connexion directe à root over ssh.

    Désactiver la connexion racine sur SSH

    Editez le fichier / etc / ssh / sshd_config et recherchez la ligne suivante:

    #PermitRootLogin oui

    Changez cette ligne pour ressembler à ceci:

    PermitRootLogin no

    Assurez-vous que vous avez un compte utilisateur régulier et que vous pouvez vous connecter à la racine avant de faire ce changement, sinon vous pourriez vous verrouiller..

    Désactiver SSH Version 1

    Il n'y a vraiment aucune raison d'utiliser autre chose que SSH version 2, car elle est plus sécurisée que les versions précédentes. Editez le fichier / etc / ssh / sshd_config et recherchez la section suivante:

    #Protocole 2,1 Protocole 2

    Assurez-vous que vous utilisez uniquement le protocole 2 comme indiqué.

    Redémarrer le serveur SSH

    Vous devez maintenant redémarrer le serveur SSH pour que cela prenne effet..

    /etc/init.d/sshd restart

    Vérifier les ports ouverts

    Vous pouvez utiliser la commande suivante pour voir les ports sur lesquels le serveur écoute:

    netstat -an | grep ECOUTER

    Vous ne devriez vraiment avoir d’écoute que sur les ports 22, 80 et éventuellement 8443 pour Plesk..

    Installer un pare-feu

    Article principal: Utiliser Iptables sur Linux

    Vous pouvez éventuellement installer un pare-feu iptables pour bloquer plus de connexions. Par exemple, je bloque généralement l'accès à d'autres ports que ceux de mon réseau de travail. Si vous avez une adresse IP dynamique, vous voudrez éviter cette option.

    Si vous avez déjà suivi toutes les étapes de ce guide jusqu'à présent, il n'est probablement pas nécessaire d'ajouter également un pare-feu au mixage, mais il est bon de comprendre vos options..

    Voir également

    • Utiliser Iptables sur Linux

    Références

    • Optimiser votre serveur DV (mediatemple.net)
    • XCache