'>

Migrez votre blog WordPress sur un EC2 instance Bitnami

Le truc cool à faire les choses geek comme c'est la possibilité de partager ce guide pratique avec d'autres personnes qui peuvent réellement obtenir tout aussi excités. L'annonce d'Amazon d'une utilisation gratuite de 12 mois niveaux, plus le fait que ce blog ne fonctionne pas sur les prunes de sucre et cannes de sucrerie, nous a mis dans la liste restreinte pour la migration. Comme Matthias a fait la majeure partie des configurations de serveur Joyent et les migrations de linode, il était grand temps j'ai eu mes mains dans le cambouis. Sans plus tarder, voici comment j'ai migré AWO à notre première instance Amazon EC2. Sortons notre geek!
Choisir BitNami

Les plans initiaux étaient d'attraper quelque Amazon Machine Image basée sur Debian (AMI) et suivre les différents "howto config wordpress sur lampe" messages là-bas, mais Matthias demandé si j'allais jeter un oeil à BitNami. Je n'avais jamais entendu parler de lui avant et, à vrai dire, elle a effectivement sonné comme une sorte de client BitTorrent pour moi. Creuser un peu plus loin, j'ai vite compris ce que tout le battage s'agissait et j'ai été vendu sur un bien contenue, pré-configuré BitNami WordPress AMI. Il ya même un AMI qui Bootstraps automatiquement un stockage de bloc élastique (EBS) - Comment savoir que pour facile?

Juste au cas où vous ne savez pas ce qui est bon pour EBS - une instance EC2 exécutant ne vient pas avec un disque pour stocker vos données par défaut. Signifie que si vous projetez de faire des changements à votre AMI à l'exécution que vous aimeriez voir après un redémarrage, vous devez attacher un disque (EBS dans Amazon AWS parler).
Mise en place d'une nouvelle instance EC2 sur AWS

Un des captures pour un mois 12, instance EC2 libre est un nouveau compte Amazon, donc n'oubliez pas de vous inscrire une nouvelle adresse email ou vous pourriez recevoir une facture surprise le mois prochain! Et, oui, vous aurez également besoin d'une carte de crédit valide pour ouvrir votre compte, parce que si votre instance dépasse les limites de niveau d'utilisation gratuite, vous serez facturé.

Lancement d'une nouvelle intstance, cliquez dessus pour la Communauté de l'AMI et de copier / coller l'image BitNami en question:

Notez le périphérique racine basée ebs - maintenant nous faisons cuire avec Crisco! Après avoir sélectionné l'image, vous serez guidé à travers une configuration assez simple. L'instance est libre "Micro", alors assurez-vous de modifier la sélection par défaut:

Vous devriez vraiment passer quelques minutes compte tenu de la région dans laquelle lancer l'instance. Si vous utilisez Google Analytics, la caisse votre Carte Overlay pour voir d'où viennent vos visiteurs. Notre plus grand bloc provient principalement de la côte ouest américaine, mais il ya des gens importants tout au long de la partie continentale des États-Unis et en Europe.

Nous avons finalement allés à mi-parcours "US Région de l'Est ".

Ne prenez pas le réglage du groupe de sécurité par défaut car il ne prévoit ni SSH ni accès HTTP. Créez votre propre groupe personnalisé en ajoutant au moins ces ports.

Après le démarrage de votre instance, cliquez dessus dans la console de gestion AWS. La description onglet ci-dessous la liste de «Public DNS". Pointez votre navigateur sur cette URL et vous verrez la page d'accueil BitNami avec quelques liens, y compris votre nouvelle installation de WordPress. Pas trop mal - un blog en cours d'exécution sur un nouveau serveur virtuel en l'espace d'environ 15 minutes.

À un certain phase de création du point ci-dessus, vous avez été invité à télécharger un fichier PEM -. C'est votre paire de clés SSH à obtenir dans la porte arrière de votre nouvelle instance. Vous aurez besoin de chmod 644 my_aws_ec2.pem et puis ssh-i my_aws_ec2.pem bitnami@public_dns.amazonaws.com pour accéder à votre serveur EC2 via ssh. L'utilisateur dispose d'un accès bitnami sudo.

