12Sep

Ajuster un serveur Web virtuel dédié

Lorsque vous disposez d'un serveur virtuel dédié pour exécuter votre site Web, il est probable qu'il est configuré pour tout le monde et qu'il n'est pas personnalisé pour optimiser les performances d'un site Web.

Sommaire

[hide]

  • 1 Présentation
  • 2 Linux Configuration
    • 2.1 Désactiver DNS
    • 2.2 Désactiver SpamAssassain
    • 2.3 Désactiver xinetd
    • 2.4 Limiter l'utilisation de la mémoire de Plesk
    • 2.5 Désactiver ou désactiver Plesk( optionnel)
  • 3 Configuration de 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 PHP Opcode Cache
  • 6 Sauvegardes
    • 6.1 Créer un script de sauvegarde automatisé
    • 6.2 Synchroniser les sauvegardes hors site avec Rsync
  • 7 Sécurité
    • 7.1 Désactiver la racineConnexion via SSH
    • 7.2 Désactivation de SSH Version 1
    • 7.3 Redémarrage du serveur SSH
    • 7.4 Vérification des ports ouverts
    • 7.5 Configuration d'un pare-feu
  • 8 Voir aussi
  • 9 Références

Présentation

Il y a un certain nombre de problèmes où nous voulonst pour maximiser les performances:

  • Linux configuration
    Il y a généralement des services en cours d'exécution qui ne sont pas nécessaires, gaspillant de la mémoire qui pourrait être utilisée pour plus de connexions.
  • Configuration de MySQL
    Souvent, les paramètres par défaut sont 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 ne les utilisez jamais.
  • Configuration PHP
    La configuration par défaut de PHP est similaire, il y a généralement une tonne de modules supplémentaires inutiles installés.
  • PHP Opcode Cache
    Au lieu de permettre à PHP de recompiler les scripts à chaque fois, un cache opcode mettra en mémoire cache les scripts compilés en mémoire pour d'énormes gains de performance.
  • Backups
    Vous devriez probablement installer des sauvegardes automatisées, puisque votre fournisseur d'hébergement ne le fera pas pour vous.
  • Security
    Bien sûr, Linux est assez sécurisé par défaut, mais il y a généralement quelques problèmes de sécurité flagrants que vous pouvez résoudre avec quelques paramètres rapides.

Linux Configuration

Il y a un certain nombre de réglages que vous pouvez faire, qui varient légèrement en fonction du serveur que vous utilisez. Ces réglages sont pour un serveur exécutant CentOS, mais ils devraient fonctionner pour la majorité des serveurs DV.

Désactiver DNS

Si votre fournisseur d'hébergement traite le DNS de votre domaine( probablement), vous pouvez désactiver le service DNS.

désactiver dns /etc/init.d/ nommé stop chmod 644 /etc/init.d/ nommé

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 les comptes de messagerie sur votre serveur, vous ne devriez pas vous soucier de lancer des outils anti-spam.

/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 typique.

/etc/init.d/ xinetd stop 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 été vérifiée sur aucun autre.(Voir les références)

Désactiver ou désactiver Plesk( facultatif)

Si vous n'utilisez Plesk qu'une fois par an, il y a très peu de raisons 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 le désactiver au démarrage en exécutant la commande suivante:

chmod 644 /etc/init.d/ psa

Notez que si vous le désactivez, vous ne pouvez pas le démarrer manuellement sanschanger les permissions de fichier en arrière( chmod u + x).

Configuration de MySQL

Activer le cache de requêtes

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

[mysqld] type de cache de requête = 1 query-cache-size = 8M

Vous pouvezajoutez 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 permettent l'accès à MySQL sur TCP / IP par défaut, ce qui n'a aucun sens pour un site web. Vous pouvez déterminer si mysql écoute sur TCP / IP en lançant la commande suivante:

netstat -an |grep 3306

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

skip-networking

Configuration Apache

Ouvrez votre fichier httpd.conf, souvent trouvé dans /etc/httpd/conf/ httpd.conf

Trouvez la ligne qui ressemble à ceci:

Timeout 120

Et changez-le en:

Timeout 20

Maintenant trouvez la section qui inclut ces lignes, et ajustez quelque chose de similaire:

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

PHP Configuration

Une des choses àGardez à l'esprit lorsque vous peaufinez un serveur sur la plate-forme PHP, c'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, sur 40 threads Apache, vous gaspillez 10 Mo de mémoire.

Supprimer les modules PHP inutiles

