Bien que l'hébergement WordPress géré convienne à la plupart des gens, je préfère la flexibilité de l'exécution de mon propre serveur. Le service Web basé sur le cloud (AWS) d'Amazon est l'une des solutions les plus abordables..
Mais si vous ne possédez pas de formation technique approfondie, commencer à utiliser AWS peut être accablant..
Lorsque j'ai installé WordPress pour la première fois sur une instance micro AWS, la mémoire et le plantage de la mémoire étaient constants. Ensuite, lorsque j'ai installé un thème responsive personnalisé sur une instance plus grande, il était encore assez lent..
Ce guide vous fournit une approche détaillée, étape par étape, pour configurer votre blog WordPress sur AWS de manière économique et à haute performance, à l'aide d'une micro (ou petite) instance AWS s'exécutant sur Apache. Un tutoriel complémentaire explique comment optimiser ses performances avec Varnish Cache et le plug-in W3 Total Cache. En utilisant ces approches, je gère avec succès mon propre site dans le nuage Amazon depuis deux ans et j'ai survécu à de nombreuses mentions sur Slashdot, BoingBoing et d'autres sites à fort trafic..
AWS peut être coûteux à utiliser à l'heure. Pour un blog WordPress fonctionnant indéfiniment 7 jours sur 7, 24 heures sur 24, il vaut mieux acheter ce qu'on appelle une "instance réservée lourde". Il y a des coûts initiaux, mais d'importantes économies au fil du temps. C'est essentiellement une réduction de volume pour gagner du temps sur leur réseau.
Avec une micro-instance réservée lourde de trois ans, vous pouvez exécuter un blog à faible trafic pour 6,44 USD par mois (la première année étant gratuite pour les nouveaux utilisateurs AWS). Si vous voulez un peu plus d'espace pour vous développer, achetez une petite instance réservée de trois ans pour un tarif mensuel total de 11,81 $ (le prix que j'utilise actuellement).
Je suis presque certain qu'une installation comparable sur WordPress.com coûterait environ 99 dollars par an (8,25 dollars par mois) par blog, 24 dollars par mois chez un hébergeur comme Page.ly et 29 dollars par mois pour WPEngine. Toutefois, l'exécution de votre propre instance vous permet d'exécuter plusieurs blogs sans frais supplémentaires. Plus vous envisagez de créer de blogs, plus AWS devient rentable par rapport à WordPress.com. Vous pouvez également utiliser votre instance de serveur pour d'autres tâches. J'héberge d'autres sites Web et exécute certaines de mes autres applications Web sur la mienne..
Vous pouvez en savoir plus sur la tarification AWS, la tarification d'instance réservée et estimer vos coûts avec leur calculatrice.
Remarque: Les estimations ci-dessus n'incluent pas les coûts supplémentaires liés au stockage S3 et à la bande passante utilisée par W3 Total Cache - mais ces coûts sont généralement relativement inférieurs. Et nous n'incluons pas le service de base de données distante (RDS) évolutif d'Amazon dans ce didacticiel spécifiquement pour réduire les coûts.
Je suggère d'attendre que votre site WordPress de base soit opérationnel avant de prendre la décision d'acheter une instance réservée.
Si vous achetez une instance réservée et que vous le regrettez par la suite, Amazon propose un marché pour la vente de portions inutilisées d'instances réservées (pour une petite commission). J'ai trouvé que cela fonctionne bien et ont vendu deux cas en quelques semaines.
Toutefois, le déplacement de votre site d'une micro-instance vers une petite instance n'est pas trivial et n'est pas documenté ici. Si vous pensez avoir un blog réussi, commencez par une instance petite ou moyenne.
Au-delà de ce qui est décrit dans le didacticiel d'optimisation des performances, Amazon propose un certain nombre de services et de techniques pour des niveaux plus élevés de flexibilité et d'évolutivité. Ainsi, bien que cela ne soit pas décrit ici, AWS dispose de nombreux moyens pour vous aider à développer votre site..
Si vous ne possédez pas encore de compte Amazon Web Services (AWS), en créer un. Si vous avez déjà un compte, connectez-vous et commençons.
Maintenant que vous avez un compte, vous pouvez vous connecter à la console AWS pour créer votre nouveau serveur virtuel. Cliquez sur le lien EC2 indiqué dans le tableau de bord ci-dessous:
Si vous souhaitez exécuter un site WordPress à trafic léger, une micro-instance fonctionnera probablement bien pour vous. Si vous débutez avec AWS, vous devriez pouvoir exécuter votre blog dans son niveau d'utilisation gratuite pendant un an. Si vous achetez une micro-instance réservée de trois ans pour 100 USD, vous pouvez réduire le total des frais mensuels à 6,44 USD. Avec une micro-instance, vous devez configurer un fichier d'échange (décrit ci-dessous) qui peut générer des coûts supplémentaires mineurs et doit parfois être surveillé..
Si vous pensez que la popularité et la complexité de votre blog augmenteront rapidement, vous voudrez peut-être commencer par une petite instance. En achetant une petite instance réservée de trois ans au prix de 188 $, le taux effectif mensuel est de 11,82 $.
Cliquez sur le bouton Lancer l'instance pour lancer l'assistant de création d'instance. Si vous ne vous attendez pas à un trafic important sur votre blog, sélectionnez une instance Micro Ubuntu 14.xx (64 bits)..
Vous pouvez généralement choisir les valeurs par défaut pour chaque étape au fur et à mesure que vous naviguez dans l'assistant..
Lorsque vous atteignez la page de Configure Firewall, ajoutez une règle de sécurité pour autoriser le trafic HTTP sur le port 80:
Au cours du processus, l’assistant télécharge une clé privée dans le répertoire des téléchargements de votre ordinateur. Conservez une copie de ce fichier dans un endroit sûr. Si vous le perdez, vous perdrez l'accès à l'ensemble de votre instance..
Votre instance est maintenant prête à vous connecter à distance via SSH. Ouvrez Terminal sur votre ordinateur. Déplacez la clé téléchargée vers votre répertoire de clé SSH et définissez les autorisations:
mv ~ / Téléchargements / wordpress.pem ~ / .ssh chmod 400 ~ / .ssh / wordpress.pem
Copiez l’URL de l’instance depuis la console, par exemple. ec2-75-101-173-192.compute-1.amazonaws.com
(voir ci-dessous):
Depuis le terminal, essayez de vous connecter via SSH:
ssh -i ~ / .ssh / wordpress.pem [email protected]
Si vous utilisez Windows, vous devrez utiliser PUTTY pour vous connecter..
Si le problème persiste, vous pouvez utiliser le bouton Connecter dans la console Amazon, au-dessus de la liste d'instances EC2..
Maintenant, il est temps d'associer une adresse IP publique à votre instance pour pouvoir mapper votre nom de domaine, par exemple.. yourbrand.com
sur votre site WordPress. De nos jours, AWS attribue une nouvelle adresse IP publique à chaque instance, mais s'il ne le fait pas automatiquement pour vous, vous devez attribuer une nouvelle adresse IP Elastic..
Dans la barre latérale gauche du tableau de bord EC2, cliquez sur IP élastiques. Ensuite, cliquez sur Attribuer une nouvelle adresse. Amazon fournit une adresse IP Elastic gratuite par instance en cours d'exécution.
Vous devrez ensuite associer la nouvelle adresse élastique à l'instance que vous avez créée. Cela permet à Amazon d'envoyer le trafic entrant dans l'adresse IP élastique à votre instance exécutant WordPress..
L'adresse avec laquelle vous vous connectez à distance via SSH aura maintenant changé pour refléter votre adresse IP élastique (remplacez les x par votre nouvelle adresse IP élastique):
ssh -i ./wordpress.pem [email protected]
Cela peut aussi fonctionner maintenant:
ssh -i ./wordpress.pem [email protected]
Maintenant, vous pouvez commencer le processus de mappage de votre nom de domaine, par exemple. votredomaine.com sur votre futur site WordPress. Accédez aux paramètres DNS de votre registraire de domaine et remplacez l'enregistrement A par votre votredomaine.com par la nouvelle adresse IP, par exemple. 59.234.124.118.
Voici un tutoriel pour configurer les enregistrements DNS A mais votre registraire de domaine a probablement aussi un guide.
Attendez que vos modifications DNS se propagent (parfois jusqu'à 24 heures ou plus - vérifiez-les ici), essayez de vous connecter via SSH en utilisant votre domaine:
ssh -i ./wordpress.pem [email protected]
En attendant, vous devriez pouvoir continuer à configurer d'autres parties de votre site..
AWS fournit son propre pare-feu, mais vous pouvez toujours prendre certaines mesures pour réduire les risques de sécurité. Voici trois choses que je recommande:
Attention: Veuillez suivre ces instructions avec la plus grande attention. Dévier légèrement de ces étapes peut créer des problèmes, notamment rendre votre instance inaccessible..
Nous allons ajouter un utilisateur nommé "hal". Remplacez «hal» par votre nom d'utilisateur préféré dans les exemples ci-dessous:
sudo adduser hal
Ajoutez votre nouvel utilisateur au groupe admin:
sudo adduser hal admin
Ajoutez votre nouvel utilisateur au groupe sudoers. Editez le fichier sudoers:
sudo nano / etc / sudoers
Ajoutez cette ligne au fichier sudoers dans la section des privilèges de l’utilisateur:
hal ALL = (ALL) NOPASSWD: ALL
Nous allons maintenant créer des clés pour cet utilisateur afin qu'il puisse se connecter à AWS. Basculer vers le nouvel utilisateur:
su hal
Accédez au répertoire de base de cet utilisateur:
cd / home / hal
Créez un répertoire SSH et définissez les autorisations:
mkdir .ssh chmod 700 .ssh
Générez une nouvelle paire de clés:
cd .ssh ssh-keygen -b 1024 -f id_hal -t dsa
Ajouter une clé publique au fichier allowed_keys:
cat ~ / .ssh / id_hal * .pub> ~ / .ssh / registered_keys
Définir les autorisations:
chmod 600 ~ / .ssh / *
Déplacez la clé privée dans un dossier temporaire pour le télécharger sur votre ordinateur:
cp ~ / .ssh / * / tmp chmod 644 / tmp / *
Editez le fichier de configuration SSH pour ajouter le nouvel utilisateur:
sudo nano / etc / ssh / sshd_config
Ajoutez le nouveau compte Hal au champ AllowUsers (ou créez la ligne si elle n’y est pas):
AllowUsers ubuntu hal
Redémarrer le service
sudo service ssh redémarrer
Maintenant, revenez sur votre ordinateur local en utilisant Terminal. Téléchargez la nouvelle clé à partir de votre ordinateur avec votre compte ubuntu:
scp -i ~ / .ssh / wordpress.pem [email protected]: / tmp / * ~ / .ssh
Continuez ces étapes sur votre ordinateur local. Définir les autorisations et tester:
cd ~ / .ssh chmod 400 id_hal ssh -i .ssh / id_hal [email protected]
Si vous rencontrez des erreurs, vous pouvez essayer de revenir à votre instance de serveur et consulter la connexion lorsque vous essayez de vous connecter:
tail -f /var/log/auth.log
Sur l'instance de serveur distant, supprimez les fichiers de clé du répertoire tmp:
rm -rf / tmp / *
Editez à nouveau le fichier de configuration SSH:
sudo nano / etc / ssh / sshd_config
Supprimez le compte ubuntu du champ AllowUsers:
AllowUsers hal
Assurez-vous que PermitRootLogin est défini sur no ou sans mot de passe, ce dernier nécessite une connexion avec une clé:
PermitRootLogin sans mot de passe
Redémarrez le service SSH
sudo service ssh redémarrer
Si vous rencontrez des difficultés, vous pouvez également revenir à la connexion via la liste d'instances de la console AWS..
Comme les pirates cherchent régulièrement un accès SSH sur le port 22, il est préférable d’utiliser un numéro de port totalement différent pour la configuration et la maintenance de votre serveur..
Editez à nouveau le fichier de configuration SSH:
sudo nano / etc / ssh / sshd_config
Remplacez la ligne du port par un autre numéro de port, par exemple 33322:
# Quels ports, IP et protocoles avons-nous écoutés pour le port 33322
Revenez à la console AWS et modifiez le groupe de sécurité. Ajoutez le numéro de port que vous avez choisi, par exemple. 33322. Supprimez le port 22. Assurez-vous de cliquer sur le bouton Appliquer les règles (non illustré). c'est en dessous de la case Ajouter une règle.
Redémarrez le service:
sudo service ssh redémarrer
A l'avenir, vous devrez utiliser -p 33322 (ou le port de votre choix) pour vous connecter via SSH:
ssh -p 33322 -i .ssh / id_hal [email protected]
Il existe des techniques encore plus avancées pour dissimuler votre connexion SSH. par exemple. Port frappant. Cependant, assurez-vous de savoir ce que vous faites, des utilisateurs tristes m'ont envoyé un mail après m'être verrouillés hors de leur propre serveur..
Il est temps de passer à la partie amusante de l’installation de la version open source de WordPress. Des instructions complètes sont fournies plus en détail à WordPress 'Codex.
Mettez à niveau la dernière distribution Ubuntu et ses packages:
sudo apt-get dist-upgrade
Créez un répertoire www avec des autorisations pour le serveur Web Apache:
sudo mkdir / var / www sudo chown www-data: www-data / var / www cd / var / www
Téléchargez la dernière version de WordPress, développez l'archive et définissez les autorisations:
sudo wget http://wordpress.org/latest.tar.gz sudo tar -xzvf latest.tar.gz sudo chown -R www-data: www-data wordpress
Installez le paquet MySQL Server:
sudo apt-get install mysql-server
Vous serez invité à fournir un nom d'utilisateur et un mot de passe. Notez vos choix à utiliser pendant le processus d'installation.
Configurez la base de données MySQL. Remplacez le nom d'utilisateur et le mot de passe ci-dessous par tout ce que vous avez sélectionné lors de l'installation:
mysql -u root -p crée une base de données wordpress; accorde tous les privilèges sur wordpress. * TO "ton-nom-mysql" @ "localhost" identifié par "ton-mot-mysql"; privilèges de chasse; sortie;
Plus tard, vous voudrez vérifier la sécurisation de votre serveur MySQL. J'ai un bref synopsis sur mon site ici.
Si vous n'avez pas choisi une AMI Amazon AWS pré-installée avec Apache, vous devrez peut-être l'installer maintenant:
sudo apt-get install php5 libapache2-mod-php5 libapache2-mod-auth-mysql php5-mysql
Il est maintenant temps de créer un fichier de configuration de site pour que votre serveur Apache héberge WordPress:
cd / etc / apache2 / sites-available
Créons un nouveau fichier à éditer. Remarque: dans les nouvelles versions d'Ubuntu 14.04, le fichier de configuration du site doit se terminer par .conf. Si le fichier s'appelle simplement wordpress comme dans les versions précédentes de ce tutoriel, a2ensite ci-dessous ne fonctionnera pas.
sudo nano wordpress.conf
Collez dans le fichier de site exemple ci-dessous et assurez-vous de remplacer la convention de nommage de votre nom de domaine:
NomServeur YOURDOMAIN.COM DocumentRoot / var / www / wordpress DirectoryIndex index.php AllowOverride All Ordre Nier, Autoriser Autoriser de tous
Indiquez à Apache d'activer le site et de recharger:
sudo a2ensite wordpress service sudo apache2 redémarrer
Nous sommes maintenant prêts à parler à WordPress de la base de données et de votre blog. Premièrement, nous allons modifier temporairement les autorisations sur votre répertoire wordpress:
cd / var / www sudo chmod -R 777 wordpress
Ouvrez un navigateur Web et accédez à votre nom de domaine, par exemple. http://votredomaine.com.
Remplissez les informations de base de données que WordPress demande en utilisant vos choix ci-dessus. Le processus ressemblera à ceci:
Maintenant, verrouillons les autorisations pour l'installation de WordPress pour des raisons de sécurité:
sudo find / var / www / wordpress / -type d -exec chmod 755 \; sudo trouver / var / www / wordpress / -type f -exec chmod 644 \;
Faisons également des mises à jour manuelles du fichier wp-config.php:
sudo nano /var/www/wordpress/wp-config.php
Ajoutez les lignes de configuration suivantes au-dessus de la ligne d'arrêt d'édition:
define ('FS_METHOD', 'direct'); // pour l'installation automatique du plugin / * C'est tout, arrêtez de modifier! Bonne blogging. * /
Essayez de vous connecter au système d'administration WordPress. Rendez-vous sur http://votre domaine/wp-admin et entrez le nom d'utilisateur et le mot de passe que vous avez choisis lors de l'installation..
Vous devriez voir le tableau de bord WordPress, comme ci-dessous:
Excellent travail et félicitations pour votre nouvelle installation de WordPress!
WordPress, ses plugins et Apache peuvent ensemble rapprocher les limites de mémoire d'instance AWS Micro. Redémarrez votre instance une fois après ce tutoriel et surveillez la quantité de mémoire que vous utilisez. Depuis le terminal, SSH entre et fait:
redémarrage sudo
Ou, vous pouvez redémarrer à partir du tableau de bord EC2 comme indiqué dans l'image ci-dessous. Voir le menu Actions. Surveillez l'activité sur votre instance avec free ou top:
libre
Ou utilisez top. Taper 'q' va sortir en haut.
Haut
Essayez de visiter différentes pages de votre site WordPress et voyez comment cela influe sur l'utilisation de la mémoire. Essayez également d’accéder aux pages de votre appareil mobile et de votre tablette. Si vous utilisez une instance Amazon Micro, vous devrez probablement configurer un fichier d'échange sur EBS pour éviter le blocage de votre instance..
Bien que la configuration soit simple, il existe un faible risque d'engendrer des frais de bande passante interréseau illimités. Veillez donc à surveiller votre site et à configurer les alarmes de facturation comme décrit sur mon site ici. Je n'ai jamais eu de problèmes avec cela - mais les gens en avertissent.
Une fois que vous avez configuré un fichier d'échange, votre micro instance devrait être stable..
sudo dd if = / dev / zero of = / swapfile bs = 1M count = 1024 sudo mkswap / swapfile sudo swapon / swapfile
Maintenant, pour rendre le fichier d'échange persistant après les redémarrages, éditez le fichier fstab:
sudo nano / etc / fstab
Ajouter cette ligne:
/ swapfile swap swap default 0 0
Vérifiez que le fichier d'échange est actif en tapant:
libre
Il devrait montrer quelque chose comme:
Échange: 1048572 0 1048572
Vous êtes maintenant un administrateur système exécutant votre propre site WordPress. Impressionnant. Mais vous êtes maintenant responsable de beaucoup de choses qui sont généralement gérées par une société d'hébergement..
Il n'y a aucune honte à revenir à l'hébergement géré. Si vous sentez que vous êtes dépassé par la tête, n'hésitez pas à vous retirer sur WordPress.com ou un autre hôte. Nous prenons tous les décisions là où nous passons notre temps - et l'hébergement géré est raisonnable. Une fois que vous vous êtes engagé à exploiter votre propre site, son exécution vous prendra plus de temps, tout comme la migration vers un hébergement géré plus tard. Alors, réfléchissez à cela.
Il est important de vous connecter régulièrement à votre instance et de mettre à jour les packages de sécurité. Lors de votre connexion, Ubuntu signalera quelque chose comme: "35 paquets peuvent être mis à jour. 22 mises à jour sont des mises à jour de sécurité." Utilisez la commande suivante pour mettre à jour le système:
sudo apt-get upgrade
Le récent bug Heartbleed est un exemple prudent des types de vulnérabilités qui doivent être corrigées de temps en temps. Si vous ne maintenez pas votre système Linux à jour, il est possible que des personnes puissent pirater votre site..
Suivre les mises à jour de WordPress est tout aussi important. Les versions les plus récentes de WordPress sont configurées pour vous avertir de nouvelles mises à jour.
Personne ne sauvegarde votre site WordPress. Vous devez choisir comment faire cela. Vous pouvez vous souvenir manuellement de créer un instantané AWS de votre instance via l'interface AWS. Si vous effectuez une recherche en ligne, vous pouvez rechercher des scripts à personnaliser à partir de votre instance Linux. Fondamentalement, vous devez sauvegarder la structure de répertoires WordPress (avec vos thèmes, vos plugins et vos images), la base de données MySQL stockée dans le système de fichiers Linux ainsi que votre fichier de configuration du site Apache..
Une autre approche qui fonctionne bien est un service tel que VaultPress, appartenant à la société mère de WordPress, Automattic. Il existe également des plugins WordPress que vous pouvez acheter pour exécuter des sauvegardes vers d'autres services de stockage, y compris le système de stockage S3 d'Amazon..
Les formulaires de contact WordPress requièrent que vous utilisiez votre propre serveur de messagerie afin de recevoir les messages électroniques qui vous sont soumis. Exécuter un serveur de messagerie Postfix est assez compliqué et comporte ses propres risques de sécurité et d’échelle. Au lieu de cela, j'aime bien combiner quelque chose comme le plugin Contact Form 7 avec le plugin Mailgun WordPress. Il y a un peu d'installation mais c'est gratuit pour la plupart des utilisations et fonctionne parfaitement.
Vous êtes également responsable de la gestion de la disponibilité de votre serveur. Vous avez donc besoin d'un service de surveillance pour vous avertir lorsque les instances Amazon tombent en panne. Et ils le font - rarement, mais cela se produit. Un service payant comme ScoutApp.com ou mon propre Simple Monitor auto-hébergé sont de bonnes solutions. Si vous hébergez vous-même votre surveillance, il est important de l'exécuter sur une autre instance ou au moins d'activer les pulsations à un intervalle fréquent, par exemple. 2 heures Si l'instance sur laquelle vous surveillez échoue, vous ne le saurez pas avant de remarquer que vous n'avez pas reçu le dernier battement de coeur..
C'est un long sujet que nous n'aborderons pas entièrement ici. J'ai écrit plus sur ce sujet sur mon propre site. Les performances de votre site affectent également le classement de votre moteur de recherche..
Il est donc temps de jeter les bases de performances ultra rapides avec Varnish Cache et W3 Total Cache..