Dernier point, mais non des moindres, faire un snapshot EBS de votre instance en cours d'exécution si vous avez un repli connu avant d'entrer dans la prochaine phase de la migration. Ne pas oublier cette capacité - à chaque étape où vous vous sentez que vous avez accompli une étape importante, le sauvegarder!
Migration de votre blog WordPress

Sur votre blog existant, vider votre base de données et archive votre htdocs de chemin WordPress.

$ Mysqldump-uwordpress-p awo> awo_wp.sql
$ Tar-CJF awo_htdocs.bz2 / home / AWO / public

Maintenant, passons ces décharges copiés sur votre nouvelle instance EC2:

$ Scp-i my_aws_ec2.pem awo_wp.sql awo_htdocs.bz2 bitnami@public_dns.amazonaws.com :/ home / bitnami / originaux /

Et, n'oubliez pas de copier des configurations releveant et améliorations de performance dans votre Apache (apache2.conf, httpd.conf) et MySQL (my.cnf, conf.d / *. CNF) configurations.

Passant à l'adresse IP. Aller à l'entrée de l'Elastic IP à votre console AWS. Allouer une nouvelle adresse et l'associer à votre nouvellement créée (et probablement la seule) instance EC2. Alors que nous attendons les DNS de se rattraper, éditer votre local (ce qui signifie l'ordinateur que vous utilisez pour faire la migration) / etc / hosts en conséquence, annulant votre domaine de blog avec cette nouvelle adresse IP.

$ Sudo vi / etc / hosts
...
<NEW_ELASTIC_IP> Www.agileweboperations.com

Dans la nouvelle instance faire quelque chose comme ce qui suit (sans oublier votre EBS cliché ci-dessus ;))

$ Rm-rf / opt / bitnami / apps / wordpress / htdocs /
$ Tar-xjf ~ / originals/awo_htdocs.bz2 / opt / bitnami / apps / wordpress
$ Mysql-u root-pbitnami bitnami_wordpress <~ / originaux / awo.sql

Notez l'emplacement de la BitNami WordPress, et le mot de passe root MySQL et wordpress schéma de base de données.

Maintenant, nous allons configurer un hôte virtuel pour pointer vers votre nouveau blog:

$ Vi / de opt/bitnami/apache2/conf/httpd.conf sudo
...
Hosts # virtuels
Include conf / extra / httpd-vhosts.conf
...
$ Vi / de opt/bitnami/apache2/conf/extra/httpd-vhosts.conf sudo
...
<VirtualHost *:80>
    DocumentRoot "/ opt / bitnami / apps / wordpress / htdocs"
    ServerName agileweboperations.com
    ServerAlias ​​www.agileweboperations.com
    ErrorLog "logs / AWO-error_log"
    CustomLog "logs / AWO-access_log" commune
</ VirtualHost>
...

Aucune configuration particulière apache (KeepAliveTimeout, ServerTokens, etc) peuvent être édités @ / opt/bitnami/apache2/conf/extra/httpd-default.conf. N'oubliez pas d'inclure ces fichiers édités dans la conf apache de base:

$ Vi / de opt/bitnami/apache2/conf/httpd.conf sudo
...
# Management Server-piscine (MPM spécifique)
Include conf / extra / httpd-mpm.conf
...
Hosts # virtuels
Include conf / extra / httpd-vhosts.conf
...
# Différents paramètres par défaut
Include conf / extra / httpd-default.conf

Enfin, n'oubliez pas vos redirections canoniques! Pas de duplicate content ici:

$ Vi / opt / bitnami / apps / wordpress / htdocs / htaccess
RewriteEngine On
RewriteCond% {HTTP_HOST}.
RewriteCond% {HTTP_HOST}! ^ Www \. Agileweboperations \ com.
RewriteRule (. *) Http://www.agileweboperations.com/ $ 1 [R = 301, L]

Redémarrage des processus avec Bitnami est effectué en utilisant la ctlscript.sh. Pour redémarrer Apache, il suffit d'exécuter sudo / opt / bitnami / ctlscript.sh redémarrage apache.