Vous devrez localiser votre fichier php.ini, qui se trouve généralement sur /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

Commentaire sur toutes les lignes LoadModule avec ces modules:

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

Todo:. Ajouter plus d'informations ici

PHP Opcode Cache

Ilsont un certain nombre de caches d'opcode que vous pouvez utiliser, y compris APC, eAccelerator et Xcache, le dernier étant ma préférence personnelle en raison de la stabilité

Télécharger xcache et l'extraire dans un répertoire, puis exécutez les commandes suivantes à partir de la source xcacherépertoire:

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

Ouvrez votre fichier php.ini etajouter une nouvelle section pour xcache. Vous devrez ajuster les chemins si vos modules php sont chargés depuis un autre endroit.

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 = "mon nom d'utilisateur" xcache.admin.pass = "putanmd5hashhere"[xcache];Changez xcache.size pour ajuster la taille du cache d'opcode xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K 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_gc_interval = 300 xcache.test = Désactivé xcache.readonly_protection =Sur xcache.mmap_path = "/tmp/ xcache" xcache.coredump_directory = "" xcache.cacher = Sur xcache.stat = Sur xcache.optimizer = Désactivé

A présent: Besoin de développer un peu ce lien et de le lier à xcache dans les références.

Backups

Il n'y a rien de plus important que d'avoir des sauvegardes automatisées de votre site Web. Vous pouvez peut-être obtenir des sauvegardes instantanées de votre fournisseur d'hébergement, qui sont également très utiles, mais je préfère aussi 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 de fichiers /backups/ en dessous. Vous pouvez ajuster ces chemins si vous le souhaitez.

mkdir -p Fichiers /backups/

Maintenant, créez un script backup.sh dans le répertoire des sauvegardes:

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%%% M` mysqldump -uadmin -pPASSWORD DATABASENAME & gt;/backups/files/ dbbackup $ THEDATE.bak tar -cf /backups/files/ sitebackup $ THEDATE.tar /var/www/vhosts/ mon-site-web-chemin / httpdocs gzip /backups/files/ sitebackup $ THEDATE.tar trouver /backups/files/ site * -mtime +5 -exec rm{ } \;trouver /backups/files/ db * -mtime +5 -exec rm{ } \;

Le script créera d'abord une variable de date afin que tous les fichiers portent le même nom pour une seule sauvegarde, puis la base de données, les fichiers web et les gzips. Les commandes find sont utilisées pour supprimer tous les fichiers de plus de 5 jours, car vous ne voulez pas que votre disque manque d'espace.

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

chmod + /backups/ backup.sh

Ensuite, vous devrez l'assigner à exécuter automatiquement par cron. Assurez-vous que vous utilisez un compte qui a accès au répertoire de sauvegardes.

crontab -e

Ajoutez la ligne suivante à la crontab:

1 1 * * * /backups/ backup.sh

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

Synchronisation des sauvegardes hors site avec Rsync

Maintenant que vous avez des sauvegardes automatisées de votre serveur en cours d'exécution, vous pouvez les synchroniser ailleurs en utilisant l'utilitaire rsync. Vous aurez envie de lire cet article sur la façon de configurer les 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 un ordinateur Linux ou Mac à un autre endroit( I

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

Cela prendra un certain temps à s'exécuter la première fois, mais à la fin de votre ordinateur local devrait avoir une copiedu répertoire des 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 exécutera rsync toutes les heures au bout de 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 programmer l'exécution à une heure différente, ou seulement une fois par jour. C'est vraiment à vous de voir.

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

Security

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

Désactiver la connexion racine sur SSH

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

#PermitRootLogin yes

Remplacez cette ligne par la suivante:

PermitRootLogin no

Assurez-vous que vous avez un compte d'utilisateur normal et pouvez su suracine avant de faire ce changement, sinon vous pourriez vous enfermer.

Désactiver SSH Version 1

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

#Protocol 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érification des ports ouverts

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

netstat -an |grep ECOUTE

Vous ne devriez vraiment rien avoir d'autre à écouter que les ports 22, 80, et peut-être 8443 pour plesk.

Configuration d'un pare-feu

Article principal: Utilisation d'Iptables sous Linux

Vous pouvez éventuellement configurer un pare-feu iptables pour bloquer plus de connexions. Par exemple, je bloque généralement l'accès à tous les ports autres 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 un pare-feu au mélange, mais il est bon de comprendre vos options.

Voir aussi

  • Utilisation d'Iptables sous Linux Références

  • Optimisation de votre serveur DV( mediatemple.net)
  • XCache