MySQL my.cnf peut être édité @ / opt / bitnami / mysql / my.cnf et le redémarrage est accomplie de la même manière: sudo / opt / bitnami / ctlscript.sh redémarrage mysql.

Vous pouvez également utiliser ctlscript.sh de vérifier votre apache et mysql statut:

$ Sudo / opt / bitnami / ctlscript.sh statut
apache déjà en cours d'exécution
mysql déjà en cours d'exécution

Pièges et mises en garde

Installation EC2-api-tools n'est pas possible sur une instance Ubuntu t1.micro. Si vous savez que vous aurez besoin de ceci, installez l'instance initialement comme m1.small ou vous pouvez interrupteur marche / arrêt d'une instance existante (qui est ce que je devais faire).

Ce fut aussi un peu d'une expérience d'apprentissage, comme d'arrêter une instance supprime l'adresse IP élastique. Bien sûr, n'a de sens - mais si vous ne savez pas ce que vous vous demanderez pourquoi vous ne pouvez plus ssh dans votre exemple redémarré. En outre, le nom de «Public DNS" va également changer de façon dynamique lors du démarrage d'une instance. De plus, juste de commencer une instance immédiatement vous coûte 1 heure de temps de calcul, donc ne soyez pas surpris de voir un peu plus l'utilisation que vous attendez si vous faites cela à quelques reprises.

C'est vous qui voyez, mais le bitnami: mode démon: le groupe qui détenait / opt / bitnami / apps / wordpress / htdocs n'était pas suffisant pour effectuer toute "inline" upgrades / installe WordPress - sens en essayant de mettre à jour / installer un plugin demandé des informations d'accès FTP. Exécution d'un démon chown-Rf sudo: daemon / opt / bitnami / apps / wordpress / htdocs fait le tour, cependant. Quelqu'un de plus familier avec BitNami, n'hésitez pas à intervenir et clarifier s'il vous plaît.

MySQL est mort la première nuit après relancer. Un étrange «tué» est apparu dans le répertoire / opt / bitnami / mysql / data / mysqld.log:

101229 15:41:33 [Note] / opt / bitnami / mysql / bin / mysqld.bin: prêt pour les connexions.
Version: '5 .1.50 'socket:' / opt / bitnami / mysql / tmp / port mysql.sock ': 3306 MySQL Community Server (GPL)
Tué
101230 00:15:51 mysqld_safe Nombre de processus en cours aujourd'hui: 0
101230 00:15:51 mysqld safe_mysqld redémarré
101230 00:15:53 ​​[Note] Plugin 'FEDERATED' est désactivée.
Tué
101230 00:15:54 mysqld safe_mysqld de fichier pid / opt/bitnami/mysql/data/ip-10-112-91-108.pid fini
101230 07:32:02 mysqld_safe partir démon mysqld.bin des bases de données à partir de / opt / bitnami / mysql / data
...

Il s'avère que, l'image Bitnami fait usage de tueur OOM de Linux qui adopte une approche musclée à potentiel Sur les questions de mémoire avant qu'ils échangent sur le serveur. Le problème a été j'ai oublié d'inclure le fichier httpd-mpm.conf j'avais changé si bien haut dans le httpd.conf, donc il y avait un tas clients simultanés plus que ce micro serveur peut gérer.

Après la mise à niveau WP 3.0.4, et de faire un sudo apt-get update et sudo apt-get upgrade, accéder à des pages dans wp-admin en quelque sorte l'impasse l'ensemble du serveur (charges de 10-15 observé). La seule chose qui finalement fixé cet été redémarrage de l'instance entière.

Après vous obtenez une configuration IP élastique, supprimer le répertoire / opt / bitnami / fichier updateip. Sinon, le redémarrage de l'instance, Bitnami réinitialise les valeurs de wp_options au nom de serveur DNS public. Si vous oubliez, vous devez modifier ce retour ou bien votre blog ne fonctionnera pas:

$ Mysql-u root-p bitnami_wordpress
mysql> wp_options Update set option_value = 'http://www.agileweboperations.com' où option_name dans ('siteurl', 'maison');
OK Query, 2 rangs affectée (0.00 sec)
Published By Drupal french Study